📜  从网络摄像头拍照 python (1)

📅  最后修改于: 2023-12-03 15:06:38.651000             🧑  作者: Mango

从网络摄像头拍照 - Python

在本篇文章中,我们将介绍如何使用Python编写程序从网络摄像头中获取图像,并保存成图片文件。本文假设读者已经掌握了Python基础语法,并且已经安装了所需的Python库。

步骤
1. 导入所需的Python库

首先,我们需要导入所需的Python库,包括cv2urllibnumpy。我们将使用cv2库来读取图像,urllib库来连接网络摄像头,并使用numpy库来处理图像数据。

import cv2
import urllib.request
import numpy as np
2. 连接网络摄像头

接下来,我们需要连接到网络摄像头。假设我们已经知道了网络摄像头的IP地址和端口号,我们可以使用urllib库中的urlretrieve函数来连接到网络摄像头并获取图像。这里我们使用的网络摄像头的IP地址为192.168.0.100,端口号为8080

url = 'http://192.168.0.100:8080/shot.jpg'
img_resp = urllib.request.urlopen(url)
3. 读取图像数据

通过上面的代码,我们已经成功从网络摄像头获取了图像。为了可以对图像进行处理,我们需要先将这个图像的数据转换成numpy数组格式。我们可以使用cv2库的imdecode函数来完成这一步骤。

img_arr = np.array(bytearray(img_resp.read()), dtype=np.uint8)
img = cv2.imdecode(img_arr, -1)
4. 显示图像

现在,我们已经成功获取了网络摄像头中的图像,并将其保存成了numpy数组格式的img变量。接下来,我们可以使用cv2库的imshow函数来显示这个图像。

cv2.imshow('img', img)
cv2.waitKey(0)
5. 保存图像

最后,我们可以使用cv2库的imwrite函数将这个图像保存成文件格式,以便以后可以继续处理。

cv2.imwrite('img.jpg', img)
完整代码
import cv2
import urllib.request
import numpy as np

# 连接网络摄像头
url = 'http://192.168.0.100:8080/shot.jpg'
img_resp = urllib.request.urlopen(url)

# 读取图像数据
img_arr = np.array(bytearray(img_resp.read()), dtype=np.uint8)
img = cv2.imdecode(img_arr, -1)

# 显示图像
cv2.imshow('img', img)
cv2.waitKey(0)

# 保存图像
cv2.imwrite('img.jpg', img)

以上就是从网络摄像头拍照的全部内容。在使用时,可以将上面的代码拷贝到Python文件中执行即可。