2014-10-17 204 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; 
相關問題