赞
踩
因为学校内一个项目设计的实验课,需要我们用opencv去做一些图像处理,以前一直没有做过类似的东西,对于编程也并不是很熟悉,从小白开始学起,写这篇文章的想法是去整合自己学习过程中找到的一些资料,以及自己在调试中遇到的一些小问题,希望可以帮到那些和我一样同样从头开始学习的uu们。废话很多,当然可能也会有一些不是很准确的说法,望各位指正交流!
我是在GitHub上找到的一个讲opencv-python的博主的文章,里面讲的很基础很详细,但是对于小白来说效果着实不错,大佬们就不用浪费时间在我这里啦,这里送上链接:http://codec.wang/#/opencv/http://codec.wang/#/opencv/http://codec.wang/#/opencv/
但是实际上更全面更权威的是opencv的官方文档,有能力的话查阅官方文档能更好的理解学习,如果是第一次看全英文的说明文件可能会比较恶心,但是实际上大部分人都必须经历这么一段时间来适应, 读原文才能更好的悟原理,经过一段时间的磨练,看英文文档就会变得很轻松,毕竟你所涉及到的领域的专业词汇也就只有那么多,所以有时间不妨去看看原文,你和大师之间的差距可能就是你不敢去挑战自己,附上opencv的英文说明文档:
https://docs.opencv.org/4.0.0/modules.htmlhttps://docs.opencv.org/4.0.0/modules.html
在确保安装了opencv-python的库、程序中正确import cv2以后,照着例程尝试去打开文件,但是cv2.imread()并不能如愿打开照片:代码如下:
- img = cv2.imread('C:\Users\mi\Desktop\xjpic')
- while(True):
- cv2.imshow('picture', img)
- if cv2.waitKey(1) == ord('q'):
- break
但是运行后发现报错:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
查询后发现:在文件夹中复制地址时,地址用 \ 来分隔不同文件夹,但是python识别地址认的是 / 分割的地址
因此只需要将地址中的 \ 全部改为 / 就可以了,当然这是最直接最简单的方法,还有其它的使用转义等方法解决,把链接给大家送上:
But改掉之后换了个报错:'NoneType' object is not subscriptable
这个是因为虽然我的照片命名并没有带后缀,但是在给程序的时候是需要后缀的,要不然它识别不了到底是要打开哪个文件,我的这张照片是 jfif 类型的文件,因此最后代码改为下面这样就可以了:
img = cv2.imread('C:/Users/mi/Desktop/xjpic.jfif')
这下运行再也不会报错了!!!
同样的,cv2.VideoCapture()无法打开视频文件也先去看看文件路径是不是符合上面说的,可千万不能在这种小地方浪费太多时间,伟大的祖国还等着我们去建设呢。如果还是无法解决,可能是缺少ffmpeg的支持,本菜狗幸运的并没有遇到这个问题,但是还是给各位客官献上链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。