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()。

猜你喜欢

转载自blog.csdn.net/MRxjh/article/details/84139210