BORDER_REFLECT 的 openCV 重新映射不起作用
openCV remap with BORDER_REFLECT not working
我正在调用 OpenCV cv::remap
函数,给出两个映射,map_x
和 map_y
用于 x 轴和 y 轴。这些地图在空白 spaces 中设置为 -1(我正在旋转图像,有一些空白 space 我想用现有图像的 mirror/reflection 填充)。
我是这样调用函数的
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
进行图像旋转?不错的教程是 here。 cv::warpAffine
使用正确的地图在内部调用 cv::remap
。
我正在调用 OpenCV cv::remap
函数,给出两个映射,map_x
和 map_y
用于 x 轴和 y 轴。这些地图在空白 spaces 中设置为 -1(我正在旋转图像,有一些空白 space 我想用现有图像的 mirror/reflection 填充)。
我是这样调用函数的
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
进行图像旋转?不错的教程是 here。 cv::warpAffine
使用正确的地图在内部调用 cv::remap
。