关闭OpenCV Python中的网络摄像头

3

我想关闭网络摄像头,在使用cap.release()后,它没有在捕获图像后关闭网络摄像头。以下是我的代码:

import cv2
import matplotlib.pyplot as plt
def main():
     cap=cv2.VideoCapture(0)
     if cap.isOpened():
             ret, frame = cap.read()
             print(ret)
             print(frame)
     else:
         ret=False
     img1=  cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
     plt.imshow(img1)
     plt.title('Color Image RGB')
     plt.xticks([])
     plt.yticks([])
     plt.show()
     cap.release() 
if __name__=='__main__':
     main() 

1
你的主函数为空。你应该先修复它。 - user2261062
请制作一个适当的 [mcve] -- 修正缩进,并删除任何不相关的内容(例如,matplotlib 与问题有什么关系?)另外,当 cap.release() 出现在您的示例中的最后一条语句时,您如何知道它没有被释放? - Dan Mašek
我的网络摄像头灯还亮着。 - Mohammad Arshad
我看不到if语句。另外,请检查else部分后面的代码是否正常执行。 - Hayat
1
请修复代码,使得其他人可以从问题中复制并粘贴代码,并且能够看到与您相同的结果。同时,请说明您是如何运行此代码的。 - ImportanceOfBeingErnest
@MohammadArshad 你使用的OpenCV版本是什么?使用的平台是什么? - Dan Mašek
1个回答

3
摄像头将保持激活状态,直到关闭图像,即脚本完成为止。这是因为您只在此之后释放捕获。
plt.show()
cap.release() 

如果您想在拍照后关闭相机,请反转此顺序。
cap.release() 
plt.show()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接