【问题标题】:Reading and displaying multiple images in opencv在opencv中读取和显示多个图像
【发布时间】:2020-04-05 16:57:27
【问题描述】:

我将此代码与 python 和 opencv 一起使用,以显示大约 100 张图像。但是imshow函数会抛出错误。

这是我的代码:

    nn=[]
    for j in range (187) :
        nn.append(j+63)


    images =[]
    for i in nn:
        path = "02291G0AR\\"
        n1=cv2.imread(path +"Bi000{}".format(i))
        images.append(n1)

    cv2.imshow(images)

这是错误:

    imshow() missing required argument 'mat' (pos 2)

【问题讨论】:

  • imshow() 只能显示一张图像 - 要显示许多图像,您必须多次使用 imshow() 或者您可以将所有图像连接成一张图像然后显示它。但它会是大图像,因此您必须调整它的大小以使其更小。
  • 三思而后行将大量图像不必要地加载到列表中 - 它们占用大量内存!也许您可以将他们的名字保存在一个列表中,然后一次加载一个以显示它们....

标签: python image opencv cv2


【解决方案1】:

您可以使用以下 sn-p 来蒙太奇多个图像:

from imutils import build_montages
im_shape = (129,196)
montage_shape = (7,3)
montages = build_montages(images, im_shape, montage_shape)

im_shape : 包含蒙太奇中每个图像的宽度和高度的元组。在这里,我们指出蒙太奇中的所有图像都将调整为 129 x 196。将蒙太奇中的每个图像调整为固定大小是一项要求,因此我们可以在生成的 NumPy 数组中正确分配内存。注意:蒙太奇中的空白区域将被黑色像素填充。

montage_shape : 第二个元组,这个元组指定蒙太奇中的列数和行数。在这里,我们指出我们的蒙太奇将有 7 列(7 个图像宽)和 3 行(3 个图像高)。

【讨论】:

    【解决方案2】:
    1. 您必须一次可视化一张图像,同时传递images 这是一个列表
    2. cv2.imshow() 将窗口名称作为第一个参数

    所以你应该迭代你加载的图像,如:

    for image in images:
        cv2.imshow('Image', image)
        cv2.waitKey(0)  # Wait for user interaction
    

    您可能需要查看有关显示图像here 的python opencv 文档。

    【讨论】:

      猜你喜欢
      • 2023-02-17
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 2012-07-18
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 2015-04-24
      相关资源
      最近更新 更多