OpenCV从一个位置重新映射到另一个位置

时间:2014-10-17 05:47:06

标签: image opencv

我想将(45,104,37,37)的(x,y,宽度,高度)图像的方形补丁重新映射到另一个位置(80,200,37,37)。我可以知道为什么下面的代码不对吗?

for (int i =0;i<37;i++) //width
{
    for (int j =0;j<37;j++) //width
    {

    map_x.at<float>(45+i,104+j) = 80+i ;
    map_y.at<float>(45+i,104+j) = 200+j ;
    }
}

,或者

for (int i =45; i <82; i++)
{
    for (int j =104; j<141; j++)
    {
     map_x.at<float>(i,j) = i+37 ;
     map_y.at<float>(i,j) = j+37 ;
    }
}

1 个答案:

答案 0 :(得分:0)

使用map_x.at<float>(i,j) = i+37;,您将 i + 37存储在位置(索引) i。不是号码。后面的语句相同。

OpenCV有一个方便的方法,涉及投资回报率。

Mat roi = map_x( Rect(45, 104, 37, 37) );
map_x( Rect(80, 200, 37,37) ) = roi;