同时显示多个openCV图像

2024-09-29 17:25:11 发布

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

我试图分割一个openCV帧图像,我从一个输入视频流得到

_, frame = cap.read()

将它们存储到一个数组中。我不知道事先会有多少个小的图像,例如:我可以把图像分成4个小的图像,或者8,16等等

我想创建一个函数,允许我显示任意组合的较小的图像。目前,它们是在两个单独的窗口中显示还是在同一个窗口中显示对我来说无关紧要(尽管我更希望它们在单独的窗口中显示)。你知道吗

我尝试的显然不起作用,在列表上循环只显示列表中的最后一个图像:

# GridCells is the List that contains all the smaller images
def showCells(self):
    for c in self.GridCells:
        c.showC()

其中showC()是:

def showC(self):
    cv2.imshow('cell',self.image)

如前所述,我不知道事先会有多少个较小的图像,因此拥有任意多个cv2.imshow()语句并不是一个解决方案。你知道吗

谢谢你的时间!你知道吗


Tags: the图像self列表readdef数组cv2
2条回答

尝试此操作,使OpenCV为每个图像创建一个新窗口,其中每个窗口都有不同的名称。你知道吗

您可以使用enumerate()函数(这对于具有不同的窗口名很有用)和字符串格式化程序format()使用传递给showC函数的枚举器快速命名不同的窗口。你知道吗

# GridCells is the List that contains all the smaller images
def showCells(self):
    for i, c in enumerate(self.GridCells):
        c.showC(i)

def showC(self, i):
    cv2.imshow("cell{}".format(i),self.image)

您之所以只显示最后一个图像,是因为您为所有图像指定了相同的窗口名,如下所示:

cv2.imshow('cell',self.image)

如果你给每个图像取一个不同的名字('cell1', 'cell2', 'cell3' etc),它们应该同时出现。你知道吗

相关问题 更多 >

    热门问题