Opencv函数用法详解

来源:互联网 发布:泰隆减速机js tailong 编辑:程序博客网 时间:2024/05/16 05:31

1.CvCreateCapture()

CvCapture* cvCreateCameraCapture( int index );
index (如果不确定,就设为0,通常都能打开)

要使用的摄像头索引。如果只有一个摄像头或者用哪个摄像头也无所谓,那使用参数-1应该便可以。

函数cvCreateCameraCapture给从摄像头的视频流分配和初始化CvCapture结构。目前在Windows下可使用两种接口:Video for Windows(VFW)和Matrox Imaging Library(MIL); Linux下也有两种接口:V4L和FireWire(IEEE1394)。释放这个结构,使用函数cvReleaseCapture。

——————————cvQueryFrame()——————————————

2.cvQueryFrame()

从摄像头或者文件中抓取并返回一帧
IplImage* cvQueryFrame( CvCapture* capture );
capture : 视频获取结构。
函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。这个函数仅仅是函数cvGrabFrame和函数cvRetrieveFrame在一起调用的组合。返回的图像不可以被用户释放或者修改。
抓取后,capture被指向下一帧,可用cvSetCaptureProperty调整capture到合适的帧。
——————————————lPlImage————————————————
3,IplImage类注意事项。

存储图像数据的IplImage,其中有两个属性非常值得关注,稍不留神就会导致错误:

      一是width属性;二是widthStep属性。

      前者是表示图像的每行像素数,后者指表示存储一行像素需要的字节数。

      在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。

      如果8U单通道图像宽度为3,那么widthStep是4,加一个字节补齐。这个图像的一行需要4个字节,只使用前3个,最后一个空着。

也就是一个宽3高3的图像的imageData数据大小为4*3=12字节。

      需要注意的是,空着的那个像素并不是无效的,它仍然可以被操作


1 0
原创粉丝点击