opencv::remap()如何将图像重新映射到另一个大小不同的图像
现在我有了图像A,我想将它重新映射到图像B,它的大小与图像A不同 对于每个像素坐标(x,y),它具有图像B上的坐标(r,θ) 有谁能告诉我如何实现它,最好是用示例代码?因为我不太理解remap函数中的参数opencv::remap()如何将图像重新映射到另一个大小不同的图像,opencv,remap,Opencv,Remap,现在我有了图像A,我想将它重新映射到图像B,它的大小与图像A不同 对于每个像素坐标(x,y),它具有图像B上的坐标(r,θ) 有谁能告诉我如何实现它,最好是用示例代码?因为我不太理解remap函数中的参数map\ux,map\uy 谁能给我解释一下吗?非常感谢 remap通过选中map_x(i,j)和map_y(i,j)来决定将像素映射到哪里。最后,您的像素(i,j)被映射到(map_x(i,j),map_y(i,j)) 在你的例子中,你的像素(x,y)应该被映射到(sqrt(x^2+y^2),
map\ux
,map\uy
谁能给我解释一下吗?非常感谢
remap
通过选中map_x(i,j)
和map_y(i,j)
来决定将像素映射到哪里。最后,您的像素(i,j)
被映射到(map_x(i,j),map_y(i,j))
在你的例子中,你的像素(x,y)应该被映射到(sqrt(x^2+y^2),atan(y/x));因此,您需要使用这些cart-to-polar方程填充map_x和map_y:
for(int i = 0; i < src.rows; i++ )
{
for(int j = 0; j < src.cols; j++ )
{
map_x.at<float>(i,j) = sqrt(i^2 + j^2);
map_y.at<float>(i,j) = atan(j/i);
}}
for(int i=0;i
你可能还想看看