基本函数的使用

    1. cvSetCaptureProperty

设置视频获取属性,  函数cvSetCaptureProperty设置指定视频获取的属性。目前这个函数对视频文件只支持: CV_CAP_PROP_POS_MSEC, CV_CAP_PROP_POS_FRAMES, CV_CAP_PROP_POS_AVI_RATIO
int cvSetCaptureProperty( CvCapture* capture, int property_id, double value );
其中的参数含义如下:
capture 视频获取结构。
property_id 属性标识符。可以是下面之一:
CV_CAP_PROP_POS_MSEC - 从文件开始的位置,单位为毫秒
CV_CAP_PROP_POS_FRAMES - 单位为帧数的位置(只对视频文件有效)
CV_CAP_PROP_POS_AVI_RATIO - 视频文件的相对位置(0 - 影片的开始,1 - 影片的结尾)
CV_CAP_PROP_FRAME_WIDTH -  视频流 的帧宽度(只对摄像头有效)
CV_CAP_PROP_FRAME_HEIGHT -  视频流 的帧高度(只对摄像头有效)
CV_CAP_PROP_FPS - 帧率(只对摄像头有效)
CV_CAP_PROP_FOURCC - 表示codec的四个字符(只对摄像头有效)
value 属性的值。
2.  cvGetCaptureProperty 
double cvGetCaptureProperty ( CvCapture* capture, int property_id );  //capture 视频获取结构,  property_id 属性标识。

OpenCV中属性的一些宏定义:

 #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 18

  注意:

通过创建一个Capture对象的指针后,调用 cvGetCaptureProperty 即可获取上述任何相关属性;但是我们不能太依赖这个函数;比如我们想获取一段视频的帧数,我们就不能太依赖于CV_CAP_PROP_FRAME_COUNT这个属性;因为 cvGetCaptureProperty 对属性的访问,其实访问的是关联视频文件的文件头信息,并不是真正去访问了视频的图像数据,这就带来一个问题:我们在讲其他视频格式转换为 AVI 格式的时候,图像帧数并没改变,只是视频文件头改变了,这时直接通过get函数读取的信息就可能不准确;最好的办法是迭代从视频中取出一帧,检查是否有数据,来确定该视频文件的总共帧数。

       3. cvCreateTrackbar
该函数为开放计算机视觉(OpenCV)库库函数,创建trackbar(滑动条)并将它添加到指定的窗口。
定义:
CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) );
int cvCreateTrackbar( const char* trackbar_name, const char* window_name, int* value, int count, CvTrackbarCallback on_change );
参数:
trackbar_name 被创建的trackbar名字。
window_name 窗口名字,这个窗口将为被创建trackbar的父对象。
value 整数 指针,它的值将反映滑块的位置。这个变量指定创建时的滑块位置。
count 滑块位置的最大值。最小值一直是0。
on_change 每次滑块位置被改变的时候, 被调用函数指针。这个函数应该被声明为void Foo(int); 如果没有 回调函数这个值可以设为NULL。
函数cvCreateTrackbar用指定的名字和范围来创建trackbar(滑块或者范围控制),指定与trackbar位置同步的变量,并且指定当trackbar位置被改变的时候调用的 回调函数
被创建的trackbar默认显示在指定窗口的顶端,可以通过函数 cvGetTrackbarPos来获取trackbar显示的位置信息,以及通过函数cvSetTrackbarPos来重新设置trackbar的显示位置。 
    
cvGetTrackbarPos
    该函数为开放计算机视觉(OpenCV)库中 库函数 ,用来获取trackbar的位置。
    定义:
    int cvGetTrackbarPos( const char* trackbar_name, const char* window_name );
    参数:
    trackbar_name  trackbar的名字
    window_name  trackbar父窗口的名字
    函数cvGetTrackbarPos返回指定trackbar的当前位置
4. cvCreateVideoWriter
函数cvCreateVideoWriter 创建视频写入器结构。
typedef struct CvVideoWriter CvVideoWriter;
CvVideoWriter* cvCreateVideoWriter ( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 );
其中,各参数意义如下:filename 输出视频文件名。
fourcc为 四个字符,用来表示压缩帧的codec 例如:
CV_FOURCC('P','I','M','1') = MPEG-1 codec
CV_FOURCC('M','J','P','G') = motion-jpeg codec
CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
CV_FOURCC('U', '2', '6', '3') = H263 codec
CV_FOURCC('I', '2', '6', '3') = H263I codec
CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec
若编码器代号为 -1,则运行时会弹出一个编码器选择框.
fps 被创建视频流的帧率。
frame_size 视频流的大小。
is_color 如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在Windows下支持这个标志)。

5. cvLogPolar
此函数模仿人类视网膜中央凹视力,并且对于目标跟踪等可用于快速尺度和旋转变换不变模板匹配。
void cvLogPolar( const CvArr* src, CvArr* dst, CvPoint2D32f center, double M, int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS ); 
src 输入 图像 。 dst 输出 图像 。 center 变换的中心,输出 图像 在这里最精确。 M 幅度的尺度参数,见下面公式。 flags 插值方法和以下选择标志的结合
CV_WARP_FILL_OUTLIERS -填充输出图像所有像素,如果这些点有和外点对应的,则置零。
CV_WARP_INVERSE_MAP - 表示矩阵由输出图像到输入图像的逆变换,并且因此可以直接用于像素插值。否则,函数从map_matrix中寻找逆变换。
fillval 用于填充外点的值。
函数cvLogPolar用以下变换变换输入图像:
正变换 (CV_WARP_INVERSE_MAP 未置位):
dst(phi,rho)<-src(x,y)
逆变换 (CV_WARP_INVERSE_MAP 置位):
dst(x,y)<-src(phi,rho),
这里,
rho=M * log(sqrt(x^2+y^2))
phi=atan(y/x)



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值