物体被破坏后相机保持亮起,如何在OpenCV 4.1.2.30中关闭相机LED?



即使该过程完成,相机的 LED 也不会熄灭。我只是创建了一个功能来捕获图像,然后必须关闭相机,但这并没有发生。

我什至尝试编写.release()函数和.VideoCaptureRelease()函数,但都徒劳无功。

我使用的Python版本是3.6.9,在Linux(Ubuntu 18.04(上,在PyCharm IDE 19.3.2上。在所有openCV版本之上是4.1.2.30

问题在 openCV 4.1.0.25 中没有出现!

无论如何,在最新版本的OpenCV中,出乎意料的是,使用相机后LED会永久亮起。这是我的小任务的代码:

from cv2 import *
import os

class Camera:
def capture_pic():
cam = VideoCapture(0)
s, img = cam.read()
if s:
namedWindow("cam-test", flags=WINDOW_AUTOSIZE)
imshow("cam-test", img)
waitKey(0)
destroyWindow("cam-test")
imwrite("test_pic.jpg", img)  # save image
imshow('test_pic.jpg', img)
waitKey(0)
destroyAllWindows()
cam.release()   # Used but no results
Camera.capture_pic()

任何建议或帮助将不胜感激。

提前致谢

此问题首先在此处报告,似乎是由MSMF 捕获后端中的问题引起的。

有些人报告说,临时修复是在运行脚本之前将以下环境变量设置为0

export OPENCV_VIDEOIO_PRIORITY_MSMF=0

您可以在if 语句之后释放凸轮,然后进入无限 while 循环以保持openCV屏幕打开。

此外,您可以添加带有waitkey的条件来中断循环,然后关闭窗口。

from cv2 import *
import os

class Camera:
def capture_pic():
cam = VideoCapture(0)
s, img = cam.read()
if s:
namedWindow("cam-test", flags=WINDOW_AUTOSIZE)
imshow("cam-test", img)
destroyWindow("cam-test")
imwrite("test_pic.jpg", img)  # save image
cv2.imshow('test_pic.jpg', img)
cam.release()   # release the cam just after showing your image.
while True:
if cv2.waitKey(1) & 0xFF == ord('q'):
destroyAllWindows()
break

Camera.capture_pic()

最新更新