1

我正在使用 DirecShowLib-2005.Dll 从我的笔记本电脑网络摄像头拍照。最初我使用的是 640 x 840 的图像尺寸。这些配置是在我使用的示例中给出的

   const int VIDEODEVICE = 0; 
   const int VIDEOWIDTH = 640; 
   const int VIDEOHEIGHT = 480; 
   const int VIDEOBITSPERPIXEL = 24;

这些值是在声明 Capture 对象时传递的,即

 cam = new Capture(VIDEODEVICE, VIDEOWIDTH, VIDEOHEIGHT, VIDEOBITSPERPIXEL, picCamera);

每件事都很好。但我想以护照尺寸拍照,即宽度更小,高度更高。当我改变常量的宽度和高度时,DLL 停止工作。有人请指导我如何更改宽度和高度?

4

1 回答 1

1

您可以根据相机设置中定义的分辨率更改它。例如 320x240 等。当您创建快照图像时,调整位图对象的大小并可能裁剪它的侧面。例如,我使用了以下代码:

IntPtr m_ip = IntPtr.Zero;
m_ip = capture.Click();
Bitmap b = new Bitmap(640, 480, capture.Stride, PixelFormat.Format24bppRgb, m_ip);
b = ResizeBitmap(b,220,220); //The size of your box
b.RotateFlip(RotateFlipType.RotateNoneFlipY);
pictureBox2.Image = b;

private static Bitmap ResizeBitmap(Bitmap sourceBMP, int width, int height)
{
   Bitmap result = new Bitmap(width, height);
   using (Graphics g = Graphics.FromImage(result))
   g.DrawImage(sourceBMP, 0, 0, width, height);
   return result;
}
于 2013-12-06T00:42:32.820 回答