树莓派简单摄像头录像并保存视频文件
树莓派简单摄像头录像并保存视频文件
一、简介
本文讲使用OpenCV,不使用FFMPEG的方法进行保存视频。
二、代码
1、引用
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="OpenCvSharp3-AnyCPU" version="3.4.1.20180830" targetFramework="net47" />
</packages>
2、代码
using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace OpenCVDemo
{
class Program
{
static void Main(string[] args)
{
var cameraIndex = 0;
if (args != null && args.Length > 0)
{
int.TryParse(args[0], out cameraIndex);
}
Console.WriteLine("Begin At Cam Index " + cameraIndex + " ...");
var path = Path.Combine(AppContext.BaseDirectory, "imgs");
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
int count = 0;
var videoSize = new Size(640, 480);
var timePoint = new Point(0, 15);
VideoWriter videoWriter = new VideoWriter(Path.Combine(path, "Video.mp4"), FourCC.XVID, 30,
videoSize, true);
using (var camera = VideoCapture.FromCamera(CaptureDevice.Any))
{
//VideoWriter videoWriter = new VideoWriter(Path.Combine(path, "Video.mp4"), FourCC.Prompt, 30,
//new Size(camera.Get(CaptureProperty.FrameWidth), camera.Get(CaptureProperty.FrameHeight)));
while (true)
{
var mat = camera.RetrieveMat();
if (mat.Empty()) { Thread.Sleep(100); continue; }
if (++count > 30 * 30) break;
Console.WriteLine("save .. " + count);
//mat.PutText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), new Point(10, 10), HersheyFonts.HersheyPlain, 20, Scalar.Yellow, 2);
Cv2.PutText(mat, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " GTM+8", timePoint, HersheyFonts.HersheyPlain, 1, Scalar.Red, 1);
//OpenCvSharp.Cv2.ImShow("myWin", mat);
//if (Cv2.WaitKey(40) == 13)
//{
// break;
//}
Thread.Sleep(50);
var newmat = mat.Resize(videoSize);
videoWriter.Write(newmat);
mat.Dispose();
newmat.Dispose();
}
videoWriter.Dispose();
//GC.Collect();
}
Console.WriteLine("Finish.");
}
}
}
树莓派简单摄像头录像并保存视频文件
https://www.dearcloud.cn/2018/09/22/20200310-cnblogs-old-posts/20180922-树莓派简单摄像头录像并保存视频文件/