2014-10-17 207 views
0

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

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 ; 
    } 
} 

回答

0

随着map_x.at<float>(i,j) = i+37;要存储的数位置(索引)+ 37i。不是的号码。跟在它后面的语句一样。

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

Mat roi = map_x(Rect(45, 104, 37, 37)); 
map_x(Rect(80, 200, 37,37)) = roi; 
相关问题