openCV重映射,BORDER_REFLECT无法正常工作

时间:2015-05-22 15:27:09

标签: c++ opencv

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

我正在调用这样的函数

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

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

1 个答案:

答案 0 :(得分:1)

cv::remap以另一种方式使用闪烁空间。如果为空白区域设置地图为-1,则使用外推值(-1,-1)源像素推断此点。因此,您有空格填充恒定值。如果你想用镜像值填充这个像素,你需要为cv::remap提供适当的坐标,即使它不在边界。

是的,为什么你不能使用cv::warpAffine + cv::getRotationMatrix2D进行图像轮换?好的教程是herecv::warpAffine在内部使用正确的地图调用cv::remap