📌  相关文章
📜  如何使用网络摄像头 opencv 捕获单张照片 - Python (1)

📅  最后修改于: 2023-12-03 14:52:06.122000             🧑  作者: Mango

如何使用网络摄像头 OpenCV 捕获单张照片 - Python

在使用 OpenCV 进行计算机视觉开发时,常常需要使用到摄像头捕获实时图像或是照片,因此本文将介绍如何使用 OpenCV 捕获网络摄像头的单张照片。

准备

在开始之前,需要确保已经安装了 OpenCV 和相应的网络摄像头驱动程序。

import cv2
import urllib.request
import numpy as np
程序实现

使用 OpenCV 捕获网络摄像头的单张照片的步骤如下:

  1. 打开网络摄像头:
    stream = urllib.request.urlopen('http://url-to-video-stream')
    
  2. 读取缓冲区中的帧:
    bytes = bytes()
    while True:
        bytes += stream.read(1024)
        a = bytes.find(b'\xff\xd8')
        b = bytes.find(b'\xff\xd9')
        if a != -1 and b != -1:
            break
    
  3. 将帧转换为 OpenCV 图像:
    img = cv2.imdecode(np.fromstring(bytes[a:b+2], dtype=np.uint8), cv2.IMREAD_COLOR)
    
  4. 展示实时图像:
    cv2.imshow('Stream',img)
    
  5. 捕获单张照片并保存到本地:
    cv2.imwrite('capture.jpg', img)
    
完整代码
import cv2
import urllib.request
import numpy as np

stream = urllib.request.urlopen('http://url-to-video-stream')
bytes = bytes()
while True:
    bytes += stream.read(1024)
    a = bytes.find(b'\xff\xd8')
    b = bytes.find(b'\xff\xd9')
    if a != -1 and b != -1:
        break

img = cv2.imdecode(np.fromstring(bytes[a:b+2], dtype=np.uint8), cv2.IMREAD_COLOR)
cv2.imshow('Stream',img)
cv2.imwrite('capture.jpg', img)

if cv2.waitKey(1) & 0xFF == ord('q'):
    break

cv2.destroyAllWindows()

通过以上代码,你已经可以使用 OpenCV 捕获网络摄像头的单张照片了,而且相当简单易用。