Image processing 在视频输入库或OpenCV中禁用自动对焦
我正在使用视频输入库从网络摄像头获取帧。我想用C代码设置这个相机的焦距 相机已启用自动对焦功能。没有办法禁用自动对焦并设置特定的对焦值吗 问候,, 萨利赫 您是否尝试过:它要求您使用directshow,但这应该是可能的 否则,你看了吗。关于摄像机参数的部分显示了——通常——如何控制摄像机参数,Image processing 在视频输入库或OpenCV中禁用自动对焦,image-processing,opencv,computer-vision,Image Processing,Opencv,Computer Vision,我正在使用视频输入库从网络摄像头获取帧。我想用C代码设置这个相机的焦距 相机已启用自动对焦功能。没有办法禁用自动对焦并设置特定的对焦值吗 问候,, 萨利赫 您是否尝试过:它要求您使用directshow,但这应该是可能的 否则,你看了吗。关于摄像机参数的部分显示了——通常——如何控制摄像机参数,videoinput.h中的快速查看应该会显示自动对焦的参数。 这样设置自动对焦的方法 是用于控制参数的windows界面 请注意,根据您使用的网络摄像头和/或特定固件版本,可能根本无法控制聚焦/自动聚焦
videoinput.h
中的快速查看应该会显示自动对焦的参数。
这样设置自动对焦的方法
是用于控制参数的windows界面
请注意,根据您使用的网络摄像头和/或特定固件版本,可能根本无法控制聚焦/自动聚焦。我已经搜索了好几天这个问题,并尝试了videoinput library和directshow。 如果您只想在opencv内(手动)设置一次摄影机参数,我找到的最简单的方法是:
VideoCapture cap(0);
cap.set(CV_CAP_PROP_SETTINGS, 1);
它将弹出一个窗口供您设置参数。足以禁用自动对焦
这种方法的不便之处在于,如果您想通过程序控制焦距,它就无法做到这一点 您正在寻找的功能是特定于摄像头和驱动程序的。仅提供非常基本的参数。
没有通用的方法通过OpenCV进行调用 要执行此操作,而不是通过OpenCV,可以执行以下操作之一:
- 手动访问驱动程序的捕获属性为:
cap.set(CV\u cap\u PROP\u设置,1)代码>
- 通过操作系统/特定于驱动程序的API编程
cv2.CAP_PROP_britness
或cv2.CAP_PROP_CONTRAST
。
查看自动完成向您显示的内容;) 我知道我可以使用以下代码在视频输入库中设置焦点;setVideoSettingCamera(int deviceID、long属性、long左值、long标志=NULL、bool useDefaultValue=false);但它不起作用。答案可能取决于平台。您正在使用什么操作系统/硬件?windows。。。你可以考虑任何这些:7 64/32或Windows XP 32…哦,是的。我可以使用VideoInput库中的鼠标光标通过设置窗口禁用它。这意味着摄像头驱动程序支持启用或禁用自动对焦。但问题是它不能通过编码配置。您提到了OpenCV的摄像头捕获实现。在此实现中,没有任何属性(焦距、缩放、亮度等)起作用:(@saleh-你是如何解决问题的?@saleh,请说明你是如何解决问题的。谢谢
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