当前位置: 首页 > news >正文

AI基础02-图片数据采集

        上篇文章我们学习了文本的数据采集,今天主要了解一下图片数据采集的方法。图片采集方法通常有网页采集和实时采集(传感器采集)两种。我们学习一下如何利用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()  #删除建立的所有窗口

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

http://www.dtcms.com/a/98553.html

相关文章:

  • 红宝书第二十讲:详解JavaScript的Proxy与Reflect
  • 【自学笔记】Go语言基础知识点总览-持续更新
  • Sentinel 相关知识点
  • 【第34节】windows原理:PE文件的导出表和导入表
  • Linux 文件系统全解析
  • 202518 | Ngnix
  • MAUI开发Device.BeginInvokeOnMainThread使用
  • python专题1-----判断一个变量是否是字符串类型
  • 代码随想录算法训练营--打卡day4
  • windows第二十章 单文档应用程序
  • 基于大语言模型的智能音乐创作系统——从推荐到生成
  • Jenkins教程(自动化部署)
  • 纯个人整理,蓝桥杯使用的算法模板day1(dfs、bfs)
  • Axure疑难杂症:完美解决中继器筛选问题(时间条件筛选、任性筛选)
  • 信号与系统(郑君里)第一章-绪论 1-22 课后习题解答
  • jdk 支持路线图
  • gamma函数与zeta函数的关系
  • 【大数据技术】大数据技术概念及概述
  • QT音乐播放器(1):数据库保存歌曲
  • Vue Kubernetes项目 局部布局面包屑 el-breadcrumb
  • Matlab教程004:Matlab矩阵的拼接重构重排以及矩阵的运算
  • 测试测试 测试
  • Kubernetes》k8s》Containerd 、ctr 、cri、crictl
  • 每日一题 MySQL基础知识----(四)
  • Java 大视界 -- Java 大数据机器学习模型在电商商品推荐冷启动问题中的解决策略(160)
  • [Python学习日记-88] 并发编程之多进程 —— 队列与生产者消费者模型
  • 赛博威智慧导购平台,融合AI激活一线导购效能,破局增长瓶颈
  • 目标识别与双目测距(1)环境搭建:Ubuntu+yolov5+pcl库
  • JAVA学习*工厂模式
  • Python容器详解:从字符串到字典的完整指南