openCV重映射与BORDER_REFLECT不工作

openCV remap with BORDER_REFLECT not working

本文关键字:REFLECT 工作 BORDER 映射 openCV      更新时间:2023-10-16

我正在调用OpenCV cv::remap函数,给出两个映射,map_xmap_y为x和y轴。这些地图在空白区域被设置为-1(我正在旋转图像,有一些空白区域,我想用现有图像的镜像/反射填充)。

我像这样调用函数

cv::remap(src_image, remaped_image, map_x, map_y, INTER_LINEAR, BORDER_REFLECT);

,但这将导致具有恒定边界的图像。我做错了什么?

cv::remap以另一种方式与闪烁空格一起工作。如果您将空白区域的映射设置为-1,它将以外推值(-1,-1)源像素外推这些点。因此,您得到了用常量填充的空白区域。如果你想用镜像值填充这个像素,你需要为cv::remap提供适当的坐标,即使它将超出边界。

顺便说一句,为什么你不使用cv::warpAffine + cv::getRotationMatrix2D图像旋转?很好的教程在这里。cv::warpAffine在内部使用正确的映射调用cv::remap