python - img不是数字元组

标签 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 = 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需要为非负数。

关于python - img不是数字元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43751191/

相关文章:

python - 在 Python 中注释 "file type"的正确方法

python - 属性错误 : 'Browser' object has no attribute 'manager' when test spynner

python - 错误 fabs(sc) > DBL_EPSILON 在函数 cvFindExtrinsicCameraParams2 中意味着什么?

c++ - Mat 单元格在 OpenCV 中设置为 NULL?

machine-learning - caffe中基于VGG16制作跳层连接网络出错

python-3.x - 分割图像上的重叠预测

python - 合并字典而不覆盖以前的值,其中值是一个列表

c++ - 将 C++ 转换为 python - memcpy uchar 转换为 int64

opencv - 如何从相机捕获的显示测试图像计算 Gamma 校正值?

algorithm - 关于图像裁剪算法的困境——有可能吗?