文章目录
一、项目场景
编写python代码,调用opencv函数。实现图片读取、保存等等功能。
二、具体问题
1. 在pycharm中调用opencv库无法代码补全
(1)问题描述
在pycharm中可以导入opencv库,但编写代码时并无提示补全。
例:采用以下代码读取lena图像,可正常显示,但是代码有警告提醒,提醒内容是Cannot find reference ‘imread’ in ‘init.py | init.py’
(2)原因分析
进入cv2包中查看__init__.py文件,发现导入为空列表。这样看确实是啥也没找到。看了下面官方源码地址,发现安装的是最新版4.6.0.66。
python-opencv官方源码
(3)解决方案
很简单,直接安装低版本降级。
pip install opencv-python==4.5.5.64
警告消失了
熟悉的代码补全回来了。
点进去可以看到函数的具体用法,真好。
2.终端不断有“Qobject::moveTOThread”报警
(1)问题描述
程序运行正常,但终端下不断有如图告警
(2)原因分析
anaconda的默认环境base下安装的pyqt与opencv冲突造成的
(3)解决方法
卸载conda安装的pyqt
conda uninstall pyqt
安装pip源的pyqt5和opencv
python -m pip install PyQt5 opencv-python==4.5.5.64 -i https://pypi.tuna.tsinghua.edu.cn/simple
3. ‘cv2’ has no attribute '_registerMatType 问题
(1)问题描述:
运行代码时会遇到cv._registerMatType(Mat) AttributeError: module ‘cv2’ has no attribute ‘_registerMatType’
(2)原因分析
很显然缺少一个特性,说明版本不对,要不是低了就是高了
(3)解决方法
升级opencv
python -m pip install --upgrade opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple