手势识别中一些错误解决方法
2018-12-17 10:50:29来源:博客园 阅读 ()
最近在看一个手势识别的项目时,遇到了一些错误,主要原因是该项目是使用python2.7+opencv2.4.8,而我的环境是python3.5.2+opencv3.1.0,
于是将一些解决方法记录下来,希望能够帮助其他人少走些弯路。
1. 背景分离函数
bg_model = cv2.BackgroundSubtractorMOG2(0, 10.0)
报错: AttributeError: module 'cv2.cv2' has no attribute 'BackgroundSubtractorMOG2'
找了一些资料也查看了opencv3.1.0的官方文档,发现里面没有BackgroundSubtractorMOG2(),给的例程是cv2.createBackgroundSubtractorMOG2(),因此将代码改为下面,问题解决
bg_model = cv2.createBackgroundSubtractorMOG2()
2. 寻找轮廓函数
contours, hierarchy = cv2.findContours(contour_frame, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMP
报错: too many values to unpack (expected 2) 这个error信息是指返回的参数多于接收的
但是在查看 findContours() 时,确实是返回两个参数:第一个为轮廓的点集,第二个是各层轮廓的索引,但是在查看其他人博客,说是实际上返回三个参数,第一个是返回了所处理的图像,后面两个才是我们所需要的两个参数,将代码改为如下,错误解决。
binary, contours, hierarchy = cv2.findContours(contour_frame, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMP
3. 报错:
cv2.error: D:\Build\OpenCV\opencv-3.1.0\modules\python\src2\cv2.cpp:163:error: (-215) The data should normally be NULL! in functionNumpyAllocator::allocate
在python文件开头加上如下代码,问题解决
cv2.ocl.setUseOpenCL(False)
PS:这行代码应该是禁用opencl,opencl是一个GPU的加速技术,但是据说在计算量小的时候GPU在数据转移上耗时占大头,还不如不用,至于错误的原因,也可能是我的GPU不支持opencl?具体不清楚,以后有机会可以深入研究一下,不过禁用之后确实没有这个error了
4. xrange 和 range 的区别,这个是由于python版本的区别,在python3之后貌似是不支持xrange了,换成range就OK了
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
希望可以一起交流进步!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 第四章爬虫进阶之图形验证码识别技术 2019-06-14
- Python 一些内置函数 2019-05-17
- 数据结构(四):树 2019-05-17
- OpenCV+Python识别车牌和字符分割的实现 2019-05-04
- Python视频人脸检测识别 2019-04-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash