2012-07-10 126 views
7

我正在使用Emgu庫來集成C#中打開的CV攝像頭功能。C#,Emgu攝像頭 - 選擇捕捉大小

我使用此代碼用於選擇捕捉設備和設置其大小:

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

然後捕獲當前幀I的快照使用此代碼:

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

儘管我希望能夠以比預覽窗口更高的分辨率保存快照。

但問題是,據我所知,我不能使用相同的webcamera創建一個新的「捕獲」對象。所以我想知道是否可以將camera.setCaptureProperty的高度和寬度設置爲1028x720,然後以某種方式裁剪以在514x360分辨率的imageBox中顯示它?

還有沒有其他方法可以做到這一點?

+0

對於那些想知道'CAP_PROP'定義,它在'Emgu.CV.CvEnum' – Chad 2015-05-12 14:02:25

回答

9

我解決了這個通過使用

imageBox1.SizeMode = PictureBoxSizeMode.StretchImage; 
2

我解決了這個通過使用調整尺寸()中QueryFrame方法()

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

這可以工作,但它似乎仍然會裁剪一些圖像。改爲使用imageBox.SizeMode。 – 2013-05-16 05:31:46