我正在调用OpenCV cv::remap
函数,给出两个映射,map_x
和map_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
。