(已解决)AttributeError: module ‘cv2.gapi.wip.draw‘ has no attribute ‘Text‘

问题描述

        今天再跑Caption-Anything项目的时候,最开始的时候就报了这样一个错误:AttributeError: module 'cv2.gapi.wip.draw' has no attribute 'Text'。

        Caption-Anything是一种多功能的图像处理工具,结合了Segment Anything,Visual Captioning和ChatGPT的功能。我们的解决方案为图像中的任何对象生成描述性标题,提供一系列语言样式以适应不同的用户偏好。它支持视觉控件(鼠标单击)和语言控件(长度、情绪、事实性和语言)。

        但是,不美的是,这个项目存在不小的问题,在这个项目的issues里的就概述了一些常见的问题:比如“Hugging Face demo is wrong”“Torch 1.10.1 not available”“Demo crashes both in terminal and in colab”等,所以跑这个项目的话做好心理准备:作者的requriements和运行所需的版本并不见得一致。

问题解决

        根据描述,可以发现,是cv2的一个包里面没有Text属性,这种情况常由于cv2版本的问题,但是请注意,不要用:

pip install cv2

        而要用:

pip install opencv-python==4.6.0.66

        执行这句话之后,再次执行python文件,会发现就开始download权重文件了,这个问题也就解决了。

        但是这个问题,我并没有在网上找到和我一模一样的解决办法,但是找到类似的,比如这个stackoverflow论坛:AttributeError: partially initialized module 'cv2' has no attribute 'gapi_wip_gst_GStreamerPipeline' (most likely due to a circular import)icon-default.png?t=N7T8https://stackoverflow.com/questions/72706073/attributeerror-partially-initialized-module-cv2-has-no-attribute-gapi-wip-gs

延伸分析

        这个是一个小常识:cv2是在opencv-python这个库包里的,而非简单的cv2或者OpenCV,这一点一定要注意,因为我之前就是在处理这个问题的时候引发了灾难性的问题:

        安装OpenCV时提示让更新gcc,但是更新了gcc后提示编译失败无法安装OpenCV,用chatgpt一搜,让用cmake编译工具,于是又按照提示使用了cmake,然而却依然提示编译错误,据我所知,编译工具常用的应该就这两个吧,但为什么都编译不过呢?

        接着我又按照提示去更新一些包:如***-urllib之类的,应该是这些相关的包:

sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get remove bgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev ****

那个教程的逻辑很愚蠢:会先删除现有的包,然后去安装最新的包。当我看到removing ***packages的时候,我就知道:完了。紧接着冷汗就下来了。

        果然,系统没让我失望,系统崩了。

        具体情况和这篇文章的第二种情况是一致的:

Ubuntu20.04安装踩坑记录---千万不要随便使用sudo rm -rf命令!!!icon-default.png?t=N7T8https://blog.csdn.net/BetrayFree/article/details/132084455

         更让人无法接受的是,一周之内我就这样同一个问题崩了两三次,每次都要重装系统,就这样,每次都要耽误一两天,这是很让人难受的事情,那OpenCV到底是什么呢?

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,旨在提供一组工具和算法,帮助开发者处理图像和视频数据。OpenCV 最初由英特尔开发,并于2000年首次发布,后来成为一个开源项目,得到了全球计算机视觉社区的广泛支持和贡献。

OpenCV 提供了丰富的功能和算法,涵盖了许多计算机视觉任务,包括但不限于:

  1. 图像处理:包括滤波、边缘检测、图像变换、颜色空间转换等功能,用于图像增强和预处理。

  2. 特征检测和匹配:用于检测图像中的关键点、角点、描述符,并进行特征匹配,通常用于目标跟踪、图像拼接和物体识别。

  3. 对象识别和分割:用于检测、识别和分割图像中的对象,如人脸、车辆、物体等。

  4. 摄像头标定和校正:用于校正摄像头畸变、标定摄像头内外参数,以及进行摄像头跟踪和运动估计。

  5. 深度学习集成:OpenCV 支持深度学习框架的集成,如 TensorFlow 和 PyTorch,以进行图像分类、目标检测等任务。

  6. 实时图像处理:支持实时视频流的处理,可以用于实时监控、人脸识别、手势识别等应用。

  7. 机器学习工具:OpenCV 包含一些机器学习算法,用于分类、回归、聚类等任务。

  8. 图像文件读写:支持多种图像格式的读取和写入,包括 JPEG、PNG、BMP 等。

OpenCV 是一个跨平台的库,可在多个操作系统上运行,包括 Windows、Linux、macOS 等。它使用 C/C++ 编写,但也提供了多种编程语言的接口,包括 Python、Java 和 MATLAB,因此可以方便地集成到不同的应用程序和项目中。

OpenCV 在计算机视觉、机器视觉、图像处理和模式识别等领域得到广泛应用,用于解决各种图像和视频处理任务,从自动驾驶到医学图像分析都有重要的应用。它是一个强大的工具,可用于开发各种视觉相关的应用和项目。

         看的出来,OpenCV是一个跨平台的库包,这也就难怪为什么要用gcc或者cmake编译了,感兴趣的可以看一下这篇博客:

cmake是什么,为什么现在都用cmake,cmake编译原理和跨平台示例 - 知乎一 cmake是什么?CMake是一个开源、跨平台的工具系列,是用来构建、测试和打包软件。 CMake使用平台无关的配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用项目文件,比如可以生成vs项目文件或者m…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/560699544        那OpenCV-python和OpenCV有什么区别呢?

OpenCV(Open Source Computer Vision Library)和 OpenCV-Python 是相关但不同的概念:

  1. OpenCV

    • OpenCV 是计算机视觉库的全称,是一个跨平台的、用 C/C++ 编写的开源库。
    • 它提供了丰富的图像处理和计算机视觉算法,可以用于处理图像、视频、摄像头流等。
    • OpenCV 提供了多种编程语言的接口,包括 C++、Python、Java 等。
    • OpenCV 的官方文档和资源通常是基于 C/C++ 的。
  2. OpenCV-Python

    • OpenCV-Python 是 OpenCV 的 Python 绑定,允许开发者使用 Python 来访问和使用 OpenCV 的功能。
    • OpenCV-Python 提供了 Python 编程语言的接口,使得使用 OpenCV 变得更加方便和易于理解。
    • 它提供了 NumPy 支持,因此可以轻松处理图像和数组数据。
    • OpenCV-Python 是通过 Python 的 C/C++ 扩展模块实现的,因此性能通常比纯 Python 代码更高。

要理解这两者之间的关系,可以将 OpenCV 视为底层的计算机视觉库,而 OpenCV-Python 是 OpenCV 在 Python 中的封装和接口,使得开发者可以使用 Python 来调用 OpenCV 的功能。这意味着您可以根据自己的需求选择使用原始的 OpenCV(使用 C/C++ 编写)或使用 OpenCV-Python(使用 Python)来进行计算机视觉任务。

通常情况下,如果您使用 Python 进行计算机视觉开发,OpenCV-Python 是首选,因为它提供了更直观和易于使用的接口,并充分利用了 Python 的数据处理功能。但如果您需要更高的性能或某些特定的功能,也可以考虑直接使用原始的 OpenCV 并通过 Python 扩展进行集成。

         当然,也可以参考这篇博客:

OpenCV是干什么的?icon-default.png?t=N7T8https://www.itheima.com/news/20210526/174843.html

完结撒花

        这个bug让我想起来了遥远的从前那周不堪的过往,一周七天有五天都在和ubuntu20.04斗智斗勇,可牛死我了,唉。

你可能感兴趣的:(Bugs(程序报错),opencv,人工智能,计算机视觉,visual,studio,深度学习,自然语言处理,pytorch)