当前位置: 首页 > 面试题库 >

在OpenCV / Python中设置相机参数

濮泳
2023-03-14
问题内容

我正在使用带有Thorlabs(DC1545M)USB摄像头的OpenCV(2.4)和Python(2.7.3)。

我正在对视频流进行一些图像分析,我希望能够从我的视频流中更改某些相机参数。令人困惑的是,我可以更改某些相机属性,但不能更改所有属性,而且我不确定自己做错了什么。

这是在Python中使用cv2绑定的代码,我可以确认它可以运行:

import cv2


#capture from camera at location 0
cap = cv2.VideoCapture(0)
#set the width and height, and UNSUCCESSFULLY set the exposure time
cap.set(3,1280)
cap.set(4,1024)
cap.set(15, 0.1)

while True:
    ret, img = cap.read()
    cv2.imshow("input", img)
    #cv2.imshow("thresholded", imgray*thresh2)

    key = cv2.waitKey(10)
    if key == 27:
        break


cv2.destroyAllWindows() 
cv2.VideoCapture(0).release()

作为参考, cap.set() 命令中的第一个参数引用相机属性的枚举,如下所示:

0. CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds.
1. CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
2. CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file
3. CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
4. CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
5. CV_CAP_PROP_FPS Frame rate.
6. CV_CAP_PROP_FOURCC 4-character code of codec.
7. CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
8. CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
9. CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
10. CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
11. CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
12. CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
13. CV_CAP_PROP_HUE Hue of the image (only for cameras).
14. CV_CAP_PROP_GAIN Gain of the image (only for cameras).
15. CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
16. CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
17. CV_CAP_PROP_WHITE_BALANCE Currently unsupported
18. CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently)

我的问题是:

是否可以通过python / opencv设置相机曝光时间(或其他相机参数)?

如果没有,我将如何设置这些参数?

注意:相机制造商提供了C 代码来显示如何执行此操作,但是我不是C 的专家(长期来看),并且希望使用任何基于python的解决方案。

提前致谢!


问题答案:

并非所有摄像机都支持所有参数-实际上,它们是OpenCV库中最麻烦的部分之一。每种相机类型-
从android相机到USB相机再到专业相机,都提供了不同的界面来修改其参数。OpenCV代码中有许多分支可以支持其中的许多分支,但是当然并非涵盖所有可能性。

您可以做的是调查相机驱动程序,为OpenCV编写补丁,然后将其发送到code.opencv.org。这样,别人会喜欢您的工作,就像您喜欢别人的工作一样。

您的相机也有可能不支持您的请求-大多数USB凸轮既便宜又简单。也许该参数不可用于修改。

如果您确定相机支持给定的参数(您说相机制造商提供了一些代码)并且不想弄乱OpenCV,则可以使用boost :: python将该示例代码包装在C
++中,以使其在Python中可用。然后,享受使用它。



 类似资料:
  • 我正在使用OpenCV(2.4)和Python(2.7.3)以及Thorlabs(DC1545M)的USB摄像头。 我正在视频流上做一些图像分析,我希望能够从我的视频流中更改一些相机参数。令人困惑的是,我能够改变一些相机属性,但不是全部,我不确定我做错了什么。 下面是使用Python中的cv2绑定的代码,我可以确认它是否运行: 作为参考,cap中的第一个参数。set()命令引用摄影机属性的枚举,如

  • 我正在开发一个应用程序,在这个应用程序中,我以纵向方向拍摄照片,问题是当我稍后检索图像时,它是横向方向的(图片已逆时针旋转90度)。我曾经在课下使用过,但这里每次都是0(零)。所以,我不知道怎么解决它。

  • 问题内容: 如何访问我的IP摄像机流? 用于显示标准网络摄像头流的代码是 除了IP摄像机,我该如何做同样的事情? 我的系统: Python 2.7.14 OpenCV 2.4.9 Teledyne Dalsa Genie Nano XL相机 帮助将不胜感激 您可以将视频捕获对象用作 问题答案: 我回答了我自己的问题,报告了什么似乎是Python OpenCV中访问IP摄像机的 最全面的 总体过程。

  • 注 原英文文档无此章节。 Debian 及由其派生出的 Ubuntu 作为普及度较广的 Linux 发行版之一,应该有一篇针对 Debian 家族的 OpenCV-Python 环境配置的文档。 本文档采用 OpenCV 3.3+Python 3的配置,因为 Python3 是 Python 的未来,教程其他部分中有少部分代码只能用于 Python 2(虽然将其改成合法Python 3代码十分方便

  • 问题内容: 我正在学习如何使用mplot3d生成漂亮的3d数据图,到目前为止我很高兴。我现在想做的是旋转表面的动画效果。为此,我需要为3D投影设置相机位置。我猜这一定是有可能的,因为在交互使用matplotlib时,可以使用鼠标旋转表面。但是如何从脚本执行此操作?我在mpl_toolkits.mplot3d.proj3d中找到了很多转换,但是我找不到如何使用这些转换的目的,也没有找到任何尝试的示例

  • 问题内容: 我正在试验Jenkins,并且正在寻找一种方法来允许Jenkins为不同的项目构建设置参数。通常,所有这些属性都存储在settings.xml中(我目前为运行Jenkins的用户提供了settings.xml,其中包括默认属性和我的存储库)。 我想要同一项目的不同版本,这些版本特定于不同的Maven参数以及不同的目标。(有一项工作经常运行编译检查,另一项工作每小时将应用程序部署到测试服

  • 顺便说一下,这是相机对GET/system/deviceinfo的响应: 之前,我尝试使用所有三种EOL类型(Mac、linux、DOS),然后将它们全部删除,如上面的代码所示。我知道身份验证是有效的,因为我能从摄像机里读到任何东西。我还可以成功地发送没有数据或XML块要求的PUT命令,例如重新启动。所以我怀疑通过curl发送XML的方式存在一些问题。另外,我可以在登录时通过网络浏览器更改设备名称

  • 我正在使用opencv进行相机标定。我正在使用"Cook book编程"中给出的相同代码。 我不知道我的代码出了什么问题。代码如下:- 在相机标定类,它打开图像成功但它失败findChessboardCorners行...