1. 程式人生 > >opencv 常用函式(c++)

opencv 常用函式(c++)

1.建立滑動條

int creatTrackbar(conststring& trackbarname, conststrint& winname,
    int* value, int count, TrackbarCallback onChange=0, void* userdata=0);

含義:trackbarname 為軌跡條名,winname 為視窗名,value 為滑塊初始位置,count 為滑塊最大位置(最小位置為0),onChange 為指向回撥函式的指標,回撥函式原型為 void XXX(int, void*),前者是軌跡條位置,後者為使用者資料,userdata 為使用者傳給回撥函式的資料,用來處理軌跡條事。

獲取當前軌跡條位置:

int getTrackbarPos(conststring& trackbarname, conststring& winname);

2.滑鼠操作

void setMouseCallBack(conststring& winname, MouseCallback onMouse, void* userdata=0)

含義:winname視窗名,onMouse 滑鼠事件發生時呼叫的函式指標,原型大概為 void Foo(int event, int x, int y, int flags, void* param),其中 event 是 EVENT_+ 變數之一,x 和 y 是滑鼠指標再影象的座標系,flags 是 EVENT_FLAG 的組合,param是使用者傳遞給 SetMouseCallback 函式呼叫的引數,如EVENT_MOUSEMOVE 為滑鼠移動等

3.影象線性混合:

void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, 
double gamma, OutputArray dst, int dtype=-1)

含義: dst = src1[I] * alpha + src2[I] * beta + gamma

4.通道分離

void split(const Mat& src, Mat*mvbegin);
void split(InputArray m, OutputArrayOfArrays mv);

含義:src 和 m 是進行分離的多通道陣列, mvbegin 和 mv 函式的輸出陣列或vector函式。

5.通道合併

void merge(const Mat* mv, size_tcount, OutputArray dst);
void merge(InputArrayOfArrays mv, OutputArray dst)

含義:mv 是輸入的需要被合併的輸入矩陣或容器 vector 的陣列,count 為 mv 為空陣列時輸入矩陣的個數,dst 為輸出矩陣。

6.離散傅立葉變換

void dft(InputArray src, OutputArray dst, int flags=0, int nonzerosRows=0)

含義:src 為輸入矩陣,dst 為輸出結果,flags 為轉換識別符號,預設為0,nonezerosRows 預設值為0,為非0時,函式會假設只有輸入矩陣的第一個非零行包含非零元素,或只輸出矩陣的第一個非零行包含非零元素。

相關函式:

(1) 返回DFT最有尺寸大小

int getOptimalDFTSize(int vecsize)

vecsize 為向量尺寸,即圖片的rows、cols。

(2) 擴充影象邊界

void copyMakeBorder(InputArray src, OutputArray dst, int top, int bottom, int left, int right, int borderType, const Scalar& value=Scalar())

src 為輸入影象,dst 為擴充套件後圖像,尺寸為 (src.cols+left+right, src.rows+top+bootom),之後4個為拓展的畫素,boderType 為邊界型別,常取值為BODER_CONSTANT,最後一個可理解為預設值為0。

(3) 計算二維向量

void magnitude(InputArray x, InputArray y, OutputArray magnitude)

(4) 矩陣歸一化

void normalize(InputArray src, OutputArray dst, double alpha=1, double beta=0, 
             int norm_type=NORM_L2, int type=-1, InputArray mask=noArray())

alpha 為歸一化後最大值,預設為1,beta 歸一化後最小值,預設為0,norm_type 歸一化型別,dtype 預設值為-1,此時 dst 和 src 有同樣型別,mask 可選的操作掩膜,預設值noArray()。