我想将(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 ;
}
}
答案 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;