我已将图像读取到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)
并且错误仍然存在。
答案 0 :(得分:0)
np.around()的输出的类型为float
。您不能将浮点数用于索引数组。
转换输出,它应该可以工作:
new_image[int(px_dash),int(py_dash),c] = image[px,py,c]