OpenCV基本函数用法

Mat类:

是用于保存图像以及其他矩阵数据的数据结构。

图像载入函数imread():

Mat imread(const string& filename, int flags=1);

  • filename表示图像载入的路径;
  • flags为载入标识。
    • flags=0 将图像转换为灰度再返回;
    • flags=1 将图像转换成彩色再返回;
    • flags=2 若载入图像的深度是16位或者32位,就返回对应的图像深度,否则,将图像转换为8位图像再返回。
    • flags=2|4 载入最真实无损的源图像
      若flags不在枚举类型当中,flags>0 返回一个三通道的彩色图像;flags=0 返回灰度图像;flags<0 返回包含Alpha通道的加载图像。

图像显示函数imshow():

void imshow(const string& winname, InputArray mat);

  • winname填写要显示的窗口标识名称;
  • mat填需要显示的图像。

输出图像到文件imwrite():

bool imwrite(const string& filename, InputArray img, const vector& params=vector());

  • 第一个参数filename表示要写入的文件名
  • 第二个参数img表示Mat类型的图像数据

创建窗口函数namedWindow():

void nameWindow(const string& winname, int flags=WINDOW_AUTOSIZE);

通过指定的名字,创建一个可以作为图像和进度条的容器窗口。如果具有相同名称的窗口已经存在,则函数不做任何事情;

  • winname填写被用作窗口的标识符的窗口名称
  • flags是窗口的标识。
    • flags=WINDOW_NORMAL 用户可以改变窗口的大小;
    • flags=WINDOW_AUTOSIZE 窗口会自动调整以适应 所显示的图像,并且用户不能手动改变窗口的大小。

namedWindow()函数一般有默认值WINDOW_AUTOSIZE,所以这个函数填写一个变量就行了。

滚动条得到创建和使用createTrackbar()函数getTrackbarPos()函数:

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

  • 第一个参数trackbarname表示轨迹条的名字;
  • 第二个参数winname表示轨迹条所在窗口的名字;
  • 第三个参数value表示滑块当前的位置;
  • 第四个参数count表示滑块合一到达的最大位置, 滑块的最小位置始终为0;
  • 第五个参数onChange表示指向回调函数的指针,每次滑块位置改变的时候,这个函数都会进行回调。并且 这个函数的 原型必须为void XXXX(int, void*);其中第一个参数是轨迹条的位置,第二个参数是用户数据。如果回调是NULL指针,则表示没有回调函数的调用;
  • 第六个参数userdata表示用户传给回调函数的数据,用来处理轨迹条事件。有默认值为0。

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

  • 第一个参数trackbarname表示 轨迹条的名字;
  • 第二个参数winname表示轨迹条的父类窗口的名称。

感兴趣区域ROI(region of interest):

方法一:Mat imageROI=image(Rect(500, 250, logo.cols, logo.rows));
方法二:Mat imageROI=image(Range(250,250+logo.rows), Range(500, 500+logo.cols));

计算数组加权和addWeighted()函数:

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

  • 第一个参数src1表示需要加权的第一个数组, 通常填写一个Mat;
  • 第二个参数alpha表示第一个数组的权重;
  • 第三个参数src2表示需要加权的第二个数组,他需要和第一个数组 具有相同的尺寸和通道数;
  • 第四个参数beta表示第二个数组的权重;
  • 第五个参数gamma表示一个加到权重总和上的标量值,通常写的都是0.0;
  • 第六个参数dst表示输出的数组,它和输入的两个数组拥有相同的 尺寸和通道数;
  • 第七个参数type表示输出阵列的可选深度,通常为默认值type=-1。

颜色空间转换ctvColor()函数:

void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0);

  • 第一个参数src表示输入图像;
  • 第二个参数dst表示输出图像;
  • 第三个参数code表示颜色空间转换的标识符;
  • 第四个参数dstCn表示为目标图像的通道数,有默认值dstCn=0,表示目标图像取源图像的通道数。

通道分离split()函数;

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

  • 第一个参数表示需要进行分离的多通道数组;
  • 第二个参数表示函数 输出数组或输出的vector容器。

通道合并merge()函数:

void merge(const Mat* mv, size_t count, OutputArray dst)
void merge(InputArrayOfArray mv, OutputArray dst);

  • 第一个参数mv表示需要被合并的输入矩阵或vector容器的阵列,mv参数中所有矩阵必须拥有一样的尺寸;
  • 第二个参数count表示当mv为空白的C数组时,代表输入矩阵的个数,通常可以省略不写;
  • 第三个参数dst表示输出矩阵,和mv拥有一样的尺寸和深度

你可能感兴趣的:(图形图形,OpenCV)