Hai ngày qua tôi đã tìm cách chụp ảnh từ webcam bằng C#. Tôi khá mới trong C# và tôi KHÔNG muốn sử dụng libs bên thứ ba bên ngoài, vì vậy tôi tìm thấy hai cách tốt đẹp, nhưng cả hai dường như trở lại gần như cùng một lỗi. Tôi không thể có được bất kỳ người trong số họ để làm việc, vì vậy nó sẽ thực sự tốt đẹp nếu bạn giúp tôi để có được một trong số họ chạy hoặc giúp tôi để tìm thay thế.C# chụp ảnh từ webcam
Vì vậy, cách đầu tiên tôi tìm thấy là sử dụng Windows WIA. Tôi thấy đoạn mã sau:
CommonDialogClass dialog = new CommonDialogClass();
Device camera = dialog.ShowSelectDevice(WiaDeviceType.CameraDeviceType, true, false);
// take the photo
Item item = camera.ExecuteCommand(CommandID.wiaCommandTakePicture);
ImageFile image = (ImageFile)item.Transfer(FormatID.wiaFormatJPEG);
// filename and saving
image.SaveFile("Test.jpg");
mã này có vẻ là exacly những gì tôi đang tìm kiếm, nhưng tôi không thể làm cho nó chạy, vì tôi nhận được lỗi sau trên dòng thứ hai:
Exception from HRESULT: 0x80210015
cách thứ hai tôi thấy là sử dụng Avicap32.dll với mẫu sau:
http://www.timvw.be/wp-content/code/csharp/testavicap32.zip
nhưng tôi nhận được vào mã này:
Image image = ((CaptureDevice)cboDevices.SelectedItem).Capture();
image.Save(@"c:\capture.png", ImageFormat.Png);
ngoại lệ sau: Không có ngoại lệ
Tôi nghĩ rằng cả hai giải pháp đều gây ra sự cố vì họ không thể tìm thấy máy ảnh của tôi, nhưng tôi có thể sử dụng máy ảnh của mình trên skype mà không gặp bất kỳ sự cố nào.
tôi đã thành công sử dụng chúng quá, tuy nhiên mức độ so sánh cho ảnh tĩnh có vẻ khá thấp , Tôi chỉ chạy ở 2 trong số 7 máy ảnh được thử nghiệm, tôi đoán là máy ảnh hiện đại không bận tâm với chức năng chụp ảnh riêng biệt và chỉ cần lấy khung video và aforge chưa được cập nhật trong vài năm – MikeT