opencv :: remap()如何将图像重新映射到另一个具有不同大小的图像

use*_*116 2 opencv remap

现在我有图像A,我想将其重新映射到图像B,图像B的大小与图像A不同.

对于每个像素坐标(x,y),它在图像B上具有坐标(r,theta).

谁能告诉我如何实现它,最好是带有示例代码?因为我真的不明白的论点map_x,map_y在重映射功能.

有人可以帮我解释一下吗?非常感谢!

bac*_*aci 7

remap(i,j)通过检查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)); 所以你需要使用这些购物车填充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);
}}
Run Code Online (Sandbox Code Playgroud)

您可能还想查看cartToPolar