前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手势识别中一些错误解决方法

手势识别中一些错误解决方法

作者头像
py3study
发布2020-01-20 17:39:26
1K0
发布2020-01-20 17:39:26
举报
文章被收录于专栏:python3

最近在看一个手势识别的项目时,遇到了一些错误,主要原因是该项目是使用python2.7+opencv2.4.8,而我的环境是python3.5.2+opencv3.1.0,

于是将一些解决方法记录下来,希望能够帮助其他人少走些弯路。

1.       背景分离函数

代码语言:javascript
复制
bg_model = cv2.BackgroundSubtractorMOG2(0, 10.0)

报错:       AttributeError: module 'cv2.cv2' has no attribute 'BackgroundSubtractorMOG2'

找了一些资料也查看了opencv3.1.0的官方文档,发现里面没有BackgroundSubtractorMOG2(),给的例程是cv2.createBackgroundSubtractorMOG2(),因此将代码改为下面,问题解决

代码语言:javascript
复制
bg_model = cv2.createBackgroundSubtractorMOG2()

2.    寻找轮廓函数

代码语言:javascript
复制
contours, hierarchy = cv2.findContours(contour_frame, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMP

报错:        too many values to unpack (expected 2)  这个error信息是指返回的参数多于接收的

                    但是在查看 findContours() 时,确实是返回两个参数:第一个为轮廓的点集,第二个是各层轮廓的索引,但是在查看其他人博客,说是实际上返回三个参数,第一个是返回了所处理的图像,后面两个才是我们所需要的两个参数,将代码改为如下,错误解决。

代码语言:javascript
复制
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文件开头加上如下代码,问题解决

代码语言:javascript
复制
cv2.ocl.setUseOpenCL(False)

PS:这行代码应该是禁用opencl,opencl是一个GPU的加速技术,但是据说在计算量小的时候GPU在数据转移上耗时占大头,还不如不用,至于错误的原因,也可能是我的GPU不支持opencl?具体不清楚,以后有机会可以深入研究一下,不过禁用之后确实没有这个error了

4.      xrange 和 range 的区别,这个是由于python版本的区别,在python3之后貌似是不支持xrange了,换成range就OK了

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

希望可以一起交流进步!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/04/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档