当前位置:   article > 正文

opencv 没办法控制焦距怎么办?来试一下 pyuvc 吧_rust opencv cap_prop_autofocus

rust opencv cap_prop_autofocus

大部分时候,我们都是通过 opencv 来读取 usb 摄像头的帧图像的。几乎所有的 usb 摄像头是可以进行自动对焦的,除非它是定焦的。当我们想要通过代码来控制摄像头的焦距的时候,会发现,有很多时候 opencv 的 API 没有办法进行有效的控制。

比较基础的 opencv 控制焦距的代码如下:

import cv2

def do_nothing(x):
	pass

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_AUTOFOCUS, 0)
cv2.namedWindow('img', cv2.WINDOW_NORMAL)
cv2.createTrackbar('focus', 'img', 0, 127, do_nothing) 

while True:
	focus_val = cv2.getTrackbarPos('focus', 'img')
	cap.set(cv2.CAP_PROP_FOCUS, focus_val)
	_, img = cap.read()
	
	cv2.imshow('img', img)
	
	key = cv2.waitKey(1)
	if key == 27:
		break

cv2.destroyAllWindows()
cap.release()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

上面的代码正常来说,可以通过进度条的数值来对摄像头的焦距进行控制,但是实际上,在我的摄像头上并不行。不管怎么拖动进度条,焦距都是没有任何变化,而且设置的自动对焦为 False 也不起作用,相机还是会进行自动对焦。

但是因为我使用 window 相机的高级设置测试过,确实是可以手动调整焦距的,所以我觉得这波 opencv 应该负全责。

但是 opencv 用不了,问题还是没解决,我想着相机厂家应该会有相应的 SDK 来进行控制,于是满心欢喜的发了一条微信过去,可是消息却石沉大海,了无音讯。

最后在网上找到了一个 uvc 的 python 封装解决了我的问题。

项目地址:pyuvc

通过几句简单的代码,就实现了 opencv 实现不了的对焦控制功能(具体的安装步骤官方 github 仓库里面有,这里就不展开了)

import cv2
import uvc

def do_nothing(x)
	pass

dev = uvc.device_list()[0]
cap = uvc.Capture(dev['uid'])
cap.controls[2].value = 0 # close auto focus

cv2.namedWindow('img', cv2.WINDOW_NORMAL)
cv2.createTrackbar('focus', 'img', 0, 127, do_nothing) 

while True:
	focus_val = cv2.getTrackbarPos('focus', 'img')
	cap.controls[3].value = focus_val
	
	img = cap.get_frame_robust().bgr
	
	cv2.imshow('img', img)
	
	key = cv2.waitKey(1)
	if key = 27:
		break

cv2.destoryAllWindow()
cap.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

上面这段代码就可以轻松通过 uvc 实现焦距的控制。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/523864
推荐阅读
相关标签
  

闽ICP备14008679号