7

【opencv 四】利用 opencv 读取显示视频

 3 years ago
source link: https://bbs.cvmart.net/articles/244
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【opencv 四】利用 opencv 读取显示视频

1年前 ⋅ 1537 ⋅ 0 ⋅ 0

在opencv中读取显示视频的头文件是highgui.hpp。视频图像处理头文件imgproc.hpp。
整体代码如下,如要测试自己的图片,需要将代码段中的图片地址更改为自己图片的绝对路径。

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

using namespace cv;

int main()
{
    namedWindow("Example2", WINDOW_AUTOSIZE);
    VideoCapture cap;
    cap.open("H:\\vs2017\\opencv_learning\\ConsoleApplication1\\video.mp4");
    Mat frame;
    while (1)
    {
        cap >> frame;
        if (frame.empty()) break;
        imshow("Exameple2",frame);
        if (waitKey(33) >= 0) break;
    }

    return 0;
}

代码解析:

VideoCapture cap;

VideoCapture类:视频捕捉类,该语句实例化了一个对象cap。这个类可以打开和关闭视频文件。这个对象可以打开和关闭ffmpeg支持的所有类型的视频文件。

ffmpeg files是一种多媒体视频处理工具。FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码,AVI、MPEG、OGG、Matroska、ASF等90多种解码。"FFmpeg"这个单词中的 "FF" 指的是 "Fast Forward",TCPMP, VLC, MPlayer等开源播放器都用到了FFmpeg。
这个项目最初是由Fabrice Bellard发起的,而现在是由Michael Niedermayer在进行维护。许多FFmpeg的开发者同时也是MPlayer项目的成员,FFmpeg在MPlayer项目中是被设计为服务器版本进行开发。


cap.open(“Your Video Path”);
Mat frame;
  • cap.open函数:根据给定的路径,打开视频文件。一旦打开,当前实例cap将包含对应视频文件的所有信息。
  • Mat frame操作:该操作用来实例化一个数据对象,该数据对象用来存放视频帧。

cap >> frame;
if (frame.empty()) break;
imshow("Exameple2",frame);
  • cap>>frame操作:一旦进入while()循环,就会从捕获对象流逐帧读取视频文件。

if (waitKey(33) >= 0) break;

一旦我们显示了帧,然后等待33毫秒。如果用户在此期间按下一个键,我们将退出读循环。否则,33毫秒将通过,我们将再次执行循环。在退出时,所有分配的数据都会在超出范围时自动释放。


版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK