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

news2025/1/21 6:34:15

问题描述

        今天再跑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斗智斗勇,可牛死我了,唉。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1007369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端项目开发流程

一 参加需求对称(评审)会议 时间:在产品设计完成以后,进入正式的开发流程之前 组织者:产品&项目经理 目的:统一大家对产品的认识,及时发现产品设计缺陷,尽可能降低后续修改需求的频率 参与者&#xff…

短信验证码的登录注册功能

1 基于session实现登录流程 1.1发送验证码: 用户在提交手机号后,会校验手机号是否合法,如果不合法,则要求用户重新输入手机 如果手机号合法,后台此时生成对应的验证码,同时将验证码进行保存,然…

【计算机视觉 | 目标检测】干货:目标检测常见算法介绍合集(二)

文章目录 十六、EfficientDet十七、Deformable DETR十八、YOLOX十九、Sparse R-CNN二十、Contour Proposal Network二十一、VarifocalNet二十二、Libra R-CNN二十三、Stand-Alone Self Attention二十四、ThunderNet二十五、Hierarchical Transferability Calibration Network二…

垃圾收集算法

1.如何判断对象是否存活? 1.1引用计数算法 基本思路: 在对象中添加一个引用计数器每当有一个地方引用它的时候,计数器就加1每当有一个引用失效的时候,计数器就减-1当计数器的值为0的时候,那么该对象就是可被GC回收的…

leetcode 2366. Minimum Replacements to Sort the Array(数组排序的最少替换数)

数组nums中的元素nums[ i ] 可以替换为任意两个数a, b, 前提是ab nums[ i ]. 把数组nums变为升序&#xff08;可以有相等&#xff09;数组需要多少次替换。 思路&#xff1a; 排序数组是左边的元素<右边元素&#xff0c;以右边元素为边界。 所以从右到左遍历数组&#xf…

第二章 网络应用

第一节 计算机网络应用体系结构 三种类型&#xff1a; 1. 客户/服务器&#xff08;c/s&#xff09;结构 最主要的特征是通信只在客户与服务器之间进行&#xff0c;客户与客户之间不进行直接通信。 2. P2P(Peer to Peer) 结构 每个对等端都同时具备C/S应用的客户与服务器的…

Python算法练习 9.12

leetcode 643 子数组最大平均数 给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你找出平均数最大且 长度为 k 的连续子数组&#xff0c;并输出该最大平均数。 任何误差小于 10-5 的答案都将被视为正确答案 输入&#xff1a;nums [1,12,-5,-6,50,3], k 4 输出…

buuctf web [极客大挑战 2019]Secret File

纯网页&#xff0c;看一下源码。 这一块源码中有个隐藏的超链接&#xff0c;点击后跳转到了新页面。 新页面的源码里&#xff0c;也有一处可以跳转的超链接。 点进新页面啥也没有了。 单看网页&#xff0c;什么也没有&#xff0c;尝试用burp抓包试试。 在/Archive_room.php跳…

循环语句详解

文章目录 循环语句详解1. 循环使用 v-for 指令2. v-for 还支持一个可选的第二个参数&#xff0c;参数值为当前项的索引3. 模板template 中使用 v-for4. v-for 迭代对象-第一个参数为value5. v-for的第二个参数为键名6. v-for的第三个参数为索引7. v-for迭代整数8. computed计算…

运营商大数据精准营销获客?

多年来&#xff0c;大数据运营商一直致力于为企业提供互联网大数据精准营销的新项目&#xff0c;并以确保自身信息安全为前提。例如&#xff0c;如果移动用户查看了任何网站&#xff0c;在网页上搜索了任何关键词&#xff0c;登录了应用程序&#xff0c;给任何人打了电话&#…

【Linux】多线程互斥与同步

文章目录 一、线程互斥1. 线程互斥的引出2. 互斥量3. 互斥锁的实现原理 二、可重入和线程安全三、线程和互斥锁的封装1. 线程封装1. 互斥锁封装 四、死锁1. 死锁的概念2. 死锁的四个必要条件3. 避免死锁 五、线程同步1. 线程同步的理解2. 条件变量 一、线程互斥 1. 线程互斥的…

kaggle近三年NLP比赛top方案汇总及新赛推荐

NLP的赛题任务主要有文本分类、情感分析、关系抽取、文本匹配、阅读理解、问答系统等&#xff0c;自Google开发的NLP处理模型BERT被广泛应用后&#xff0c;目前解决NLP任务的首选方案就是深度学习方法&#xff08;textCNN、LSTM、GRU、BiLSTM、Attention等&#xff09;&#xf…

CSS 纵横比属性:aspect-ratio

CSS 属性 aspect-ratio 为盒子规定了纵横比&#xff08;宽高比&#xff09;&#xff0c;这个纵横比可以用于计算 auto 尺寸以及其他布局函数。

《算法竞赛·快冲300题》每日一题:“点灯游戏”

《算法竞赛快冲300题》将于2024年出版&#xff0c;是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码&#xff0c;以中低档题为主&#xff0c;适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 点…

如何通过局域网共享文件

需求环境&#xff1a;公司有多个部门&#xff0c;不同用户与部门使用不同文件 业务背景&#xff1a;一台windows服务器,若干客户端 需要技能&#xff1a; 熟悉windows系统管理&#xff0c; 包含计算机管理、 硬盘硬件、 用户管理、 share and storage management 项目方案…

系统架构设计专业技能 · 软件工程之UML建模设计

现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 点击进入系列文章目录 系统架构设计高级技能 软件工程之UML建模设计 一、需求分析 - UML图二、用例图2.…

黑马JVM总结(六)

&#xff08;1&#xff09;常量池 方法区的组成中都由一个叫做运行时常量池的部分&#xff0c;内部包含一个叫做StringTable的东西 反编译二进制字节码&#xff1a; 类的基本信息&#xff1a; 常量池&#xff1a; 方法定义&#xff1a; 构造方法 main方法 &#xff1a;方法中…

NS6326 4-30V 输入 5V/3A 输出同步降压稳压器芯片

NS6326 4-30V 输入 5V/3A 输出同步降压稳压器芯片 1 特性  宽输入电压范围&#xff1a;4V-30V  效率可高达 92%以上  超高恒流精度&#xff1a;5%  恒压精度&#xff1a;5%  无需外部补偿  开关频率&#xff1a;130kHz  输入欠压/过压、输出短路和过热保护  SO…

驱动开发--自动创建设备节点udev机制的实现过程

一、udev的认识 udev:自动创建设备节点的机制&#xff0c;创建设备节点的逻辑在用户空间 二、udev机制创建设备节点的过程分析 三、目录信息创建和删除类函数 #include<linux/device.h> 1.向上提交目录信息 struct class * class_create(struct module *owner,const c…

牛客:小美的01串翻转

小美的01串翻转 #include<iostream> #include<cstring> #include<string> #include<vector>using namespace std; typedef long long ll; const int N 1100; string s; ll res 0;int main() {cin>>s;int n s.size();vector<vector<in…