使用OpenCV的VideoCapture调整USB相机的对焦参数

这篇具有很好参考价值的文章主要介绍了使用OpenCV的VideoCapture调整USB相机的对焦参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、问题引入

        我们在进行机器视觉图像采集任务的之前,可能会选择购买一些USB相机作为采集设备。而有些USB相机具有自动对焦的功能,打开Windows自带的相机,界面如下:

opencv摄像头调焦距,opencv,python,计算机视觉

         拥有调整对焦功能的相机在接入之后,最左侧会出现对焦按钮(红框已圈出),点击按钮后拖动纵向滑动条即可调整相机的对焦位置,直到我们希望得到的最清晰位置;也可以将滑动条下拉至最下方,即为自动对焦的策略,相机会根据当前图像清晰度进行自动对焦。

        以上操作在Windows系统相机应用中十分简单,但针对某个机器视觉任务,我们往往希望自己使用OpenCV库编程来实现手动或自动对焦的命令。

二、问题解决

        此处我们使用opencv-python,使用C++的同学亦不难找到对应的函数。首先我们创建一个相机的类class Camera,在类中用cv2.VideoCapture实例化一个self.stream,再使用self.stream的set方法设置相机的属性。

class Camera:
    def __init__(self, src=0):
        self.src = src
        self.stream = cv2.VideoCapture(src, cv2.CAP_MSMF)
        if self.stream.isOpened():
            # (2592,1944)此处根据自己相机的像素值进行修改
            self.stream.set(cv2.CAP_PROP_FRAME_WIDTH, 2592)
            self.stream.set(cv2.CAP_PROP_FRAME_HEIGHT, 1944)
            self.stream.set(cv2.CAP_PROP_FOCUS,500) # 此处即为修改相机对焦参数的命令
        else:
            self.stream = cv2.VideoCapture(self.src + 1)
            self.stream.set(cv2.CAP_PROP_FRAME_WIDTH, 2592)
            self.stream.set(cv2.CAP_PROP_FRAME_HEIGHT, 1944)
            self.stream.set(cv2.CAP_PROP_FOCUS,500)

        通过上述代码可以看到,我们使用了self.stream.set(cv2.CAP_PROP_FOCUS, 500)来修改相机的对焦位置。通过查阅资料和实验,发现该参数的取值范围为0-1023,代表了相机的对焦位置从近到远,1023代表对焦在无限远。

        让相机进行自动对焦,方法也比较简单,只需要set(cv2.CAP_PROP_AUTOFOCUS, 1),此处值为1,代表开启自动对焦,值为0,代表关闭自动对焦。代码如下:

self.stream.set(cv2.CAP_PROP_AUTOFOCUS, 1)

三、注意事项

        使用以上方法,就可以实现USB相机的自动对焦和手动对焦了。但需要注意的是:调焦方法仅在有调焦功能的相机上适用并生效,以上set方法在调用成功后会返回True,定焦镜头无法调用成功,使用set方法进行调焦会返回False文章来源地址https://www.toymoban.com/news/detail-519300.html

到了这里,关于使用OpenCV的VideoCapture调整USB相机的对焦参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV VideoCapture使用方法(视频文件、摄像头、网络视频文件)

    cv::VideoCapture既支持视频文件的读取,也支持从摄像机中视频的读取。cv::VideoCapture对象的创建方式有以下三种: 方式一:     cv::VideoCapture capture(     const string filename, // 输入视频文件路径名     ); 方式二:     cv::VideoCapture capture(     int device // 输入摄像机视频捕捉设备

    2024年02月06日
    浏览(46)
  • Python OpenCV相机参数:如何获取和修改相机参数

    Python OpenCV相机参数:如何获取和修改相机参数 OpenCV是一个广泛使用的计算机视觉库,它提供了丰富的图像处理功能。在许多应用场景中,我们需要对相机进行参数设置,例如调整曝光时间、增益、白平衡等等,来获得更好的图像效果。本文将介绍如何使用Python编程,通过O

    2024年02月13日
    浏览(35)
  • OpenCV调用USB摄像头/相机,并解决1080p下的延迟卡顿问题(附Python代码)

    首先直接放上一段加载USB相机的例程供参考 摄像头成功加载出来,但是默认分辨率太低(我的相机支持的是1080p),通过如下代码设置分辨率和帧率: 此时分辨率是1080p了,但是延迟严重,在网上找了一堆方法, 几乎都不可用!!! : 设置格式为MJPG: == 无法解决问题,依

    2024年02月09日
    浏览(43)
  • 海康工业相机SDK + OpenCV实例(4):相机参数设置详解

    前文海康工业相机SDK + OpenCV实例(3):相机初始化Bug调试讲述了相机初始化可能遇到的问题。本文讲解海康工业相机设置参数的相关接口,其中,会重点讲解 自动曝光时间调整亮度 , 图像对比度调整 。 海康SDK提供一系列参数设置的接口,本节主要讲解几个万能接口的使用,

    2024年02月11日
    浏览(49)
  • 【相机标定】opencv python 标定相机内参时不计算 k3 畸变参数

    畸变参数 k3 通常用于描述径向畸变的更高阶效应,即在需要高精度的应用中可以用到,一般的应用中 k1, k2 足矣。 常见的应用中, orbslam3 中是否传入 k3 是可选的,而 kalibr 标定中则只需要传入 k1, k2 。但计算 k3 时的 k1, k2 不等于不计算 k3 时的 k1, k2 ,因此需要学会两种场景下

    2024年02月09日
    浏览(28)
  • 【MediaFoundation】OpenCV VideoCapture 读取音频源码

    在windows7 以及OpenCV4 过后可以使用 CAP_MSMF 读取音频,但是OpenCV没有播放音频的API。代码示例如下。 本文解析OpenCV CAP_MSMF 进行文件、设备的 音频读取,学习MediaFoundation 的使用。 配置音频流 configureAudioOutput 初始化流 initStream OpenCV捕获设备数据,采用异步模式,需要自定义一个

    2024年02月02日
    浏览(31)
  • 【报错处理】Pycharm使用OpenCV函数时提示“`cannot find reference ‘VideoCapture‘ in __init__.py`“

    Pycharm使用OpenCV函数时提示\\\" cannot find reference \\\'VideoCapture\\\' in __init__.py \\\" 在stackoverflow上找到了适合我的解决方法,方案步骤如下: 打开设置-Python Interpreter: 选择Show All: 点击’文件夹-子文件夹’图标: 添加路径 ...venvlibpython3.9site-packagescv2 至末尾: 一路ok确认,回到主界面

    2024年02月11日
    浏览(35)
  • python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)

    今天的低价单孔摄像机(照相机)会给图像带来很多畸变。畸变主要有两 种:径向畸变和切想畸变。如下图所示,用红色直线将棋盘的两个边标注出来, 但是你会发现棋盘的边界并不和红线重合。所有我们认为应该是直线的也都凸 出来了。 在 3D 相关应用中,必须要先校正这些畸变

    2024年02月06日
    浏览(35)
  • OpenCV入门(C++/Python)- 使用OpenCV调整尺寸大小(三)

    使用OpenCV调整图像大小。要调整图像的大小,可以根据每个轴(高度和宽度)进行缩放,考虑指定的缩放因素,或者只需设置所需的高度和宽度。 调整图像大小时: 如果想在调整后的图像中保持相同的宽高比,请务必记住图像的原始宽高比(即宽度和高度)。 缩小图像的大

    2024年02月07日
    浏览(32)
  • 【OpenCV常用函数:视频捕获函数】cv2.VideoCapture

    输入视频路径,创建VideoCapture的对象 该类的函数有: 1)video.isOpened: 检查视频捕获是否成功 2)video.read(): 读取视频帧,返回ret, frame,ret为bool类型,表示是否成功 3)video.release(): 关闭视频 4)video.get(prop): 获取video的属性 如果要读取视频的每一帧,然后进行相关的处理时,可

    2024年02月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包