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 img不是一个数字元组_Python_Opencv_Computer Vision_Opticalflow - Fatal编程技术网

Python img不是一个数字元组

Python img不是一个数字元组,python,opencv,computer-vision,opticalflow,Python,Opencv,Computer Vision,Opticalflow,整个程序是可视化从一个文件夹中的每个图像提取的光流。问题发生在我应用draw_flow函数时。我已经将图像数组转换为一个元组,但它不是错误中提到的数字元组。我不知道怎么解决这个问题。 当我试图执行以下代码时: def draw_flow(im, greyim, flow, step = 16): h, w = im.shape[:2] y, x = np.mgrid[step/2:h:step,step/2:w:step].reshape(2, -1) fx, fy =

整个程序是可视化从一个文件夹中的每个图像提取的光流。问题发生在我应用draw_flow函数时。我已经将图像数组转换为一个元组,但它不是错误中提到的数字元组。我不知道怎么解决这个问题。 当我试图执行以下代码时:

def draw_flow(im, greyim, flow, step = 16):

    h, w = im.shape[:2]
    y, x = np.mgrid[step/2:h:step,step/2:w:step].reshape(2, -1)
    fx, fy = flow[y,x].T
    lines = np.vstack([x, y, x+fx, y+fy]).T.reshape(-1,2,2)
    lines = np.int32(lines)

    for(x1,y1),(x2,y2) in lines:
        cv2.line(greyim, (x1,y1), 1, (0,255,0), -1)
    return greyim


def main():
    mypath = 'jpl_thomas'
    onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath,f)) ]
    color_images = np.empty(len(onlyfiles), dtype=object)
    gray_images = np.empty(len(onlyfiles), dtype=object)

    for n in range(1, len(onlyfiles)):
        color_images[n] = cv2.imread(join(mypath,onlyfiles[n]))

        gray_images[n] = cv2.imread(join(mypath,onlyfiles[n]),0)

    for i in range(2, len(gray_images)):
        flow =cv2.calcOpticalFlowFarneback(gray_images[i],gray_images[i-1], None, 0.5, 3, 15, 3, 5, 1.2, 0)
        draw_flow(color_images[i],tuple(gray_images[i]),flow, step = 16)
我收到的错误消息如下:

Traceback (most recent call last):
File "main.python", line 51, in <module>
  main()
File "main.python", line 45, in main
  draw_flow(color_images[i],tuple(gray_images[i]),flow, step = 16)
File "main.python", line 19, in draw_flow
  cv2.line(greyim, (x1,y1), 1, (0,255,0), -1)
TypeError: img is not a numerical tuple
回溯(最近一次呼叫最后一次):
文件“main.python”,第51行,在
main()
文件“main.python”,第45行,在main中
绘制流程(彩色图像[i],元组(灰度图像[i]),流程,步骤=16)
draw_flow中第19行的文件“main.python”
cv2.线(格雷伊姆,(x1,y1),1,(0255,0),-1)
TypeError:img不是数字元组

为什么要将
灰度图像[i]
作为元组传递?因为,在我的机器上,这在不转换为元组的情况下工作得很好

我猜您已经为中间测试修改了这一行,因为它不正确

cv2.line(greyim, (x1,y1), 1, (0,255,0), -1)
根据文件,

cv.Line(img, pt1, pt2, color, thickness=1, lineType=8, shift=0) 
pt2
是作为元组传递的点,并且
thickness
需要是非负数