OpenCV学习笔记之七

函数目录:

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 结果是二值图
elsedst(x,y) = max_value

CV_THRESH_TRUNC: if  src(x,y)>threshold,dst(x,y) = max_value 结果是灰度图
elsedst(x,y) = src(x,y)

CV_THRESH_TOZERO: if src(x,y)>threshold,dst(x,y) = src(x,y) 
elsedst(x,y) = 0
CV_THRESH_TOZERO_INV: if  src(x,y)>threshold,dst(x,y) = 0
elsedst(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
					}
				}














你可能感兴趣的:(OpenCV学习笔记之七)