opencv接口使用(一)

  • 结构体
  • VideoCapture
  • Mat
  • 常用函数
  • 打开输入源open()
  • 获取输入源信息get()
  • 设置输入源信息set()
  • 读取图片帧read()
  • 关闭摄像头release()
  • 图像数据拷贝copyTo()
  • 得到包覆此轮廓的最小正矩形minAreaRect()
  • 得到包覆轮廓的最小斜矩形boundingRect()


结构体

VideoCapture

Mat

常用函数

打开输入源open()

  1. 网络串流(RTSP,RTMP)
  2. 本地视频文件
  3. 本地摄像头(0,1,…)

获取输入源信息get()

param

define

宏定义

cv2.VideoCapture.get(0)

视频文件的当前位置(播放)以毫秒为单位

CV_CAP_PROP_POS_MSEC

cv2.VideoCapture.get(1)

基于以0开始的被捕获或解码的帧索引

CV_CAP_PROP_POS_FRAMES

cv2.VideoCapture.get(2)

视频文件的相对位置(播放):0=电影开始,1=影片的结尾。

CV_CAP_PROP_POS_AVI_RATIO

cv2.VideoCapture.get(3)

在视频流的帧的宽度

CV_CAP_PROP_FRAME_WIDTH

cv2.VideoCapture.get(4)

在视频流的帧的高度

CV_CAP_PROP_FRAME_HEIGHT

cv2.VideoCapture.get(5)

帧速率

CV_CAP_PROP_FPS

cv2.VideoCapture.get(6)

编解码的4字-字符代码

CV_CAP_PROP_FOURCC

cv2.VideoCapture.get(7)

视频文件中的帧数

CV_CAP_PROP_FRAME_COUNT

cv2.VideoCapture.get(8)

返回对象的格式

CV_CAP_PROP_FORMAT

cv2.VideoCapture.get(9)

返回后端特定的值,该值指示当前捕获模式

CV_CAP_PROP_MODE

cv2.VideoCapture.get(10)

图像的亮度(仅适用于照相机)

CV_CAP_PROP_BRIGHTNESS

cv2.VideoCapture.get(11)

图像的对比度(仅适用于照相机)

CV_CAP_PROP_CONTRAST

cv2.VideoCapture.get(12)

图像的饱和度(仅适用于照相机)

CV_CAP_PROP_SATURATION

cv2.VideoCapture.get(13)

色调图像(仅适用于照相机)

CV_CAP_PROP_HUE

cv2.VideoCapture.get(14)

图像增益(仅适用于照相机)(Gain在摄影中表示白平衡提升)

CV_CAP_PROP_GAIN

cv2.VideoCapture.get(15)

曝光(仅适用于照相机)

CV_CAP_PROP_EXPOSURE

cv2.VideoCapture.get(16)

指示是否应将图像转换为RGB布尔标志

CV_CAP_PROP_CONVERT_RGB

cv2.VideoCapture.get(17)

× 暂时不支持

CV_CAP_PROP_WHITE_BALANCE_BLUE_U

cv2.VideoCapture.get(18)

立体摄像机的矫正标注(目前只有DC1394 v.2.x后端支持这个功能)

CV_CAP_PROP_RECTIFICATION

设置输入源信息set()

参数同上

读取图片帧read()

获取一帧图片,参数为Mat数据类型的图片指针

关闭摄像头release()

关闭流资源,并释放资源

图像数据拷贝copyTo()

得到包覆此轮廓的最小正矩形minAreaRect()

points:输入信息,可以为包含点的容器(vector)或是Mat。

返回包覆输入信息的最小正矩形。如下图:

opencv2411接口手册 opencv的常用接口_视频流

得到包覆轮廓的最小斜矩形boundingRect()

points:输入信息,可以为包含点的容器(vector)或是Mat。

返回包覆输入信息的最小斜矩形。如下图:

opencv2411接口手册 opencv的常用接口_数据类型_02


【说明】

如果参数是Mat类型的(注意需要是N行2列),必须满足depth == CV_32F || depth == CV_32S,且checkVector(2)才可以,否则会报错【minAreaRect()中主要调用的求凸包的函数convexHull()会检查Mat满不满足上面的条件】。

Mat::depth()函数:求矩阵中元素的一个通道的数据类型,这个值和type是相关的。

Mat::checkVector()函数:当Mat的channels,depth,和连续性 满足checkVector的参数内容时,返回(int)(total()*channels()/_elemChannels), 否则返回-1。checkVector(2),要求矩阵的列数位2。

注意:第二种(红色框)求得是真正的最小外接矩形,如下图所示说明。

opencv2411接口手册 opencv的常用接口_数据类型_03