【发布时间】:2014-04-14 22:16:39
【问题描述】:
现在我有了图像 A,我想将其重新映射到与图像 A 大小不同的图像 B。
对于每个像素坐标(x,y),它在图像B上都有坐标(r,theta)。
谁能告诉我如何实现它,最好是示例代码?因为我不太了解 remap 函数中的参数map_x、map_y。
谁能帮我解释一下?非常感谢!
【问题讨论】:
现在我有了图像 A,我想将其重新映射到与图像 A 大小不同的图像 B。
对于每个像素坐标(x,y),它在图像B上都有坐标(r,theta)。
谁能告诉我如何实现它,最好是示例代码?因为我不太了解 remap 函数中的参数map_x、map_y。
谁能帮我解释一下?非常感谢!
【问题讨论】:
remap 通过检查map_x(i,j) 和map_y(i,j) 来决定将像素(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);
}}
你可能还想看看cartToPolar
【讨论】: