视频播放
视频讲解如下:
当前系列所有demo下载地址:
https://github.com/GaoRenBao/OpenCv4-Demo
不同编程语言对应的OpenCv版本以及开发环境信息如下:
语言 | OpenCv版本 | IDE |
C# | OpenCvSharp4.4.8.0.20230708 | Visual Studio 2022 |
C++ | OpenCv-4.5.5-vc14_vc15 | Visual Studio 2022 |
Python | OpenCv-Python (4.6.0.66) | PyCharm Community Edition 2022.1.3 |
这里给大大家演示OpenCv环境下是如何进行视频播放的,由于OpenCv是不带音频处理的,所以视频是没有声音的。
首先需要准备一个小视频,名字为lol.avi,如下

接下来下面给大家演示了C#、C++、Python这三种环境下是如何进行视频播放的
C#版本代码如下:
C#版本需要安装“OpenCvSharp4”、“OpenCvSharp4.runtime.win”两个库才行。不然会报错。
如果需要使用“ BitmapConverter.ToBitmap”操作,则需要追加安装“OpenCvSharp4.Extensions”库。
注意:OpenCvSharp4版本不稳定,某些版本视频老是打开失败。。。
using OpenCvSharp;
using System;
namespace demo
{
internal class Program
{
static void Main(string[] args)
{
var capture = new VideoCapture("../../../images/lol.avi");
if (!capture.IsOpened())
{
Console.WriteLine("Open video failed!");
return;
}
// 计算帧率
int sleepTime = (int)Math.Round(1000 / capture.Fps);
using (var window = new Window("capture"))
{
// 声明实例 Mat类
Mat image = new Mat();
// 进入读取视频每镇的循环
while (true)
{
capture.Read(image);
//判断是否还有没有视频图像
if (image.Empty())
break;
// 在Window窗口中播放视频(方法1)
window.ShowImage(image);
// 在Window窗口中播放视频(方法2)
//Cv2.ImShow("avi", image);
// 在pictureBox1中显示效果图
//pictureBox1.Image = BitmapConverter.ToBitmap(image);
Cv2.WaitKey(sleepTime);
}
}
}
}
}
C++版本代码如下:
#include <opencv2\opencv.hpp>
using namespace cv;
int main()
{
//【1】读入视频
VideoCapture capture("../images/lol.avi");
//【2】循环显示每一帧
while (1)
{
Mat frame;//定义一个Mat变量,用于存储每一帧的图像
capture >> frame; //读取当前帧
//若视频播放完成,退出循环
if (frame.empty())
{
break;
}
imshow("读取视频", frame); //显示当前帧
waitKey(30); //延时30ms
}
return 0;
}
Python版本代码如下:
import cv2
video = cv2.VideoCapture('../images/lol.avi')
fps = video.get(cv2.CAP_PROP_FPS)
success = True
while success:
# 读帧
success, frame = video.read()
if success == False:
break
cv2.imshow('windows', frame) # 显示
cv2.waitKey(int(1000 / int(fps))) # 设置延迟时间
video.release()