第二章:
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) 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
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