具有形状map1h,w,2和形状map2h,w的地图的OpenCV Remap

问题描述

cv2.remap(img,map1,map2,interpolation=cv2.INTER_LINEAR)的形状为map1(h,w,2)的形状为map2时,(h,w)会做什么。 这些映射作为对cv2.fisheye.initUndistortRectifyMap输出,但是文档不是很清楚。如果将map2的变量numpy.array([],dtype=np.int16)更改为map2,它仍然会为我提供接近输出输出,而不会省略cv2.remap,但存在差异。

在此过程中,img是否更改了node.geometry?.firstmaterial?.diffuse.contents = #imageLiteral(resourceName: “yourimagename”) 的数据类型?

解决方法

是的,遗憾的是文档尚不清楚。但是,如果您查看cv2.remapcv2.computeMaps告诉您它们的实际含义。

总而言之,cv2.fisheye.initUndistortRectifyMap的输出提供了两个映射,其中第一个映射是两个通道矩阵,其中第一个通道是x坐标,第二个通道是y坐标用于重新映射。现在不同的是,这是定点精度的结果,而不是典型的浮点精度矩阵。定点主要用于计算重新映射的图像时的计算速度。第二张地图是一张插值系数表,因此当您与第一张地图一起使用时,与使用常规浮点精度矩阵相比,它提供的结果几乎相同,但节省了大量计算。

通过省略第二张地图,您仍然会得到不错的结果,但是第二张地图为空会导致精度损失,因为您没有提供插值表来生成如果使用浮点精度会创建的内容地图。这就是为什么您要查看质量稍差的图像。