【发布时间】:2020-04-23 11:09:35
【问题描述】:
我正在尝试将“PNG”文件读取为 numpy 数组。我使用 cv2 库 cv2.imread('image') 来完成它,它返回一个 numpy 数组。当我打印出它的形状时,我得到了我真正想要的 (6784, 5216, 3)。但是当我尝试使用 array[1] 或 array[0] 在数组中迭代时,在这两种情况下我都会得到 5216 个输出。因此,我得到了 outOfBoundIndex 错误。任何方式我也可以看到第 5216 个索引和 6784 之间的其他像素?
添加代码:
path = "/home/y0b8k/Projects/y3-ogam/gt_20/train_2.png"
ar = cv2.imread(path_copy, cv2.IMREAD_UNCHANGED)
我之前的循环如下所示。它实际上读取了这些值,并尝试按照我的意愿为新的输出图像着色。
x, y = 0, 0
while y < mask.size[1]-1:
while x < mask.size[0]:
value = pix[x,y]
print(x)
if value[0] == 3:
col = [64,173,38,255]
ar[x,y] = col
if value[0] == 5:
#print(ar[x,y])
col = [203,0,0,255]
ar[x,y] = col
if value[0] == 7:
col = [30,50,250,255]
ar[x,y] = col
if value[0] == 4:
col = [100,100,100,255]
ar[x,y] = col
else:
col = [255,255,255,255]
ar[x,y] = col
x += 1
y+=1
x= 0
cv2.imwrite("çıktı.png",ar)
【问题讨论】:
-
“我还能看到第 5216 个索引和 6784 之间的其他像素吗?”不,它们不存在。您已经表明图像只有 5216 列...
标签: python python-3.x numpy opencv