函数目录:
1.cvLoadImage
1.cvLoadImage
IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );
第二个参数 flags 的选择有三个,CV_LOAD_IMAGE_COLOR 默认(1),以三通道彩色图像显示。原图若是GARY,原来的某点像素值,复制到BGR中
CV_LOAD_IMAGE_GRAYSCALE (0)以单通道图像显示,加载。相当于做了cvCvtColor BGR2GARY。
CV_LOAD_IMAGE_ANYCOLOR (-1)按照图像本身的通道数来显示。
2.cvCvtColor
是Opencv里的颜色空间转换函数
void cvCvtColor( const CvArr* src, CvArr* dst, int code );
注意,无返回值!
src 输入图像
dst 输出图像
code 转化类型,可选则参数有 CV_BGR2GRAY 注意匹配图像的通道数(3通转1通)
CV_BGR2HSV 对于8位图,需要将RGB值归一化到0-1之间。这样得到HSV图中的H范围才是0-360,S和V的范围是0-1。
等。
3.cvCanny
canny算法,边缘检测。
void cvCanny( const CvArr* image,CvArr* edges,double threshold1,double threshold2, int aperture_size=3 );
注意,无返回值!
image 输入要处理的图,单通道。多通道要使用cvCvtcolor转化
edges 输出处理结果,单通道。
threshold1 (50)
threshold2 (150)这两个阈值当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。一般可以取()中值。
算法原理:
http://blog.csdn.net/likezhaobin/article/details/6892176
4.cvThreshold
void cvThreshold
( const CvArr* src,
CvArr* dst,
double threshold,
double max_value,
int threshold_type );
对单通道数组应用固定阈值操作
src 输入图像 ,单通道,8-bit of 32-bit 浮点数
dst 输出图像,必须与 src 的类型一致
double threshold 阈值
max_value
threshold_type 的可选项:CV_THRESH_BINARY :if src(x,y)>threshold ,
dst(x,y) = max_value 结果是二值图
esle
,
dst(x,y)=0
CV_THRESH_BINARY_INV:ifsrc(x,y)>threshold,dst(x,y) = 0 结果是二值图
else,dst(x,y) = max_value
CV_THRESH_TRUNC: if src(x,y)>threshold,dst(x,y) = max_value 结果是灰度图
else,dst(x,y) = src(x,y)
CV_THRESH_TOZERO: if src(x,y)>threshold,dst(x,y) = src(x,y)
else,dst(x,y) = 0
CV_THRESH_TOZERO_INV: if src(x,y)>threshold,dst(x,y) = 0
else,dst(x,y) = src(x,y).
5.cvAbsDiff
计算两个数组差的绝对值
void cvAbsDiff( const CvArr* src1, const CvArr* src2, CvArr* dst );
src 输入图像 ,单通道,8-bit of 32-bit 浮点数
dst 输出图像,必须与 src 的类型一致
dst = abs( src1 - src2 ).
所有数组
必须有相同的数据类型
or 相同的大小(或ROI大小)
//可以用于简单的背景减除
cvAbsDiff(src,src_background,dst);
cvThreshold(dst,dst,100,255,CV_THRESH_BINARY);//和背景图比较,有超过100的像素值跳变就认为是前景,未达到100认为是背景。
6.cvSmooth
void cvSmooth( const CvArr* src, CvArr* dst, int smoothtype=CV_GAUSSIAN, int param1=3, int param2=0, double param3=0 ,double param4=0);
用于各种方式的滤波,类型由smoothtype决定
src:输入图像
dst:输出图像.
smoothtype: 平滑类型选择 CV_BLUR_NO_SCALE
7.cvNameWindow
int cvNamedWindow( const char* name, int flags=CV_WINDOW_AUTOSIZE );
CV_WINDOW_AUTOSIZE ( 1 ) : window更具摄像头返回图像的大小自动设定窗口大小,不可鼠标拉动改变。
( 0 ) : 可以拖动鼠标改变窗口的大小,图像适应窗口大小。
8.图像某点像素的访问方式
for(y=0;y<5;++y)
{
for(x = 0; x<100;++x)
{
if( ((uchar *)(frame_gray->imageData + y*frame_gray->widthStep))[x] == 255)//白点
k = k & 1;// always set 1
else
k = k & 0;// set 0 and quit
}
}