img不是数字元组

问题描述:

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

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 

为什么你想传递gray_images[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需要传递给为非负数的点。