我创建了以下for循环
for ItemTemplate in ItemTemplates:
x = 0
self.needle_images.append(cv.imread(ItemTemplate, cv.IMREAD_UNCHANGED))
self.needle_widths.append(self.needle_images[x].shape[1])
self.needle_heights.append(self.needle_images[x].shape[0])
x = x+1
我最初尝试这样编写for循环:
for ItemTemplate in ItemTemplates:
self.needle_images.append(cv.imread(ItemTemplate, cv.IMREAD_UNCHANGED))
self.needle_widths.append(self.needle_images.shape[1])
self.needle_heights.append(self.needle_images.shape[0])
我假设我不需要在这段代码中添加列表条目,也许有更好的方法来完成这项工作,但我的Python技能还很年轻。上面的例子很好,我的代码运行起来也不错,但我希望看看是否有更好的方法来完成这项任务。
1条答案
按热度按时间1rhkuytd1#
我不知道为什么要把
image
、width
和height
存储在三个列表中,因为image
已经把width和height作为它的shape
成员了,你已经在使用了。因为x
将始终保持0
,这样所有即将到来的图像将具有第一个图像的大小。因为您尝试获取数组的shape
成员,所以无法正常工作。我会做出的改变
如果你需要索引(在你的例子中是
x
),我会使用enumerate()函数来获取它:你也可以先把图像放到一个局部变量中,然后再添加它:
如果你不想从
shape
成员中得到width
和height
,你可以把Image保存在一个类或者dict中,保存在两个独立的成员width
和height
中,虽然这和只使用shape
没有太大区别,所以如果for循环没有得到更多的功能,我会写:并使用
shape
成员表示大小,因为在以后使用shape
值时,您总是可以将其存储在局部变量中: