您好,登錄后才能下訂單哦!
OpenCV中什么萬達平臺搭建論壇:haozbbs.com Q1446595067 是重映射就不贅述了,主要是對源碼中map_x,map_y有些疑惑,圖像是如何進行重映射的呢?
上下變換的部分源碼:
Mat map_x, map_y;
map_x.create(srcimg.size(), CV_32FC1);
map_y.create(srcimg.size(), CV_32FC1);
for (int i=0;i<srcimg.rows;i++)
{
for (int j=0;j<srcimg.cols;j++)
{
map_x.at<float>(i, j) = static_cast<float>(j);
map_y.at<float>(i, j) = static_cast<float>(srcimg.rows- i);
}
}
開始看老半天不理解重映射原理,后來把map_x,map_y內的值輸入后,大概知道了。
假設對一張10*10的圖片進行上下重映射,
根據 map_x.at<float>(i, j) = static_cast<float>(j); map_x作用是記錄列坐標,
根據 map_y.at<float>(i, j) = static_cast<float>(srcimg.rows- i); map_y作用是記錄行坐標。
輸出map_x,map_y:
map_x:
map_y:
我們可以看到,在x方向從左到右逐漸增大排列,在y方向上到下減小排列,
將map_y,map_x組合,以坐標形式輸出,則結果為
而原圖的坐標為:
對比發現,原圖坐標和map_y,map_x組合坐標發生了上下翻轉。
然后根據坐標,把原圖坐標對應的像素點一一映射到轉換圖上,就是上下翻轉變換后的圖像,這也是圖片重映射的原理
其他的變換應該同理。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。