答案 0 :(得分:0)
这似乎是scipy.ndimage.geometric_transform的使命。 考虑以下示例,使用
1 2
3 4
作为输入2D数组
t = np.array([[1,2],[3,4]],dtype='uint8') #our input array
def func(x):
return (x[1],x[0])
out = scipy.ndimage.geometric_transform(t,func)
print(out)
输出:
[[1 3]
[2 4]]
那怎么了?对于输入中的每个单元格,将计算以该单元格位置(元组)作为参数的func
并将其输出用作该单元格的新位置,请记住索引从0开始并且以y,x的方式出现:>
我的示例函数只需用x切换y即可
实际上您可以在输出中看到。
如果只想转换灰度图像,则使用cv2.imread
函数可以轻松地将图像读取到numpy数组中,这比处理2D数组而不是3D数组更容易。加载灰度图像时,请记住使用cv2.imread('someimage.bmp',0)
(将0
作为第二个参数)。
主要挑战是创建函数:假设灰度输入为2元组-“施主”像素的位置,输出为2元组-“收件人”的位置,请注意,此功能不必覆盖整个输出区域-如果输出像素缺少“施主”,则会进行插补。