img不是数字tup

2024-09-27 23:20:41 发布

您现在位置:Python中文网/ 问答频道 /正文

整个程序是将从一个文件夹中提取的每个图像的光流可视化。当我应用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)

我收到这样的错误信息:

^{pr2}$

Tags: inforlenstepnpflowcv2lines
1条回答
网友
1楼 · 发布于 2024-09-27 23:20:41

为什么要将gray_images[i]作为元组传递?因为,不用在我的机器上转换成元组就可以了。在

我猜你为了中间测试修改了这条线,因为它不正确。在

cv2.line(greyim, (x1,y1), 1, (0,255,0), -1)

根据文件

^{pr2}$

pt2是作为元组传递的点,thickness必须是非负数。在

相关问题 更多 >

    热门问题