您的位置:首页 > 运维架构

学习opencv第二章函数

2011-08-15 20:56 288 查看
第二章:

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

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: