8

我正在使用 Emgu 库在 C# 中集成开放式 CV 网络摄像头功能。

我使用此代码选择捕获设备并设置其大小:

camera = new Capture(0);
camera.SetCaptureProperty(CAP_PROP.CV_CAP_PROP_FRAME_WIDTH, videoSettings.width);
camera.SetCaptureProperty(CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT, videoSettings.height);

然后我将它显示在一个 imageBox 中,如下所示:imageBox1.Image = camera.QueryFrame();

然后要捕获当前帧的快照,我使用以下代码:

Image<Bgr, byte> snapshot = camera.QueryFrame();
snapshot.Save("snapshot.jpg");

虽然我希望能够以比预览窗口更高的分辨率保存快照。

但问题是,据我所知,我无法使用同一个网络摄像头创建新的“捕获”对象。所以我想知道是否可以将camera.setCaptureProperty高度和宽度设置为 1028x720,然后以某种方式裁剪它以将其显示在分辨率为 514x360 的 imageBox 中?

或者有没有其他方法可以做到这一点?

4

2 回答 2

10

我通过使用解决了这个问题

imageBox1.SizeMode = PictureBoxSizeMode.StretchImage;
于 2012-07-11T08:00:47.500 回答
2

我通过使用QueryFrame()中的Resize()方法解决了这个问题

currentFrame = grabber.QueryFrame().Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
于 2013-04-18T14:22:33.977 回答