OpenCV函数记录(二)

缺乏、安全感 2022-06-03 05:49 302阅读 0赞

目录

  • 目录
  • 前言
  • OpenCV10 函数记录
  • OpenCV20 函数记录
  • 总结
  • 参考链接

前言

OpenCV函数记录(一)

OpenCV1.0 函数记录

  • cvInRangeS

    void cvInRangeS( const CvArr* src, CvScalar lower, CvScalar upper,

    1. CvArr* dst );

参数
src:源数组
lower:包括进的下边界
upper:不包括进的上边界
dst:输出数组必须是8u8s类型
参考cvInRangeS
参看OpenCV中inRange()函数的使用
输入的图像的像素如果在规定范围内,设置为1;否则设置为0。所有的数组必须有相同的大小。

CvScalar用于存放4个double数值的数组:

  1. typedef struct CvScalar
  2. {
  3.   double val[4];
  4.   }CvScalar;

举例

  1. cvScalar(255); // 存放单通道图像像素
  2. cvScalar(255,255,255); // 存放三通道图像像素
  3. cvRectangle( // 画一个矩形 myImg, // 在哪一幅图片中画矩形 cvPoint(5,10), // 矩形的左上角点 cvPoint(20,30), // 矩形的右下角点 cvScalar(255,255,255) // 表示矩形区域全白 );

参考CvScalar

  • cvAnd
    功能:把两种图像的像素进行与操作

    void cvAnd( // 将src1和src2按像素点取“位与运算”

    1. const CvArr* src1, // 第一个矩阵
    2. const CvArr* src2, // 第二个矩阵
    3. CvArr* dst, // 结果矩阵
    4. const CvArr* mask = NULL; // 矩阵经行像素点与的“开关”

    );

  • cvRectangle

    void cvRectangle(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color,

    1. int thickness=1, int line_type=8, int shift=0 )

    / 参数1:img 图像 参数2:pt1 矩形的一个顶点 参数3:pt2 矩形对角线上的另一个顶点 参数4:color 线条颜色(RGB)或亮度(灰度图像) 参数5:thickness 组成矩形的线条的粗细程度。取负值是(如CV_FILLED)函数绘制填充了色彩的矩形。 参数6:line_type 线条的类型 参数7:shift 坐标点的小数点位数 /

  • cvCreateMat

    CvMatcvCreateMat(int rows , int cols ,int type);
    /
    rows:矩阵行数 cols:矩阵列数 type:矩阵元素类型,通常以CV_<比特数>(S|U|F)C<通道数>形式描述 CV_8UC1:意思是一个8bit无符号单通道矩阵,CV_32SC2是一个32位有符号二通道矩阵 */

OpenCV2.0 函数记录

  • createTrackbar

    int createTrackbar(conststring& trackbarname, conststring& winname,

    1. int* value, int count, TrackbarCallback onChange=0,void* userdata=0);

    / 第一个参数,const string&类型的trackbarname,表示轨迹条的名字,用来代表我们创建的轨迹条。 第二个参数,const string&类型的winname,填窗口的名字,表示这个轨迹条会依附到哪个窗口上,即对应namedWindow()创建窗口时填的某一个窗口名。 第三个参数,int 类型的value,一个指向整型的指针,表示滑块的位置。并且在创建时,滑块的初始位置就是该变量当前的值。 第四个参数,int类型的count,表示滑块可以达到的最大位置的值。PS:滑块最小的位置的值始终为0。 第五个参数,TrackbarCallback类型的onChange,首先注意他有默认值0。这是一个指向回调函数的指针,每次滑块位置改变时,这个函数都会进行回调。并且这个函数的原型必须为void XXXX(int,void);其中第一个参数是轨迹条的位置,第二个参数是用户数据(看下面的第六个参数)。如果回调是NULL指针,表示没有回调函数的调用,仅第三个参数value有变化。 第六个参数,void类型的userdata,他也有默认值0。这个参数是用户传给回调函数的数据,用来处理轨迹条事件。如果使用的第三个参数value实参是全局变量的话,完全可以不去管这个userdata参数。 */

  • getTrackbarPos

    int getTrackbarPos(conststring& trackbarname, conststring& winname);
    / 第一个参数,const string&类型的trackbarname,表示轨迹条的名字。 第二个参数,const string&类型的winname,表示轨迹条的父窗口的名称。 /

滑动条是OpenCV动态调节参数的一种工具,它依附于窗口而存在。由于OpenCV中并没有实现按钮的功能,所以很多时候,我们还可以用仅含0-1滑动条来实现按钮的按下、弹起的效果。
createTrackbar函数为我们创建了一个具有特定名称和范围的轨迹条,指定一个和轨迹条位置同步的变量,而且要指定回调函数,在轨迹条位置改变的时候来调用这个回调函数。回调函数其实就是一个通过函数指针调用的函数。如果我们把函数的指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就称其为回调函数。回调函数不由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用,用于对该事件或条件进行响应。

  • mixChannels

    void mixChannels (const Mat src, int nsrc, Mat dst, int ndst,

    1. const int* fromTo, size_t npairs );

    / src:输入矩阵,可以为一个也可以为多个,但是矩阵必须有相同的大小和深度 nsrcs:输入矩阵个数 dst:输出矩阵,可以为一个也可以为多个,但是所有矩阵必须事先分配空间,大小和深度必须与输入矩阵相同 ndsts:输出矩阵的个数 fromTo: 设置输入矩阵的通道对应输出矩阵的通道,规则如下:首先用数字标记输入矩阵的各个通道。输入矩阵个数可能多于一个并且每个矩阵的通道可能不一样,第一个输入矩阵的通道标记范围为:0~src[0].channels()-1,第二个输入矩阵的通道标记范围为src[0].channels()~src[0].channels()+src[1].channels()-1,以此类推;其次输出矩阵也用同样的规则标记,第一个输出矩阵的通道标记范围为:0 ~dst[0].channels()-1,第二个输入矩阵的通道标记范围为:dst[0].channels()~ dst[0].channels()+dst[1].channels()-1,以此类推;最后,数组fromTo的第一个元素即fromTo[0]应该填入输入矩阵的某个通道标记,而fromTo的第二个元素即fromTo[1]应该填入输出矩阵的某个通道标记,这样函数就会把输入矩阵的fromTo[0]通道里面的数据复制给输出矩阵的fromTo[1]通道。fromTo后面的元素也是这个道理,总之就是一个输入矩阵的通道标记后面必须跟着个输出矩阵的通道标记。 npairs: 即参数fromTo中的有几组输入输出通道关系,其实就是参数fromTo的数组元素个数除以2. /

总结

对一些OpenCV函数进行整理,但是实际中并没有用到,所以先这样了!

参考链接

openCV学习笔记(7):cvRectangle与cv::rectangle的用法
【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整
OpenCV之mixChannels()函数使用说明

发表评论

表情:
评论列表 (有 0 条评论,302人围观)

还没有评论,来说两句吧...

相关阅读

    相关 opencv 计时函数

    opencv 计时 我们知道opencv中 有时候需要知道 算法的执行时间 ,来衡量算法的优劣性,那么opencv 怎样进行计时呢?opencv中主要用两个函数来进行计时操

    相关 opencv函数

    1.Mat中的构造函数 Mat是一个非常优秀的图像类,它同时也是一个通用的矩阵类,可以用来创建和操作多维矩阵。Mat类提供了一系列构造函数,可以方便的根据需要创建Mat对