opencv- python怎么关闭摄像头
时间: 2023-11-10 12:05:51 浏览: 472
要关闭摄像头,你可以使用 `cv2.VideoCapture.release()` 方法。这个方法会释放摄像头资源并关闭摄像头。
以下是一个简单的示例代码,展示如何使用 `release()` 方法关闭摄像头:
```
import cv2
# 打开摄像头
cap = cv2.VideoCapture(0)
# 检查摄像头是否成功打开
if not cap.isOpened():
print("无法打开摄像头")
exit()
# 读取并显示摄像头数据
while True:
ret, frame = cap.read()
cv2.imshow("frame", frame)
if cv2.waitKey(1) == ord("q"):
break
# 释放摄像头资源并关闭摄像头
cap.release()
cv2.destroyAllWindows()
```
在这个示例中,我们使用 `cap.release()` 方法在循环结束后关闭摄像头。
相关问题
用python3.8➕opencv-python(4.10)➕opencv-contrib-python(4.10)环境,写人脸采集可运行的代码
在Python 3.8环境中使用OpenCV (cv2) 和 contrib模块进行人脸采集,你可以使用`cv2.VideoCapture`来获取摄像头流,并结合`face_recognition`库来进行人脸识别。以下是一个简单的代码示例:
```python
# 首先需要安装必要的库
# 安装OpenCV
!pip install opencv-python==4.10.0
# 安装opencv_contrib_python
!pip install opencv-contrib-python==4.10.0
import cv2
from PIL import Image
import face_recognition
def capture_faces_from_webcam():
# 创建VideoCapture对象,这里默认是电脑内置摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取一帧视频
ret, frame = cap.read()
# 如果读取成功
if ret:
# 转换到灰度图像,便于处理
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 使用face_recognition识别人脸
face_locations = face_recognition.face_locations(gray)
for (top, right, bottom, left) in face_locations:
# 绘制矩形框
cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2)
# 将BGR颜色空间转换回RGB,因为PIL需要RGB
rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
pil_image = Image.fromarray(rgb_frame)
# 显示图片
pil_image.show()
# 按 'q' 键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
print("无法从摄像头读取数据")
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
capture_faces_from_webcam()
```
这个代码会在摄像头中实时捕获人脸并用绿色矩形框标记出来。当你按下'q'键时,程序会停止运行。
opencv-python显示摄像头
要在 OpenCV-Python 中显示摄像头,可以使用 `cv2.VideoCapture` 函数打开摄像头,并使用 `cv2.imshow` 函数显示摄像头的图像。以下是示例代码:
```python
import cv2
# 打开摄像头
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print("Failed to open camera.")
exit()
# 循环读取并显示摄像头图像
while True:
ret, frame = cap.read()
cv2.imshow("Camera", frame)
if cv2.waitKey(30) == ord('q'):
break
# 释放摄像头并关闭窗口
cap.release()
cv2.destroyAllWindows()
```
在上面的代码中,我们首先通过 `cv2.VideoCapture` 函数打开了编号为 0 的摄像头(如果有多个摄像头,可以通过修改编号来选择摄像头),然后循环读取并显示摄像头的图像。在读取图像时,我们使用了 `cap.read()` 语句,将摄像头的图像读取到了 `frame` 变量中。然后使用 `cv2.imshow` 函数在名为 "Camera" 的窗口中显示了 `frame` 中的图像。最后,我们使用 `cv2.waitKey` 函数等待键盘输入,如果用户按下了 "q" 键,就退出循环。在退出循环后,我们释放了摄像头资源,并关闭了显示窗口。
阅读全文