VideoCaptrue类对视频进行读取操作以及调用摄像头。
头文件:
#include <opencv2/video.hpp>
主要函数如下:
- C++: VideoCapture::VideoCapture();
- C++: VideoCapture::VideoCapture(const string& filename);
- C++: VideoCapture::VideoCapture(int device);
参数:
filename – 打开的视频文件名。
device – 打开的视频捕获设备id ,如果只有一个摄像头可以填0,表示打开默认的摄像头。
- C++: bool VideoCapture::open(const string& filename);
- C++: bool VideoCapture::open(int device);
打开一个视频文件或者打开一个捕获视频的设备(也就是摄像头)
参数:
filename – 打开的视频文件名。
device – 打开的视频捕获设备id ,如果只有一个摄像头可以填0,表示打开默认的摄像头。
C++: bool VideoCapture::isOpened();
成功返回true,,否则false.
C++: void VideoCapture::release();
- C++: bool VideoCapture::grab();//需与retrieve结合使用
- C++: bool VideoCapture::retrieve(Mat& image, int channel=0);
- C++: VideoCapture& VideoCapture::operator>>(Mat& image);
- C++: bool VideoCapture::read(Mat& image);
C++: double VideoCapture::get(int propId);
如果属性不支持,将会返回0。
参数:属性的ID。
属性的ID可以是下面的之一:
- CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds or video capture timestamp.
- CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
- CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file: 0 - start of the film, 1 - end of the film.
- CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
- CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
- CV_CAP_PROP_FPS Frame rate.
- CV_CAP_PROP_FOURCC 4-character code of codec.
- CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
- CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
- CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
- CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
- CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
- CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
- CV_CAP_PROP_HUE Hue of the image (only for cameras).
- CV_CAP_PROP_GAIN Gain of the image (only for cameras).
- CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
- CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
- CV_CAP_PROP_WHITE_BALANCE Currently not supported
- CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently)
bool VideoCapture::set(int propertyId, double value)
成功返回true,否则返回false
参数:第一个是属性ID,第二个是该属性要设置的值。
属性ID如下:
- CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds.
- CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
- CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file: 0 - start of the film, 1 - end of the film.
- CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
- CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
- CV_CAP_PROP_FPS Frame rate.
- CV_CAP_PROP_FOURCC 4-character code of codec.
- CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
- CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
- CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
- CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
- CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
- CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
- CV_CAP_PROP_HUE Hue of the image (only for cameras).
- CV_CAP_PROP_GAIN Gain of the image (only for cameras).
- CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
- CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
- CV_CAP_PROP_WHITE_BALANCE Currently unsupported
- CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently)
1 实例及初始化:
cv::VideoCapture capture.open("Old Film Effect.mp4");
2 设置需要读取帧的位置:
capture.set(cv::CAP_PROP_POS_FRAMES,10);//设置读取第10帧
3 读取帧
- Mat frame;
- if (capture.read(frame))
- imwrite("d:/a.bmp",frame);