我如何在 emgu c# 中获取视频帧并播放到图像框中
How do i get video frames and playing into imagebox in emgu c#
我正在使用 emgucv
,它是 opencv
的 'c#' 包装器 我想通过播放视频来读取视频流作为测试 我有一个视频,我想继续为此,我使用了 QueryFrame()
方法,但它只获取视频的第一帧。在第一帧它按预期计算视频内容,但黑屏到后面的帧不知道里面发生了什么。
public void processFrames(){
capt = new Capture("video2.avi");
Image<Bgr, Byte> ImageFrame = capt.QueryFrame().ToImage<Bgr, Byte();
if (ImageFrame!=null ) {
ImageFrame = capt.QueryFrame().ToImage<Bgr, Byte>();
imageBox1.Image = ImageFrame;
}
else {
timer1.Stop();
}
}
private void button1_Click(object sender, EventArgs e){
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e){
processFrames();
}
您实际上并没有移动到视频中的下一帧。
您需要跟踪上一帧位置并查询下一帧。
我正在使用 emgucv
,它是 opencv
的 'c#' 包装器 我想通过播放视频来读取视频流作为测试 我有一个视频,我想继续为此,我使用了 QueryFrame()
方法,但它只获取视频的第一帧。在第一帧它按预期计算视频内容,但黑屏到后面的帧不知道里面发生了什么。
public void processFrames(){
capt = new Capture("video2.avi");
Image<Bgr, Byte> ImageFrame = capt.QueryFrame().ToImage<Bgr, Byte();
if (ImageFrame!=null ) {
ImageFrame = capt.QueryFrame().ToImage<Bgr, Byte>();
imageBox1.Image = ImageFrame;
}
else {
timer1.Stop();
}
}
private void button1_Click(object sender, EventArgs e){
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e){
processFrames();
}
您实际上并没有移动到视频中的下一帧。 您需要跟踪上一帧位置并查询下一帧。