Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python cv2.line和cv2.circle返回无_Python_Opencv_Python 2.7_Numpy - Fatal编程技术网

Python cv2.line和cv2.circle返回无

Python cv2.line和cv2.circle返回无,python,opencv,python-2.7,numpy,Python,Opencv,Python 2.7,Numpy,我试图使用cv2.calcOpticalFlowPyrLK在Python上实现光流的Lucas Kanade算法。但是,当我试图画一条线来连接当前点和以前的点以及点本身时,函数将不返回任何值 这是密码 #draw the overlaying tracking img for i,(new,old) in enumerate(zip(good_new,good_old)): a,b = new.ravel() #tmp new value c,d = old.ravel() #t

我试图使用cv2.calcOpticalFlowPyrLK在Python上实现光流的Lucas Kanade算法。但是,当我试图画一条线来连接当前点和以前的点以及点本身时,函数将不返回任何值

这是密码

#draw the overlaying tracking img
for i,(new,old) in enumerate(zip(good_new,good_old)):
    a,b = new.ravel() #tmp new value
    c,d = old.ravel() #tmp old value

    #draws a line connecting the old point with the new point
    mask = cv2.line(mask,(a,b),(c,d),color[i].tolist(),2) #returns None... why??
    #draws the new point
    frame = cv2.circle(frame,(a,b),5,color[i].tolist(),-1) #returns None... why??

img = cv2.add(frame,mask)

#show on window
cv2.imshow("frame",img)
a、 b、c、d是numpy

frame是从网络摄像头读取的我的值

掩码初始化为一个零数组

颜色是一个随机数组

这是我在尝试imshow时收到的错误消息

error: /Users/vagrant/pisi-64bit/tmp/opencv-2.4.5-2/work/opencv-2.4.5/modules/core/src/array.cpp:2482: error: (-206) Unrecognized or unsupported array type in function cvGetMat

我真的很感谢你的帮助

根据OpenCV文档,cv2.line()和cv2.circle()始终不返回任何值

这些方法是就地方法,因此它们会更改您传递给它们的第一个参数。请参阅描述以下类型函数的堆栈溢出问题:

您的固定代码应该如下所示:

#draw the overlaying tracking img
for i,(new,old) in enumerate(zip(good_new,good_old)):
    a,b = new.ravel() #tmp new value
    c,d = old.ravel() #tmp old value

    #draws a line connecting the old point with the new point
    cv2.line(mask,(a,b),(c,d),color[i].tolist(),2) #returns None... why??
    #draws the new point
    cv2.circle(frame,(a,b),5,color[i].tolist(),-1) #returns None... why??

img = cv2.add(frame,mask)

我花了很长时间才弄明白这个bug,因为它完全是从opencv教程复制的。他们真的应该编辑它