您好,登錄后才能下訂單哦!
OpenCV中什么萬達(dá)平臺(tái)搭建論壇:haozbbs.com Q1446595067 是重映射就不贅述了,主要是對(duì)源碼中map_x,map_y有些疑惑,圖像是如何進(jìn)行重映射的呢?
上下變換的部分源碼:
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內(nèi)的值輸入后,大概知道了。
假設(shè)對(duì)一張10*10的圖片進(jìn)行上下重映射,
根據(jù) map_x.at<float>(i, j) = static_cast<float>(j); map_x作用是記錄列坐標(biāo),
根據(jù) map_y.at<float>(i, j) = static_cast<float>(srcimg.rows- i); map_y作用是記錄行坐標(biāo)。
輸出map_x,map_y:
map_x:
map_y:
我們可以看到,在x方向從左到右逐漸增大排列,在y方向上到下減小排列,
將map_y,map_x組合,以坐標(biāo)形式輸出,則結(jié)果為
而原圖的坐標(biāo)為:
對(duì)比發(fā)現(xiàn),原圖坐標(biāo)和map_y,map_x組合坐標(biāo)發(fā)生了上下翻轉(zhuǎn)。
然后根據(jù)坐標(biāo),把原圖坐標(biāo)對(duì)應(yīng)的像素點(diǎn)一一映射到轉(zhuǎn)換圖上,就是上下翻轉(zhuǎn)變換后的圖像,這也是圖片重映射的原理
其他的變換應(yīng)該同理。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。