2017-03-02 324 views
0

我已经找遍了,找不到这个问题的答案,所以我打算继续问。我想弄清楚Python的opencv,我陷入了困境。每次运行此代码时,它都会告诉我没有名为“CV_CHAIN_APPROX_SIMPLE”的属性。然后我尝试使用每个CV_CHAIN_APPROX并且没有任何工作。我甚至去了我的IDLE,它也不知道它是什么,所以我卡住了。 我想制作一个程序,可以找到移动目标的中心坐标。将使用findContours是正确的方向? 对不起!我是新来的stackoverflow,所以我不确定我可以问这些问题! 非常感谢!AttributeError:module'cv2'has no atrribute'CV_CHAIN_APPROX_SIMPLE'


import cv2 
import numpy as np 

cap = cv2.VideoCapture(0) 
fgbg = cv2.createBackgroundSubtractorMOG2() 

while True: 
    _, frame = cap.read() 
    fgmask = fgbg.apply(frame) 
    filtered = cv2.medianBlur(fgmask, 15) 
    (a, b, c) = cv2.findContours(filtered, cv2.RETR_EXTERNAL, cv2.CV_CHAIN_APPROX_SIMPLE) 

    cv2.imshow('cont', b) 
    cv2.imshow('fg', fgmask) 
    cv2.waitKey(1) 

回答

0

在版本“2.4.9”我可以清楚地看到cv2.CHAIN_APPROX_NONE(和其他人也是如此),你确定你没有忘记添加cv2.在它面前就像你在你的例子一样。如果不是,请通过执行​​添加版本。

+0

是的,对不起。我的代码中确实有这个。我只是很快记下了这一点。我知道它应该在那里,这就是为什么我很困惑。 –

+0

@ Dr.Snow什么是简历版本?代码适用于我,一旦我添加使用我的答案。您确定添加了'cv2.',然后从'CV_CHAIN_APPROX_SIMPLE'中删除了'CV_',因为它应该是'cv2.CHAIN_APPROX_SIMPLE'而不是'cv2.CV_CHAIN_APPROX_SIMPLE' – ljetibo

0

您正在使用opencv 3.0>基于createBackgroundSubtractorMOG2,所以你行需​​要像:

(a, b, c) = cv2.findContours(filtered, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 

不要在每个OpenCV的功能的面前忘记cv2.