2012-07-10 30 views
7

Estoy usando la biblioteca Emgu para integrar las funciones de cámara web CV abiertas en C#.C#, cámara web Emgu: elija el tamaño de captura

Puedo usar este código para elegir el dispositivo de captura y el establecimiento de su tamaño:

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); 

Entonces mostrarlo en una ImageBox así: imageBox1.Image = camera.QueryFrame();

Luego de capturar una instantánea del fotograma corriente I utilice este código:

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

Aunque me gustaría poder guardar la instantánea en una resolución más alta que la ventana de vista previa.

Pero el problema es que, por lo que yo sé, no puedo crear un nuevo objeto "Capturar" usando la misma cámara web. Entonces me pregunto si es posible establecer el alto y el ancho de camera.setCaptureProperty, digamos 1028x720, pero luego de alguna manera recortarlo para mostrarlo en el cuadro de imagen con la resolución de 514x360?

¿O hay alguna otra forma de hacerlo?

+0

Para los que preguntan donde 'se define CAP_PROP', está en 'Emgu.CV.CvEnum' – Chad

Respuesta

9

Solucioné esto usando

imageBox1.SizeMode = PictureBoxSizeMode.StretchImage; 
2

Solucioné esto utilizando el Redimensionar() método en QueryFrame()

currentFrame = grabber.QueryFrame().Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC); 
+2

Esto funciona, pero todavía parece recortar parte de la imagen. Use el imageBox.SizeMode en su lugar. –

Cuestiones relacionadas