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.mzph.cn/pingmian/73927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CSS】相对位置小练习

要求&#xff1a; 成果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>相对位置小练习</title><link rel"stylesheet" href"./css/style.css…

外设的中断控制

如ADC、SPI、I2C、TIM等使用STM32 HAL库时的中断函数调用方式和UART非常类似&#xff0c;都有底层直接使能中断和上层库函数管理两种方式。下面详细说明几种典型外设&#xff1a; 一、ADC外设 &#xff08;1&#xff09;直接使能中断&#xff08;底层控制&#xff09;&#xf…

网络传输优化之多路复用与解复用

一、基本概念 多路复用 发送端将来自多个应用或进程的数据流合并到同一物理信道中传输的过程。核心目的是提高信道利用率&#xff0c;减少资源浪费。例如&#xff0c;多个网络应用&#xff08;如浏览器、邮件客户端&#xff09;通过不同端口将数据封装为报文段&#xff0c;共享…

【软考-架构】10.1、软件工程概述-CMM-软件过程模型-逆向工程

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 软件工程基础知识软件工程概述能力成熟度模型能力成熟度模型CMM能力成熟度模型集成CMMI &#x1f4af;考试真题第一题第二题 软件过程模型瀑布模型&#xff08;SDLC&#…

python将整个txt文件写入excel的一个单元格?

要将整个txt文件写入Excel的一个单元格&#xff0c;可以使用Python的openpyxl库来实现。以下是一个简单的示例代码&#xff1a; from openpyxl import Workbook# 读取txt文件内容 with open(file.txt, r) as file:txt_content file.read()# 创建一个新的Excel工作簿 wb Work…

车载以太网网络测试 -25【SOME/IP-报文格式-1】

1 摘要 本专题接着上一专题对SOME/IP进行介绍&#xff0c;主要对SOME/IP报文格式以及定义的字段进行详细介绍&#xff0c;有助于在实际项目过程中对SOME/IP报文的理解。 上文回顾&#xff1a; 车载以太网网络测试 -24【SOME/IP概述】 2 SOME/IP-报文格式 通过上个专题介绍&a…

【区块链安全 | 第五篇】DeFi概念详解

文章目录 DeFi1. DeFi 生态概览2. 去中心化交易所&#xff08;DEX&#xff09;2.1 AMM&#xff08;自动做市商&#xff09;模型2.2 订单簿模式&#xff08;现货交易&#xff09; 3. 借贷协议3.1 Aave3.2 使用闪电贷&#xff08;Flash Loan&#xff09; 4. 稳定币&#xff08;St…

问题:md文档转换word,html,图片,excel,csv

文章目录 问题&#xff1a;md文档转换word&#xff0c;html&#xff0c;图片&#xff0c;excel&#xff0c;csv&#xff0c;ppt**主要职责****技能要求****发展方向****学习建议****薪资水平** 方案一&#xff1a;AI Markdown内容转换工具打开网站md文档转换wordmd文档转换pdfm…

代码随想录刷题day53|(二叉树篇)106.从中序与后序遍历序列构造二叉树(▲

目录 一、二叉树理论知识 二、构造二叉树思路 2.1 构造二叉树流程&#xff08;给定中序后序 2.2 整体步骤 2.3 递归思路 2.4 给定前序和后序 三、相关算法题目 四、易错点 一、二叉树理论知识 详见&#xff1a;代码随想录刷题day34|&#xff08;二叉树篇&#xff09;二…

前端知识点---用正则表达式判断邮箱(javascript)

// 全面的正则&#xff08;兼容大多数情况&#xff09; const emailRegex /^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}$/;// 或直接使用浏览器内置验证 <input type"email" required>/&#xff1a;正则表达式的起始和结束标志。 ^&#xff1a;匹配字符串的…

PyQt6实例_批量下载pdf工具_界面开发

目录 前置&#xff1a; 代码&#xff1a; 视频&#xff1a; 前置&#xff1a; 1 本系列将以 “PyQt6实例_批量下载pdf工具”开头&#xff0c;放在 【PyQt6实例】 专栏 2 本系列涉及到的PyQt6知识点&#xff1a; 线程池&#xff1a;QThreadPool,QRunnable&#xff1b; 信号…

在word中使用zotero添加参考文献并附带超链接

一、引言 在写大论文时&#xff0c;为了避免文中引用与文末参考文献频繁对照、修改文中引用顺序/引用文献时手动维护参考文献耗易出错&#xff0c;拟在 word 中使用 zotero 插入参考文献&#xff0c;并为每个参考文献附加超链接&#xff0c;实现交互式阅读。 版本&#xff1a…

Selenium文件上传

在 Web 自动化测试中,文件上传是一项常见的任务。不同的网站和前端技术可能导致上传方式有所不同,因此需要采用不同的方法进行处理。 方法 1:使用 send_keys() 直接上传(最常用) 适用场景: 页面中 有标准的 <input type="file"> 标签。 不需要弹出 Wind…

线程概念与控制(中)

线程概念与控制&#xff08;上&#xff09;https://blog.csdn.net/Small_entreprene/article/details/146464905?sharetypeblogdetail&sharerId146464905&sharereferPC&sharesourceSmall_entreprene&sharefrommp_from_link我们经过上一篇的学习&#xff0c;接…

【Unity】 鼠标拖动物体移动速度跟不上鼠标,会掉落

错误示范&#xff1a; 一开始把移动的代码写到update里去了&#xff0c;发现物体老是掉(总之移动非常不流畅&#xff0c;体验感很差&#xff09; void Update(){Ray ray Camera.main.ScreenPointToRay(Input.mousePosition);if (Physics.Raycast(ray, out RaycastHit hit, M…

MATLAB 控制系统设计与仿真 - 30

用极点配置设计伺服系统 方法2-反馈修正 如果我们想只用前馈校正输入&#xff0c;从而达到伺服控制的效果&#xff0c;我们需要很精确的知道系统的参数模型&#xff0c;否则系统输出仍然具有较大的静态误差。 但是如果我们在误差比较器和系统的前馈通道之间插入一个积分器&a…

VMware Windows Tools 存在认证绕过漏洞(CVE-2025-22230)

漏洞概述 博通公司&#xff08;Broadcom&#xff09;近日修复了 VMware Windows Tools 中存在的一个高危认证绕过漏洞&#xff0c;该漏洞编号为 CVE-2025-22230&#xff08;CVSS 评分为 9.8&#xff09;。VMware Windows Tools 是一套实用程序套件&#xff0c;可提升运行在 VM…

罗杰斯特回归

定义 逻辑回归其实就是原来的线性回归加了激活函数&#xff0c;这个函数其实就是sigmoid函数&#xff0c;把一个回归的连续数值压缩到了0到1的空间&#xff0c;其实只要有函数能够满足把数值压缩到0,1之间就可以&#xff08;因为0到1之间的数值就是概率值&#xff09; 对于分类…

Java多线程与JConsole实践:从线程状态到性能优化!!!

目录 一、前言二、JConsole 使用教程二、线程的基本状态2.1新建状态&#xff08;New&#xff09;2.2就绪状态&#xff08;Ready&#xff09;2.3运行状态&#xff08;Running&#xff09;2.4 阻塞状态&#xff08;Blocked&#xff09;2.5. 等待状态&#xff08;Waiting&#xff…

基于django优秀少儿图书推荐网(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;图书推荐网当然不能排除在外。本次开发的优秀少儿图书推荐网是在实际应用和软件工程的开发原理之上&#xff0c;运用Python语言、爬虫技术…