2012-07-10 12 views
7

Sto utilizzando la libreria Emgu per integrare le funzionalità della webcam CV in C#.C#, webcam Emgu - scegliere la dimensione di cattura

Io uso questo codice di scelta del dispositivo di cattura e modificando le dimensioni:

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

Poi visualizzare in un'Imagebox simili: imageBox1.Image = camera.QueryFrame();

Poi per catturare un'istantanea del fotogramma corrente I utilizzare questo codice:

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

Anche se vorrei poter salvare l'istantanea a una risoluzione superiore rispetto alla finestra di anteprima.

Ma il problema è che, per quanto ne so, non riesco a creare un nuovo oggetto "Cattura" utilizzando la stessa webcam. Quindi mi chiedo se sia forse possibile impostare l'altezza e la larghezza di camera.setCaptureProperty per dire 1028x720 ma poi in qualche modo ritagliarlo per visualizzarlo nell'immagineBox con la risoluzione di 514x360?

Oppure c'è un altro modo per farlo?

+0

Per coloro che chiedono dove 'CAP_PROP' è definito, è in 'Emgu.CV.CvEnum' – Chad

risposta

9

Ho risolto questo utilizzando

imageBox1.SizeMode = PictureBoxSizeMode.StretchImage; 
2

Ho risolto questo utilizzando il Resize() metodo QueryFrame()

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

Questo funziona, ma sembra ancora ritagliare alcune delle immagini. Utilizzare invece imageBox.SizeMode. –