目录
前言
一直在怼图像处理,自然离不开OpenCV
,也就是说经常遇到一些常用的OpenCV
函数,记录下,提高效率!
学习!分享!感谢!
OpenCV1.0.0函数
IplImage
origin
为0表示顶左结构,即图像的原点是左上角,如果为1为左下角。一般从硬盘读入的图片或者通过cvCreateImage
创建的IplImage
图片默认是origin
为0,即显示的时候都是正的。而由摄像头或者视频文件获取的帧图像origin
为1,此时显示的时候扫描顺序是从下到上,显示也是正的。cvSetImageROI
void cvSetImageROI( IplImage* image, CvRect rect );
大多数OpenCV
函数都支持ROI
,并将它作为一个独立图像进行处理,所有像素坐标都是从ROI
的左上角或则左下角(基于图像结构)开始计算的。
IplImage *img=cvLoadImage("test.jpg");
cvSetImageROI(img, cvRect(100, 100, 50, 50)); //设置img的ROI区域
之后显示img
图像只显示ROI
标识的一部分,即改变了指针img
,但是它仍然保留有原来图像的信息,在执行cvResetImageROI(img);
之后,img
指向原来的图像信息。
以上参考【opencv学习笔记】SetImageROI函数设置ROI区域的作用及用法
cvResize
void cvResize(const CvArr* src, CvArr* dst, int
interpolation=CV_INTER_LINEAR );
src
:输入图像.
dst
:输出图像.
函数cvResize
将图像src
的尺寸设置为dst
。若设定ROI
,函数将按常规支持ROI
。
cvAvgSdv
功能:求像素平均值和标准差
cvAvgSdv(const CvArr *arr, CvScalar *mean, CvScalar *std_dev, const
CvArr *mask = _null)
arr
:图像输入数组
mean
:图像像素值平均值,最多可存放四通道的平均值
std_dev
: 图像标准差
mask
: 像素开关
参考学习opencv》笔记——矩阵和图像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv
cvCreateTrackbar
int cvCreateTrackbar(
const char* trackbar_name,const char* window_name,
int* value, int count, CvTrackbarCallback on_change
);
trackbar_name
:滑动条名称
window_name
:窗口名称
value
:当滑动条被拖动时,OpenCV自动将当前位置所代表的值传给指针指向的整数
count
:滑动条所能达到的最大值
on_change
:可选的回调函数
例:
cvCreateTrackbar( "Vmin", "CamShiftWindow", &adjVmin, 256, 0 );
//读取value值
int cvGetTrackbarPos(
const char* trackbar_name,
cosnt char* window_name
);
//设置value值
void cvSetTrackbarPos(
const char* trackbar_name,
const char* window_name,
int pos
);
参考openCV学习笔记(2)–cvCreateTrackbar
cvFlip
void cvFlip( const CvArr* src, CvArr* dst=NULL, int flip_mode=0);
flip_mode
:
=0, 图像绕X轴旋转
0, 图像绕Y轴旋转
<0, 图像绕X轴和Y轴旋转
cvFZero
void cvZero(CvArr* arr);
功能:将图像中的每个像素都设置为0。
cvCopy
功能:拷贝一个数组到另一个数组,注意dst
数组的内存要事先开辟。
void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL );
src
:输入数组
dst
:输出数组
参考cvClone 和 cvCopy函数的区别
cvSplit
void cvSplit(const CvArr* src, CvArr* dst0, CvArr* dst1, CvArr*
dst2, CvArr* dst3)
注意:src
是源图像,dst0~dst3
是分离出单通道图像。注意:输入图像的图像格式,比如如果是BGR
,就应该按照BGR
的方式获取分离的图像。
HSV
中颜色空间中:Hue
(色相),是色彩的基本属性;Saturation
(饱和度),是指色彩的纯度,纯度越高,色彩越纯,低则逐渐变灰,取0~100%的数值;Value
(亮度)。
H: 0~180 S: 0~255 V: 0~255
参考OpenCV 自学笔记21. RGB色彩空间和HSV色彩空间的理解
阈值化:在对各种图形进行处理操作的过程中,对图像中的像素做出取舍和决策,直接剔除一些低于或者高于一定值的像素。阈值可以被视作最简单的图像分割方法,比如,从一幅图像中利用阈值分割出我们需要的物体部分。这样的图像分割基于图像中物体与背景之间的灰度差异,此分割属于像素级分割。为了从一幅图像中提取出我们需要的部分,应该用图像中的每一个像素点的灰度值与选取的阈值进行比较,并作出相应的判断。注意:阈值的选取依赖于具体的问题。即物体在不同的图像中有可能会有不同的灰度值。
一旦找到需要分割的物体的像素点,可以对这些像素点设定一些特定的值来表示。例如,设置需要分割的物体的灰度值为0(黑色),其他像素点为255(白色)。当然像素点的灰度值可以任意,但最好设定两种颜色对比度较强的颜色。
总结
都是前人的东西,作为初学的菜鸟,只能是摘录部分,理解,希望以后贡献真正属于自己的东西,以后的文章都改为译文。