C#,Emgu 网络摄像头 - 选择捕获大小

Posted

技术标签:

【中文标题】C#,Emgu 网络摄像头 - 选择捕获大小【英文标题】:C#, Emgu webcam - choose capture size 【发布时间】:2012-07-10 07:36:00 【问题描述】:

我正在使用 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 中?

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

【问题讨论】:

对于那些想知道CAP_PROP 定义在哪里的人,它在Emgu.CV.CvEnum 【参考方案1】:

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

imageBox1.SizeMode = PictureBoxSizeMode.StretchImage;

【讨论】:

【参考方案2】:

我通过使用 QueryFrame()

中的 Resize() 方法解决了这个问题
currentFrame = grabber.QueryFrame().Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);

【讨论】:

这可行,但它似乎仍然裁剪了一些图像。请改用 imageBox.SizeMode。

以上是关于C#,Emgu 网络摄像头 - 选择捕获大小的主要内容,如果未能解决你的问题,请参考以下文章

Emgu (OpenCV for C#) - 使用 cvStereoRectify 构建视差图

使用网络摄像头捕获视频并使用 c# 保存为 avi [重复]

Emgu CV Capture IP 摄像头人脸检测问题

怎么在Dshow中判断真实摄像头与虚拟摄头

Emgu CV 图像捕获使用 C#

如何使用 C# 流式传输网络摄像头视频? [关闭]