OpenCV 设置破坏网络摄像头后如何将其恢复为默认设置?

And*_*atu 5 opencv python-3.6

我需要来自网络摄像头的视频。在带有 python-3.6 和 OpenCV-3 的 Anaconda 上,它工作得很好。然后我在 Idle 中使用 python-3.6 和 OpenCV-4.1.0 尝试了相同的代码,但它在 anaconda 中不起作用。我有两个黑色的上下边缘,我只能看到图像的中间。我尝试修改一些 OpenCV 设置,但情况变得更糟,现在只有在强光照射下,我在图像上几乎看不到任何东西。两条边并没有消失。

import cv2

capture = cv2.VideoCapture(0)
capture.set(cv2.CAP_PROP_SETTINGS, 0)

while(True):

    ret, frame = capture.read()
    cv2.imshow('video', frame)
    if cv2.waitKey(1) == 27:
        break

capture.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

该行capture.set(cv2.CAP_PROP_SETTINGS, 0)会打开一个小的设置对话框,但还有许多其他对话框,如下所示:

  1. CV_CAP_PROP_POS_MSEC 视频文件的当前位置(以毫秒为单位)。
  2. CV_CAP_PROP_POS_FRAMES 下一个要解码/捕获的帧的基于 0 的索引。
  3. CV_CAP_PROP_POS_AVI_RATIO 视频文件的相对位置
  4. CV_CAP_PROP_FRAME_WIDTH 视频流中帧的宽度。
  5. CV_CAP_PROP_FRAME_HEIGHT 视频流中帧的高度。
  6. CV_CAP_PROP_FPS 帧速率。
  7. CV_CAP_PROP_FOURCC 编解码器的 4 字符代码。
  8. CV_CAP_PROP_FRAME_COUNT 视频文件中的帧数。
  9. CV_CAP_PROP_FORMATretrieve() 返回的 Mat 对象的格式。
  10. CV_CAP_PROP_MODE 指示当前捕获模式的后端特定值。
  11. CV_CAP_PROP_BRIGHTNESS 图像的亮度(仅适用于相机)。
  12. CV_CAP_PROP_CONTRAST 图像对比度(仅适用于相机)。
  13. CV_CAP_PROP_SATURATION 图像的饱和度(仅适用于相机)。
  14. CV_CAP_PROP_HUE 图像的色调(仅适用于相机)。
  15. CV_CAP_PROP_GAIN 图像增益(仅适用于相机)。
  16. CV_CAP_PROP_EXPOSURE 曝光(仅适用于相机)。
  17. CV_CAP_PROP_CONVERT_RGB 布尔标志,指示图像是否应转换为 RGB。
  18. CV_CAP_PROP_WHITE_BALANCE 目前不支持
  19. CV_CAP_PROP_RECTIFICATION 立体相机的校正标志(注意:当前仅受 DC1394 v 2.x 后端支持)

我尝试安装华硕的一些相机驱动程序,但找不到适合我的型号的驱动程序:FX504GE。是否可以通过此设置或其他方式的组合来恢复我的网络摄像头?我真的很需要它...

Dr *_*hai 0

简单的方法是在启动相机时使用 v4l2-ctrl 读取所有参数。记录初始值。在你完成opencv之后。使用 v4l2-ctrl 进行设置。

例如。尺寸

v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=YUYV
Run Code Online (Sandbox Code Playgroud)

还有其他像自动缩放自动曝光和很多东西读取所有并设置所有