IndexError:用作索引的数组在python中必须为整数(或布尔值)类型

时间:2019-02-26 14:36:03

标签: python opencv

我已将图像读取到numpy数组。我对每个像素进行了一些转换,然后需要检查生成的像素坐标是什么。如果它们为负,则x坐标大于图像中的行数或y坐标大于图像中的列数,我需要进行适当的处​​理。

image = cv2.imread('image.png')
rows,columns,ch = np.shape(image)

for c in range(ch):
    for px in range(0,rows):
        for py in range(0,columns):
            ip_vector = np.array([px,py])
            ip_vector.shape=(2,1)
            op_vector = np.dot(trans_array,ip_vector)
            op_vector=np.around(op_vector)
            [px_dash,py_dash]=op_vector
            if px_dash >= 0 and px_dash < rows and py_dash >= 0 and py_dash<columns:
                new_image[px_dash,py_dash,c]=image[px,py,c]
  

new_image [px_dash,py_dash,c] = image [px,py,c]   IndexError:用作索引的数组必须为整数(或布尔值)类型

我尝试过

image = image.astype(int)
new_image = new_image.astype(int)

并且错误仍然存​​在。

1 个答案:

答案 0 :(得分:0)

np.around()的输出的类型为float。您不能将浮点数用于索引数组。 转换输出,它应该可以工作:

new_image[int(px_dash),int(py_dash),c] = image[px,py,c]