2012-02-08 59 views
8

Tôi đang sử dụng thư viện Đầu vào video để tải khung hình từ webcam. Tôi muốn đặt FOCUS của máy ảnh này trong mã C.Tắt Tự động lấy nét trong Thư viện đầu vào video hoặc OpenCV

Máy ảnh có AUTO FOCUS được bật. Không có cách nào để tắt tự động lấy nét và đặt giá trị tiêu điểm cụ thể.

Kính trọng, Saleh ...

+0

Tôi biết tôi có thể đặt tiêu điểm trong Thư viện đầu vào video bằng mã sau; setVideoSettingCamera (int deviceID, dài Thuộc tính, dài lValue, Cờ dài = NULL, bool useDefaultValue = false); Nhưng nó không hoạt động. – Saleh

+0

Câu trả lời có thể phụ thuộc vào nền tảng. Bạn đang sử dụng hệ điều hành/phần cứng nào? –

+1

windows ... bạn có thể xem xét bất kỳ trong số này: 7 64/32 hoặc windows xp 32 ... – Saleh

Trả lời

2

Các bạn đã thử này: https://stackoverflow.com/a/1718009/7531 Nó đòi hỏi bạn sử dụng directshow, nhưng điều này nên có thể.

Nếu không, bạn đã xem số OpenCV documentation for CameraCapture chưa. phần liên quan đến thông số máy ảnh cho thấy cách bạn kiểm soát thông số máy ảnh, xem nhanh trong videoinput.h sẽ hiển thị cho bạn các tham số cho lấy nét tự động. This is a complete example của cài đặt tự động lấy nét theo cách này.

IAMCameraControl là giao diện cửa sổ để kiểm soát thông số.

Lưu ý rằng tùy thuộc vào webcam bạn sử dụng và/hoặc phiên bản chương trình cơ sở cụ thể, có thể không thể kiểm soát lấy nét/lấy nét tự động.

+0

oh yes. Tôi có thể vô hiệu hóa nó thông qua các cửa sổ cài đặt bằng cách sử dụng con trỏ chuột trong Thư viện VideoInput. Điều đó có nghĩa là Trình điều khiển máy ảnh có hỗ trợ cho việc bật n tắt AutoFocus. nhưng vấn đề là nó không thể cấu hình thông qua mã hóa. Bạn đã đề cập đến việc triển khai OpenCV để chụp ảnh. Trong thực hiện này không có tài sản (Focus, Zoom, Brightness vv) đang hoạt động. :( – Saleh

+0

@ saleh - Làm cách nào bạn khắc phục sự cố của mình? – user1651460

+0

@Saleh, Vui lòng đề cập đến cách bạn khắc phục sự cố. – Abc

2

Tôi đã tìm kiếm sự cố này cho các cặp vợ chồng trong ngày và đã thử thư viện videoinput và directshow. Nếu bạn chỉ muốn thiết lập các thông số máy ảnh cho một lần (bằng tay) bên opencv, cách dễ nhất tôi thấy là:

VideoCapture cap(0); 
cap.set(CV_CAP_PROP_SETTINGS, 1); 

nó sẽ bật ra một cửa sổ để bạn có thể thiết lập các thông số. đủ để tắt tự động lấy nét.

Sự bất tiện của phương pháp này là nếu bạn muốn kiểm soát tiêu cự theo chương trình, nó không thể thực hiện điều đó.

1

Chức năng bạn đang tìm kiếm là camera và trình điều khiển cụ thể. The OpenCV camera property controls chỉ cung cấp các thông số rất thô sơ.
Không có cách nào chung để thực hiện cuộc gọi đó thông qua OpenCV.

Để làm điều đó, không phải thông qua OpenCV, bạn có thể làm làm một trong các cách sau:

7

Nếu bạn sử dụng OpenCV phiên bản 3.1.0-dev và Python 2.7.5, đoạn code sau snipped sẽ giúp bạn;)

cap = cv2.VideoCapture(1) # my webcam 
cap.set(3, 1280) # set the resolution 
cap.set(4, 720) 
cap.set(cv2.CAP_PROP_AUTOFOCUS, 0) # turn the autofocus off 

Với Logitech HD Pro Webcam C920 của tôi là hoạt động tốt. Có rất nhiều chức năng điều khiển mát khác bên trong cv2, như cv2.CAP_PROP_BRITHNESS hoặc cv2.CAP_PROP_CONTRAST. Kiểm tra nội dung tự động hoàn tất hiển thị cho bạn;)

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