opencv接口使用(一)
- 结构体
- VideoCapture
- Mat
- 常用函数
- 打开输入源open()
- 获取输入源信息get()
- 设置输入源信息set()
- 读取图片帧read()
- 关闭摄像头release()
- 图像数据拷贝copyTo()
- 得到包覆此轮廓的最小正矩形minAreaRect()
- 得到包覆轮廓的最小斜矩形boundingRect()
结构体
VideoCapture
Mat
常用函数
打开输入源open()
- 网络串流(RTSP,RTMP)
- 本地视频文件
- 本地摄像头(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。
返回包覆输入信息的最小正矩形。如下图:
得到包覆轮廓的最小斜矩形boundingRect()
points:输入信息,可以为包含点的容器(vector)或是Mat。
返回包覆输入信息的最小斜矩形。如下图:
【说明】
如果参数是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。
注意:第二种(红色框)求得是真正的最小外接矩形,如下图所示说明。