首页 > 解决方案 > 我在 Python 脚本中有一个 TypeError

问题描述

我写了这个短代码:

from cv2 import cv2

img = cv2.imread("1.png")

print("Высота:"+str(img.shape[0]))
print("Ширина:" + str(img.shape[1]))
print("Количество каналов:" + str(img.shape[2]))

for x in img.shape[0]:
    for y in img.shape[1]:
        if img[x, y] == (255, 255, 255):
            img[x, y] = (0, 0, 0)

cv2.imwrite("result.png", img)

我有这个错误:

Traceback (most recent call last):
  File "e:\Projects\Captcha Decrypt\main.py", line 9, in <module>
    for x in img.shape[0]:
TypeError: 'int' object is not iterable

你能解决这个问题吗?

标签: python

解决方案


该错误说明了一切:您正在尝试迭代一个数字,这是不可能的,您只能迭代已实现__iter__or__next__方法的对象。例如,如果img.shape[0]是 100,并且您想迭代一百次,则应该使用 arange代替。这基本上是一个数字列表,然后您可以对其进行迭代。试试这个:

from cv2 import cv2

img = cv2.imread("1.png")

print("Высота:" + str(img.shape[0]))
print("Ширина:" + str(img.shape[1]))
print("Количество каналов:" + str(img.shape[2]))

for x in range(img.shape[0]):
    for y in range(img.shape[1]):
        if img[x, y] == (255, 255, 255):
            img[x, y] = (0, 0, 0)

cv2.imwrite("result.png", img)

推荐阅读