如何从 emgu cv 图像框中显示的图像流制作视频 (.mp4/.avi)?
How do I make a video (.mp4/.avi) from a stream of images displayed in emgu cv's image box?
我正在尝试做一个带有录音功能的人脸识别应用。它将像闭路电视摄像机一样工作,但具有面部识别功能。我使用 emgu 的图像框来显示我的网络摄像头的图像流。我的问题是,如何将图像流转换为视频文件,然后将其保存到本地目录?
非常感谢。
我尝试了一些代码来下载 imagebox 框架。不幸的是,我只能将其作为图像文件获取。
我使用以下代码显示来自网络摄像头的图像流:
Capture grabber; //declaration
// initialization
grabber = new Capture();
grabber.QueryFrame();
Application.Idle += new EventHandler(FrameGrabber);
我在这里得到了人脸识别代码:
https://www.codeproject.com/Articles/239849/Multiple-face-detection-and-recognition-in-real
预期的输出是一个视频文件,但我只能得到一个图像文件。
我用过录像机class。
我的录制按钮中的代码:
if(grabber == null)
{
return;
}
recording = true;
int fps = Convert.ToInt32(grabber.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FPS));
int foucc = CvInvoke.CV_FOURCC('X', 'V', 'I', 'D');
int width = Convert.ToInt32(grabber.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH));
int height = Convert.ToInt32(grabber.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT));
writer = new VideoWriter(path+".avi", foucc, 10, 364, 293, true);
我的停止记录按钮中的代码:
recording = false;
if(writer != null)
{
writer.Dispose();
}
我的 select 目录按钮中的代码:
SaveFileDialog save = new SaveFileDialog();
if(save.ShowDialog() == DialogResult.OK)
{
path = save.FileName;
btnRecord.Enabled = true;
btnStop.Enabled = true;
}
我发现的另一个解决方法是使用屏幕录制库。
我正在尝试做一个带有录音功能的人脸识别应用。它将像闭路电视摄像机一样工作,但具有面部识别功能。我使用 emgu 的图像框来显示我的网络摄像头的图像流。我的问题是,如何将图像流转换为视频文件,然后将其保存到本地目录? 非常感谢。
我尝试了一些代码来下载 imagebox 框架。不幸的是,我只能将其作为图像文件获取。
我使用以下代码显示来自网络摄像头的图像流:
Capture grabber; //declaration
// initialization
grabber = new Capture();
grabber.QueryFrame();
Application.Idle += new EventHandler(FrameGrabber);
我在这里得到了人脸识别代码: https://www.codeproject.com/Articles/239849/Multiple-face-detection-and-recognition-in-real
预期的输出是一个视频文件,但我只能得到一个图像文件。
我用过录像机class。
我的录制按钮中的代码:
if(grabber == null)
{
return;
}
recording = true;
int fps = Convert.ToInt32(grabber.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FPS));
int foucc = CvInvoke.CV_FOURCC('X', 'V', 'I', 'D');
int width = Convert.ToInt32(grabber.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH));
int height = Convert.ToInt32(grabber.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT));
writer = new VideoWriter(path+".avi", foucc, 10, 364, 293, true);
我的停止记录按钮中的代码:
recording = false;
if(writer != null)
{
writer.Dispose();
}
我的 select 目录按钮中的代码:
SaveFileDialog save = new SaveFileDialog();
if(save.ShowDialog() == DialogResult.OK)
{
path = save.FileName;
btnRecord.Enabled = true;
btnStop.Enabled = true;
}
我发现的另一个解决方法是使用屏幕录制库。