AI基础02-图片数据采集

发布于:2025-04-03 ⋅ 阅读:(61) ⋅ 点赞:(0)

        上篇文章我们学习了文本的数据采集,今天主要了解一下图片数据采集的方法。图片采集方法通常有网页采集和实时采集(传感器采集)两种。我们学习一下如何利用python 工具和笔记本计算机摄像头进行图片数据的实时采集。

1)cv2库简介

cv2 是OpenCV库的升级,它是一个跨平台的计算机视觉库,适用于实时视觉应用程序,支持Linux、Windows、Mac OS 等系统。

使用前安装:pip install opencv-python

导入:import cv2

2)图片采集相关的cv2库函数使用方法

 a、打开摄像头

‌cv2.VideoCapture()‌是OpenCV库中的一个类,主要用于视频的捕获和处理。它既可以用来从摄像头捕获实时视频,也可以从视频文件中读取帧。

cv2.VideoCapture(摄像头ID) #开启摄像头,并完成摄像头的初始化操作。

使用cv2.VideoCapture(0)可以打开默认的摄像头(通常是内置摄像头)。参数0表示使用第一个摄像头设备,如果有多个摄像头,可以通过更改参数索引来选择不同的摄像头。

b、检查摄像头是否被打开

cv2. VideoCapture.isOpened()方法,检查摄像头是否初始化成功的方过方法,如果成功返回True,否在返回False。举例如下:

cap = cv2.VideoCapture(0) #开启摄像头
if cap.isOpened():
    print("摄像头正常打开了!")
else:
    print("摄像头打开错误!")

c、捕获每一帧图片的方法

cv2. VideoCapture.read() 方法,它是捕获帧方法,能获取视频中的每一帧图像。

如:ret_flag,img_camera = cv2. VideoCapture.read()

其中ret_flag表示是否捕获成功,返回布尔值类型;img_camera 表示返回捕获的帧信息,即图像。如果没有获取帧信息,该值为空。

d、保存图片方法

cv2.imwrite(imfilename, img_camera)

经C步骤获取到的图像以名称imfilename来保存起来,可以指定文件路径

#照片保存路径
img_dir =  "D:\\dewi\\project2024\\myListPractice\\pythonProject1\\test_data\\caputure_pics\\"

filename = “001.jpg”

imfilename = img_dir + filename

cv2.imwrite(imfilename, img_camera)

e、关闭摄像头

cv2. VideoCapture.release()方法。当捕获帧或者摄像头使用结束后,需要释放该资源,即关闭摄像头。

3)举例通过笔记本摄像头获取一个图片

最基本参考代码如下:

import cv2

# 创建一个VideoCapture对象,参数0通常表示电脑的默认摄像头
cap = cv2.VideoCapture(0)

# 检查摄像头是否成功打开
if not cap.isOpened():
   
print("无法打开摄像头")
   
exit()

# 拍照,返回一个布尔值表示是否成功
ret, frame = cap.read()
img_dir = 
"D:\\dewi\\project2024\\myListPractice\\pythonProject1\\test_data\\caputure_pics\\"
file_name = img_dir + f"photo_001.jpg"
# 检查照片是否成功获取
if ret:
   
# 保存照片,文件名包含当前时间
    cv2.imwrite(file_name, frame)
   
print(f"照片已保存为 photo_001.jpg")
else:
   
print("拍照失败")

# 释放VideoCapture对象
cap.release()
cv2.destroyAllWindows()
#删除建立的所有窗口

4)进阶练习

假如在3)基础上,每张图片为避免名称重复需要假如时间戳。同时我们每10秒获取一帧图片,连续获取一个小时。参考如下:

import cv2  #cv2库时OpenCV 库的升级
import time

#照片保存路径
img_dir =  "D:\\dewi\\project2024\\myListPractice\\pythonProject1\\test_data\\caputure_pics\\"

cap = cv2.VideoCapture(0) #开启摄像头
if cap.isOpened():
   
print("摄像头正常打开了!")
else:
   
print("摄像头打开错误!")
# 构建文件名
for i in range(360): #获取次数360次,每10秒获取一张
    # 获取当前系统时间戳(秒)
    current_timestamp = time.time()

   
# 转换为本地时间
    current_time = time.localtime(current_timestamp)

   
# 格式化输出
    formatted_time = time.strftime("%Y-%m-%d_%H%M%S", current_time)

   
#每张照片命名方式
    #filename = f"pic_{formatted_time}.jpg"
   
filename = "photo_"+formatted_time + ".jpg"
   
img_name = img_dir + filename

    ret_flag,img_camera = cap.read() 
#捕捉图片
    cv2.imwrite(img_name,img_camera)  #保存图片
    print(f"保存了照片,命名为:{filename}")
    time.sleep(
10)

cap.release()  
#释放所有摄像头
cv2.destroyAllWindows()  #删除建立的所有窗口

每天进步一点点,继续加油!


网站公告

今日签到

点亮在社区的每一天
去签到