《OpenCV 3 计算机视觉 Python语言实现》前三章及PyCharm配置等各类问题汇总

1. 前言

近期弄的东西比较杂,一会看书一会配置的,乱的一批。
上一篇《Python编程:从入门到实践》的笔记章节又比较多,在此期间遇到的所有问题都罗列在此篇博客。

主要有 《OpenCV 3 计算机视觉 Python语言实现》前三章遇到的问题《Python编程:从入门到实践》(用Geany编辑器)遇到的问题以及后来使用PyCharm编辑器遇到的问题三大部分。

接下来就要学习新的知识了。

2. 《OpenCV 3 计算机视觉 Python语言实现》前三章遇到的问题

2.1 本书章节2.3 Cameo——面向对象的设计

2.1.1 Cameo代码

代码从链接1中拷贝的,可以使用,只是有时候检测键盘不够灵敏,很可能是例程本身就有问题。

特别注意:
后来在本书3.6 修改应用 再对cameo.py使用时,提示
error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor’

经调试发现,cameo.py L18 “frame = self._captureManager._frame"应去掉frame前的”_",方能不报错。我遇到的该问题没有链接5作者遇到的那么复杂,但特地留存备用。

2.1.2 运行代码后,提示[ WARN:0] terminating async callback

好在不影响程序进行,应该是因为代码设置了死循环,摄像头没法释放的原因。
因为不影响运行,也就没太在意,并不知道怎么解决。链接2给了几个可能的原因。

2.1.3 该节代码思路

最开始看此章节很是抵触,通过阅读链接3,大致懂了思路及实现过程。

2.1.4 代码中最后有一句if __name__ == '__main__'

链接4指出:
每个python模块都包含内置的变量__name__,当运行模块被执行的时候,__name__等于文件名;如果import到其他模块中,则__name__等于模块名称,而__main__等于当前执行文件的名称。进而当模块被直接执行时,__name__ == main结果为真,否则为假。

相关链接

  1. Python 使用Opencv实现cameo功能
    https://blog.csdn.net/HuangZhang_123/article/details/80415861
  2. [ WARN:0] terminating async callback
    https://www.javaear.com/question/53888878.html
  3. 白话文讲计算机视觉-第二讲-cameo类库
    https://blog.csdn.net/u013631121/article/details/80412111
  4. if name == ‘main’ 如何正确理解?
    https://blog.csdn.net/zhusongziye/article/details/79505803
  5. python_openCV例程遇到empty() in function cv::CascadeClassifier::detectMultiScale的解决方法
    https://blog.csdn.net/m0_37908464/article/details/79433630

2.2 代码错误

2.2.1 本书章节3.8 轮廓检测 P45首次出现

OpenCV 4.新版本的问题,旧版本应该不会出现,参考链接1.
image, contours, hier = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
应改为
contours, hier = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

2.2.2 本书章节3.11.1 直线检测 P50首次出现

	for x1,y1,x2,y2 in lines[0]:
  		cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)

应改为

    for line in lines:
        for x1, y1, x2, y2 in line:
            cv2.line(img, (x1,y1), (x2,y2), (0,255,0), 2)

因为得到的线条lines不只有一个元素

相关链接

  1. python调用cv2.findContours时报错:ValueError: not enough values to unpack (expected 3, got 2)
    https://blog.csdn.net/miao0967020148/article/details/88623631

2.3 OpenCV 在线文档

可以通过在线文档查询调用的函数及其他资料,配上翻译,比较方便https://docs.opencv.org/

3. 《Python编程:从入门到实践》(用Geany编辑器)遇到的问题

3.1 Geany Python缩进问题-inconsistent use of tabs and spaces in indentation

制表位和空格的问题,制表位改为四个空格,平时注意细节即可解决。
除了本缩进问题,各条件后的 冒号: 也容易被忽略。

3.2 TypeError: ‘int’ object is not callable

Python函数名字和变量名字不能重复,否则就会报错。还是细节问题。

3.3 missing 1 required positional argument: ‘self’

在调用某个类里面的方法之前,没有对类进行实例化。具体原因应该还是出在类或类的方法定义的问题上或者是实例化的问题上。

3.4 本书章节 8.4 传递列表

有句话提到“函数对列表做的修改是永久性的”,与之前学的C的形参好像不一样。出狱好奇,就搜了一下,原来Python是引用传递
具体解释见链接4.作者讲的很细,可是我并没有特别懂,留存备用。

相关链接

  1. Python 缩进问题-inconsistent use of tabs and spaces in indentation.原因及解决方法
    https://blog.csdn.net/qq_38161040/article/details/85716707
  2. TypeError: ‘int’ object is not callable
    https://blog.csdn.net/qq_33591712/article/details/84974699
  3. Python程序报错:missing 1 required positional argument: ‘self’
    https://blog.csdn.net/GodLordGee/article/details/89382886
  4. C++ 值传递、指针传递、引用传递详解
    https://www.cnblogs.com/dingxiaoqiang/p/8012578.html

4. 使用PyCharm编辑器遇到的问题

4.1 pydev debugger: process xxxx is connecting

在Debug时会弹出这个提示,四位数字不固定好像是随机的。并没有找到合适的解决办法,好在不影响相关操作,并不知道怎么解决

4.2 ModuleNotFoundError: No module named ‘cv2’

已经确定安装opencv_contrib_python-4.1.0.25,遇到此问题时一脸懵逼。
参考链接1,要确定PyCharm里的环境变量是否包含python的环境Lib.

点击Flie再点击Settings,然后点Project下的Project Interpreter,再去右边点击小齿轮下的Show All,点击“”,找到Python安装路径下的\Lib\site-packages

所有第三方模块都存在这,我的路径为 D:\Python37\Lib\site-packages

4.3 运行python文件 相关按钮灰色

参考链接2,点Run/Debug Configurations,再点“”,添加“Python”项,修改路径后点Apply或OK即可
同一项目下的不同Python文件运行时也需要改路径。

相关链接

  1. pycharm import cv2 : no module named cv2
    https://blog.csdn.net/Eclipsesy/article/details/77686807
  2. PyCharm中运行python文件 运行按钮灰色
    https://blog.csdn.net/chuan403082010/article/details/80346535

5. 结语

确定了继续用PyCharm作为Python的编辑器,现阶段可能不会再遇到配置的问题了。

本科毕设期间接触的内容还是太少。
第三章末节的Hough变换有空再细看。
从第四章开始,就算是正式开啃OpenCV Python语言实现了。
未来路漫漫。

个人水平有限,有问题欢迎各位大神批评指正!

发布了24 篇原创文章 · 获赞 15 · 访问量 5385

猜你喜欢

转载自blog.csdn.net/qq_34122861/article/details/97631303