畫素重對映的簡單變換知識:
備註:**1.**在上圖a中,縮小一半放在中心可理解為;在乙個4x4的矩陣中,只在中間兩格區域內填畫素,並且,中間部分畫素採用隔乙個格仔取乙個畫素,既如果原來畫素座標取為(1,1)(1,2)(1,3)…dst的畫素則變成(1,1)(1,3)(1,5)…(1,2n+1)…。
2.很多網上例程說a後面加0.5或者-1等,我的例程不加也沒有影響,應該是和每個人選取的大小格式等有關。
相關程式
#include 「stdafx.h」
//本節講述 影象處理之 畫素重對映;
#include
#include
#include
using namespace std;
using namespace cv;
mat src, dst,map_x,map_y, gray_src;
int index = 0;
void update_map(void);
const char*output_title = 「canny雙閾值處理」;
char input_title = 「原圖」;
int main(int argc, char**ar**)
namedwindow(input_title, cv_window_autosize);
imshow(input_title, src);
map_x.create(src.size(),cv_32fc1); 代表目標影象的某畫素的x座標
map_y.create(src.size(), cv_32fc1); //代表目標影象的某畫素的y座標
int c = 0;
while (true)
index = c % 4;
update_map();
remap(src, dst, map_x, map_y, inter_linear, border_constant, scalar(0, 255, 255));
imshow("結果圖", dst);
}index = c % 4;
update_map();
remap(src, dst, map_x, map_y, inter_linear, border_constant, scalar(0, 255, 255));
imshow("結果圖", dst);
waitkey(0);
destroyallwindows();
return 0;
}
void update_map(void)
else
break;
case 1:
map_x.at(row, col) = src.cols-col-1;
map_y.at(row, col) = row;
break;
case 2:
map_x.at(row, col) = col;
map_y.at(row, col) = src.rows - row - 1;
break;
case 3:
map_x.at(row, col) = src.cols - col - 1;
map_y.at(row, col) = src.rows - row - 1;
break;}}
}
結果驗證
OpenCV17 畫素重對映
簡單點說就是把輸入影象中各個畫素按照一定的規則對映到另外一張影象的對應位置上去,形成一張新的影象。remap inputarray src,輸入影象 outputarray dst,輸出影象 inputarray map1,x 對映表 cv 32fc1 cv 32fc2 inputarray map...
畫素重對映
簡單點說就是把輸入影象中各個畫素按照一定的規則對映到另外一張影象的對應位置上去,形成一張新的影象 g x,y 是重對映之後的影象,h x,y 是功能函式,f是源影象。通過對映可以重新改變生成新的,例如左右,上下變換,影象倒置等一些的操作。水平映象的功能函式為 left left right x b ...
Opencv學習筆記 7 畫素重對映
本章我將為大家介紹opencv中的畫素重對映操作。簡單點說就是把輸入影象中各個畫素按照一定的規則對映到另外一張影象的對應位置上去,形成一張新的影象。輸入影象 outputarray dst,輸出影象 inputarray map1,x 對映表 cv 32fc1 cv 32fc2 inputarray...