学习opencv第二章函数

第二章:

  • 创建,销毁窗口,显示图像

CVAPI(int) cvNamedWindow( const char* name, int flags CV_DEFAULT(CV_WINDOW_AUTOSIZE) );  //name为创建窗口名,标识符。

CVAPI(void) cvDestroyWindow( const char* name );  //

flags为窗口的属性:一般为 CV_WINDOW_AUTOSIZE,会根据显示的内容,自动调节窗口大小

CVAPI(int) cvCreateTrackbar( const char* trackbar_name, const char* window_name,int* value, int count, CvTrackbarCallback on_change);//创建一个滑块

window_name指定在哪个窗口上创建,value表示滑块的数据交换对象(实时指示滑块位置),count表示滑块的总步长,on_change回调函数 (声明格式为:

void OnTrackbarSlide(int pos) ;表示滑块被拖动后,由系统调用的处理函数) 

CVAPI(void) cvSetTrackbarPos( const char* trackbar_name, const char* window_name, int pos ); //设置滑块的位置


  • 从捕获,释放图像流

CVAPI(CvCapture*) cvCreateFileCapture( const char* filename ); //从文件filename中创建图像流

CVAPI(CvCapture*) cvCreateCameraCapture( int index ); //从摄像机捕获视频流(帧),index用于区分哪个摄像机 

CVAPI(CvVideoWriter*) cvCreateVideoWriter( const char* filename, int fourcc,double fps, CvSize frame_size,int is_color CV_DEFAULT(1)); //创建一个AVI写入器

CVAPI(void) cvReleaseVideoWriter( CvVideoWriter** writer ); //关闭AVI视频写入器.

CVAPI(double) cvGetCaptureProperty( CvCapture* capture, int property_id ); //获取图像流的属性

CVAPI(int)    cvSetCaptureProperty( CvCapture* capture, int property_id, double value ); // 设置图像流的属性

CVAPI(IplImage*) cvQueryFrame( CvCapture* capture ); // 从图像流中获取一幅图像 , 不用自己cvReleaseImage 

CVAPI(void) cvReleaseCapture( CvCapture** capture ); // release 


其中 : property_id:

#define CV_CAP_PROP_POS_MSEC       0      //?
#define CV_CAP_PROP_POS_FRAMES     1    //当前帧的位置
#define CV_CAP_PROP_POS_AVI_RATIO  2  //
#define CV_CAP_PROP_FRAME_WIDTH    3   //帧宽度
#define CV_CAP_PROP_FRAME_HEIGHT   4 //帧高度
#define CV_CAP_PROP_FPS            5              //帧率
#define CV_CAP_PROP_FOURCC         6          
#define CV_CAP_PROP_FRAME_COUNT    7    //总共的帧数
#define CV_CAP_PROP_FORMAT         8            //格式
#define CV_CAP_PROP_MODE           9          
#define CV_CAP_PROP_BRIGHTNESS    10
#define CV_CAP_PROP_CONTRAST      11     
#define CV_CAP_PROP_SATURATION    12   
#define CV_CAP_PROP_HUE           13    
#define CV_CAP_PROP_GAIN          14          
#define CV_CAP_PROP_EXPOSURE      15    
#define CV_CAP_PROP_CONVERT_RGB   16    
#define CV_CAP_PROP_WHITE_BALANCE 17
#define CV_CAP_PROP_RECTIFICATION


  • 创建,显示图像
CVAPI(void) cvShowImage( const char* name, const CvArr* image ); //在指定的name窗口中显示图像

CVAPI(void) cvReleaseImage( IplImage** image );      //释放图像数据,image指针会被函数置为NULL

CVAPI(CvSize) cvGetSize( const CvArr* arr ); //arr 可为 IplImage, 获取大小

CVAPI(IplImage*) cvCreateImage( CvSize size, int depth, int channels );   //创建一个图像结构, size为图像大小,depth为图像bit位大小, channels 为 几通首

depth可为:

#define IPL_DEPTH_1U     1    //1比特表示
#define IPL_DEPTH_8U     8  //1字节(无符号数)
#define IPL_DEPTH_16U   16   //2字节无符号数
#define IPL_DEPTH_32F   32   //4字节浮点数

channels指颜色通道。如RGB彩色图像由3个分量表示 ,故用3通道存储 ;  灰度图像1通道数

CVAPI(void)  cvCvtColor( const CvArr* src, CvArr* dst, int code ); //转换图像的颜色

code可为,一般用到: 

#define  CV_RGB2GRAY    7  //RGB转灰度
#define  CV_RGB2XYZ     33  //?
#define  CV_XYZ2RGB     35
#define  CV_RGB2YCrCb   37
#define  CV_YCrCb2RGB   39
#define  CV_RGB2HSV     41
#define  CV_RGB2Lab     45
#define  CV_HSV2RGB     55

  • 键盘输入相关
CVAPI(int) cvWaitKey(int delay CV_DEFAULT(0)); //等待键盘输入 

delay表示等待时间 ,。默认为0时表示,程序一直等待直到有按键输入为止,返回值为键的ASCII码值。若不为0,则等待最多delay (ms)



  • 滤波函数

CVAPI(void) cvSmooth( const CvArr* src, CvArr* dst, int smoothtype CV_DEFAULT(CV_GAUSSIAN), int size1 CV_DEFAULT(3), int size2 CV_DEFAULT(0), double sigma1 CV_DEFAULT(0), double sigma2 CV_DEFAULT(0));   //平滑图像 

in 为输入 ,out为已分配好内存的参数

CVAPI(void)  cvPyrDown( const CvArr* src, CvArr* dst,  int filter CV_DEFAULT(CV_GAUSSIAN_5x5) ); //先对其用filter进行滤波,然后进行下采样(输出图像宽,高为原来的一半..若宽度为奇数,则返回的图像可以是width/2 或者width /2 +1 ;对于高也一样);    src和dst的depth相同,通道数也相同

CVAPI(void)  cvCanny( const CvArr* image, CvArr* edges, double threshold1,double threshold2, int  aperture_size CV_DEFAULT(3) ); //canny边缘检测

输入入图像image必须为单通道图像,输出图像也为单通道图像 。 depth相同  即输入为灰度8U时,edges也应该为单通道8U 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值