我正在创建一个基于摄像头的winforms应用程序,其中我使用了EmguCV。
我想在单击按钮时以纵向模式捕获图像。
我试过了:
cap.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH, 190);
cap.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT, 250);
但是图片仍然保持横向模式,只有维度从640 x 480
减少到某些176 x 130
,但我想要人像。
那么有人能告诉我如何应对这个问题吗?
答案 0 :(得分:0)
cap.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH, 190);
cap.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT, 250);
您正在使用的上述代码代码只会更改图像的大小(捕获的帧),您可能无法获得所提到的大小,可能是因为正在维护宽高比。
现在进入肖像模式拍摄,In会建议在拍摄后将当前帧旋转90度,然后重新调整尺寸以适合图像框。
代码将是这样的
public Form1()
{
InitializeComponent();
_capture = new Capture();
Application.Idle += ProcessFrame;
}
private void ProcessFrame(object sender, EventArgs arg)
{
Image<Bgr, Byte> currentFrame = _capture.QueryFrame();
currentFrame =currentFrame.Rotate(90,new Bgr(255,255,255),true);
// other code to the task you want to achieve like displaying in ImageBox etc.
}
查看官方文档here