2012-02-15 50 views
7

Tôi có một dự án mà tôi cần làm việc với máy ảnh USB để xử lý hình ảnh được thu thập ở phạm vi rất gần (dưới 5mm). Bởi vì không gian có sẵn là rất ngắn, tôi không thể sử dụng ống kính phụ trợ.Truy cập điều khiển camera USB với AForge

Tôi biết tôi có thể thực hiện một số xử lý bài ở mức bitmap, nhưng tôi muốn có quyền truy cập vào các thuộc tính như tự động lấy nét hoặc cân bằng trắng ở mức máy ảnh.

Tôi đang phát triển trong C# với AForge để thu thập hình ảnh và xử lý bài đăng, nhưng tôi dường như không thể tìm cách điều khiển máy ảnh trước khi quá trình thu thập hình ảnh diễn ra.

Bạn có thể giúp tôi không?

Trả lời

7

Sau một số nghiên cứu kỹ lưỡng hơn, tôi đã tự mình tìm thấy số answer.

Nếu có ai khác đang tìm kiếm nội dung này, bạn có thể thử các cách sau;

VideoCaptureDevice Cam1; 
FilterInfoCollection VideoCaptureDevices; 

VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); 
Cam1 = new VideoCaptureDevice(VideoCaptureDevices[0].MonikerString); 
Cam1.DisplayPropertyPage(IntPtr.Zero); //This will display a form with camera controls 

Nó cũng có vẻ càng tốt để kiểm soát các mặt hàng này mà không cần các hình thức bằng cách sử dụng IAMVideoProcAmp

+0

@Darshana Chỉnh sửa bạn đã tạo quá nhỏ. Điều đó không nên được chấp thuận, vì vậy tôi đã quay lại. Vui lòng nỗ lực nhiều hơn vào các chỉnh sửa của bạn. [Đọc này] (http://stackoverflow.com/help/editing) nếu bạn không chắc chắn cách chỉnh sửa bài đăng đúng cách. – Gray

6

Bạn có thể truy cập vào thiết lập trực tiếp mà không gọi các DisplayPropertyPage phương pháp()

FilterInfoCollection videoDevices = 
    new FilterInfoCollection(FilterCategory.VideoInputDevice); 

VideoCaptureDevice videoDevice = 
    new VideoCaptureDevice(videoDevices[camDevice].MonikerString); 

videoDevice.SetCameraProperty(
    CameraControlProperty.Zoom, 
    zoomValue, 
    CameraControlFlags.Manual); 

videoDevice.SetCameraProperty(
    CameraControlProperty.Focus, 
    focusValue, 
    CameraControlFlags.Manual); 

videoDevice.SetCameraProperty(
    CameraControlProperty.Exposure, 
    exposureValue, 
    CameraControlFlags.Manual); 
1

Để truy cập vào tính máy ảnh khác camera như độ sáng, độ tương phản, xem IAMVideoProcAmp implementation

videoDevice.SetVideoProperty(
    VideoProcAmpProperty.Brightness, 
    brightnessValue, 
    VideoProcAmpFlags.Manual); 

videoDevice.SetVideoProperty(
    VideoProcAmpProperty.Contrast, 
    contrastValue, 
    VideoProcAmpFlags.Manual); 

videoDevice.SetVideoProperty(
    VideoProcAmpProperty.Saturation, 
    saturationValue, 
    VideoProcAmpFlags.Manual); 

videoDevice.SetVideoProperty(
    VideoProcAmpProperty.Sharpness, 
    sharpnessValue, 
    VideoProcAmpFlags.Manual); 

videoDevice.SetVideoProperty(
    VideoProcAmpProperty.WhiteBalance, 
    whiteBalanceValue, 
    VideoProcAmpFlags.Manual); 

videoDevice.SetVideoProperty(
    VideoProcAmpProperty.BacklightCompensation, 
    backlightCompensationValue, 
    VideoProcAmpFlags.Manual); 
+1

Cảm ơn bạn đã trả lời. Bạn đã thêm thông tin có giá trị vào ý tưởng ban đầu của tôi: rằng có thể đặt chúng bằng cách sử dụng IAMVideoProcAmp. Đó là một vài năm kể từ lần đăng đầu tiên của tôi, nhưng thông tin vẫn có thể liên quan đến một số người dùng. – Shadlan