重對映就是把一幅圖中某個畫素放置到另乙個指定的位置;為此需要知道對映關係:
g(x,y) = f(h(x,y))
g(x,y)是目標影象,f(x,y)是原影象,h(x,y)是作用於(x,y)的對映方法函式。
其中重對映主要通過操作影象畫素點完成。
基本重對映例項如下:
// opencv_1.cpp : 定義控制台應用程式的入口點。
#include "stdafx.h"
#include#include#includeusing namespace cv;
using namespace std;
int main()
} //重對映操作
remap(srcimage, dstimage, map_x, map_y, inter_linear, border_constant, scalar(0, 0, 0));
imshow("【程式視窗】", dstimage);
while ((char)waitkey(1) != 'q') {}
return 0;
}
效果圖:
綜合示例,通過鍵盤實現不同方式重對映:
// opencv_1.cpp : 定義控制台應用程式的入口點。
#include "stdafx.h"
#include#include#includeusing namespace cv;
using namespace std;
mat g_srcimage, g_dstimage;
mat g_map_x, g_map_y;
int update_map(int key);
void showhelptext();
int main()
update_map(key);
remap(g_srcimage, g_dstimage, g_map_x, g_map_y, inter_linear,
border_constant, scalar(0, 0, 0));
imshow("【程式視窗】", g_dstimage);
} return 0;
}int update_map(int key) else
break;
case'2':
g_map_x.at(j, i) = static_cast(i);
g_map_y.at(j, i) = static_cast(g_srcimage.rows - j);
break;
case'3':
g_map_x.at(j, i) = static_cast(g_srcimage.rows - i);
g_map_y.at(j, i) = static_cast(j);
break;
case'4':
g_map_x.at(j, i) = static_cast(g_srcimage.rows - i);
g_map_y.at(j, i) = static_cast(g_srcimage.rows - j);
break;
}} }
return 1;
}void showhelptext()
效果圖:
openCv之畫素重對映
畫素重對映的簡單變換知識 備註 1.在上圖a中,縮小一半放在中心可理解為 在乙個4x4的矩陣中,只在中間兩格區域內填畫素,並且,中間部分畫素採用隔乙個格仔取乙個畫素,既如果原來畫素座標取為 1,1 1,2 1,3 dst的畫素則變成 1,1 1,3 1,5 1,2n 1 2.很多網上例程說a後面加0...
Opencv學習筆記 7 畫素重對映
本章我將為大家介紹opencv中的畫素重對映操作。簡單點說就是把輸入影象中各個畫素按照一定的規則對映到另外一張影象的對應位置上去,形成一張新的影象。輸入影象 outputarray dst,輸出影象 inputarray map1,x 對映表 cv 32fc1 cv 32fc2 inputarray...
OpenCV 重對映 仿射變換
通過重對映來表達每個畫素的位置 x,y g x,y f h x,y 這裡 g 是目標影象,f 是源影象,h x,y 是作用於 x,y 的對映方法函式.想象一下我們有乙個影象 i 我們想滿足下面的條件作重對映 h x,y i.cols x,y 影象會按照 x 軸方向發生翻轉.map x.create ...