OpenCV函数记录(二)

目录

前言

OpenCV函数记录(一)

OpenCV1.0 函数记录

  • cvInRangeS
void cvInRangeS( const CvArr* src, CvScalar lower, CvScalar upper, 
                CvArr* dst );

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

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

typedef struct CvScalar
{
  double val[4];
  }CvScalar;

举例

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

参考CvScalar

  • cvAnd
    功能:把两种图像的像素进行与操作
void cvAnd(             // 将src1和src2按像素点取“位与运算”  
    const CvArr* src1,  // 第一个矩阵  
    const CvArr* src2,  // 第二个矩阵  
    CvArr* dst,         // 结果矩阵  
    const CvArr* mask = NULL; // 矩阵经行像素点与的“开关”  
);
  • cvRectangle
void cvRectangle(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, 
                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
CvMat*cvCreateMat(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,  
    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,    
                   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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值