2012-07-10 45 views
7

Tôi đang sử dụng thư viện Emgu để tích hợp các tính năng webcam CV mở trong C#.C#, Emgu webcam - chọn kích thước chụp

tôi sử dụng mã này cho việc lựa chọn các thiết bị chụp và thiết lập kích thước của nó:

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

Sau đó, tôi hiển thị nó trong một imageBox như thế này: imageBox1.Image = camera.QueryFrame();

Sau đó, để chụp một ảnh chụp của khung Tôi hiện tại sử dụng mã này:

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

Mặc dù tôi muốn có thể lưu ảnh chụp ở độ phân giải cao hơn cửa sổ xem trước.

Nhưng vấn đề là theo như tôi biết tôi không thể tạo đối tượng "Chụp" mới bằng cùng một webcamera. Vì vậy, tôi tự hỏi nếu nó có thể có thể thiết lập chiều cao và chiều rộng camera.setCaptureProperty để nói 1028x720 nhưng sau đó trong một số cách cắt nó để hiển thị nó trong imageBox với độ phân giải 514x360?

Hoặc có cách nào khác để thực hiện việc này không?

+0

Đối với những người tự hỏi nơi 'CAP_PROP' được định nghĩa, nó trong 'Emgu.CV.CvEnum' – Chad

Trả lời

9

tôi giải quyết điều này bằng cách sử dụng

imageBox1.SizeMode = PictureBoxSizeMode.StretchImage; 
2

tôi giải quyết điều này bằng cách sử dụng Resize() phương pháp trong QueryFrame()

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

Nó hoạt động, nhưng nó vẫn có vẻ như cắt một số hình ảnh. Sử dụng imageBox.SizeMode để thay thế. –

Các vấn đề liên quan