【python进阶】txt excel pickle opencv操作demo
文章目录
- 1. txt读写
- 读
- 综合案例 日志文件读写
- 2. excel读写
- 读取csv
- 读取xlsx
- 3. matplotlib 案例
- 折线图
- 多个折现图
- 散点图
- 柱状图
- 饼状图
- 4 opencv 案例
- 加载与展示图片
- 缩放图片
- 旋转图片
- 保存图片
- 读取摄像头
- 视频保存
- opencv 综合案例
- 5 pickle 案例
1. txt读写
读
file.read()
file.readlines()
file.readline()
# # 使用 'read' 方法读取文件的所有内容
with open('resources/training_log.txt', 'r') as file:content = file.read()print(content)# 使用 'readline' 方法逐行读取文件
with open('.\\resources/training_log.txt', 'r') as file:line = file.readline()# print(line)while line:print(line, end='')line = file.readline()# 使用 'readlines' 方法读取文件的所有行
with open('.\\resources/training_log.txt', 'r') as file:lines = file.readlines()# print(lines)for line in lines:print(line, end='')## 写
> f.write()
> f.writelines()```python
# 使用 'write' 方法写入文件
# with open('resources/example_1.txt', 'w') as file:
# file.write("Hello, World!")# 使用 'writelines' 方法写入文件
lines = ["Hello, World!", "Welcome to Python programming."]
with open('resources/example_2.txt', 'w') as file:file.writelines(line + '\n' for line in lines)
综合案例 日志文件读写
f.write
写一段代码,模拟生成accuracy逐步上升、loss逐步下降的训练日志,并将日志信息记录到 training_log.txt中
import randomepoch = 100
accuracy = 0.5
loss = 0.9with open('training_log.txt', 'w') as f:f.write('Epoch\tAccuracy\tLoss\n')for epoch_i in range(1, epoch+1):accuracy += random.uniform(0, 0.005)loss -= random.uniform(0, 0.005)accuracy = min(1, accuracy)loss = max(0, loss)f.write(f'{epoch_i}\t{accuracy:.3f}\t{loss:.3f}\n')print(f'Epoch:{epoch_i}, Accuracy:{accuracy}, Loss:{loss}')
2. excel读写
读取csv
pd.read_csv()
读取xlsx
pd.read_excel()
3. matplotlib 案例
折线图
import numpy as np
import matplotlib.pyplot as plt# 创建一个x值的数组,从-2π到2π,步长为0.01
x = np.arange(-2 * np.pi, 2 * np.pi, 0.01)# 计算每个x值对应的sin(x)值
y = np.sin(x)# 使用matplotlib来绘制图像
plt.figure() # 创建一个新的图像窗口
plt.plot(x, y) # 绘制折线图
plt.title('sin(x)') # 设置图像的标题
plt.xlabel('x') # 设置x轴的标签
plt.ylabel('sin(x)') # 设置y轴的标签
plt.grid(True) # 显示网格
plt.show() # 显示图像
##读取YOLO数据后画出曲线图
import pandas as pd
import matplotlib.pyplot as pltdata_loc = r'resources/yolov5s.csv'data = pd.read_csv(data_loc, index_col=0)train_bbox_loss = data[' train/box_loss']x_list = [i for i in range(len(train_bbox_loss))]
plt.plot(x_list, train_bbox_loss)
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.title('YOLOv5s')
plt.show()
多个折现图
import pandas as pd
import matplotlib.pyplot as pltfile_1_loc = './resources/yolov5l.csv'
file_2_loc = 'C:\WORK\xuxiu\learn\AI\class\【0】源码+PDF课件+电子书\【0】源码+PDF课件+电子书\源码+PDF课件\第3周资料\第三周课程代码\代码\3.matplotlib_demos\resources\yolov5m.csv'
file_3_loc = './resources/yolov5s.csv'file_1 = pd.read_csv(file_1_loc)
file_2 = pd.read_csv(file_2_loc)
file_3 = pd.read_csv(file_3_loc)file_1_train_box_loss = file_1[' train/box_loss']
file_2_train_box_loss = file_2[' train/box_loss']
file_3_train_box_loss = file_3[' train/box_loss']x_list = [i for i in range(len(file_1_train_box_loss))]plt.plot(x_list, file_1_train_box_loss)
plt.plot(x_list, file_2_train_box_loss)
plt.plot(x_list, file_3_train_box_loss)plt.xlabel("Epoch")
plt.ylabel("Loss")
plt.title("Train box_loss")
plt.grid()plt.legend(['yolov5l', 'yolov5m', 'yolov5s'])plt.show()
散点图
plt.scatter
柱状图
plt.bar
plt.bar(x, values, color=‘blue’, align=‘center’, alpha=0.7)
饼状图
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct=‘%1.1f%%’, shadow=True, startangle=140)
import matplotlib.pyplot as plt# 数据
sizes = [15, 30, 45, 10] # 各部分的大小
labels = ['A', 'B', 'C', 'D'] # 各部分的标签
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue'] # 各部分的颜色
explode = (0.1, 0, 0, 0) # 突出显示第一个部分# 绘制扇形图
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140)# 设置为等比例,这样扇形图就是一个圆
plt.axis('equal')# 显示图像
plt.show()
4 opencv 案例
加载与展示图片
cv2.imread()
cv2.imshow()
import cv2img_path = r'resources/food.png'# 以彩色模式读取图片
image_color = cv2.imread(img_path)# 以灰度模式读取图片
image_gray = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)# 显示图片
cv2.imshow('Color Image', image_color)
# cv2.imshow('Grayscale Image', image_gray)# 等待用户按键,然后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
缩放图片
cv2.resize()
旋转图片
cv2.rotate()
# 使用cv2.rotate()函数旋转图片
rotated_90 = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE) # 顺时针旋转90度
rotated_180 = cv2.rotate(image, cv2.ROTATE_180) # 顺时针旋转180度
rotated_270 = cv2.rotate(image, cv2.ROTATE_90_COUNTERCLOCKWISE) # 顺时针旋转270度
保存图片
cv2.imwrite()
import cv2# 读取图像
image = cv2.imread('resources/food.png')# 如果图像不为空,则保存图像
if image is not None:cv2.imwrite('output_image.png', image)
else:print("无法读取图像")
读取摄像头
cv2.VideoCapture
import cv2# 创建一个 VideoCapture 对象,参数 0 表示使用默认的摄像头, 也可以传入一个视频文件的路径
cap = cv2.VideoCapture("resources/piano.mp4") # resources/piano.mp4while True:# 读取一帧ret, frame = cap.read()# 如果读取成功,显示这一帧if ret:cv2.imshow('Frame', frame)# 按 'q' 键退出循环if cv2.waitKey(15) & 0xFF == ord('q'):break# 释放资源并关闭窗口
cap.release()
cv2.destroyAllWindows()
释放资源并关闭窗口
cap.release()
cv2.destroyAllWindows()
视频保存
cv2.VideoWriter()
import cv2# 定义视频捕获对象
cap = cv2.VideoCapture(0)# 检查是否成功打开摄像头
if not cap.isOpened():print("Error: Could not open camera.")exit()# 获取摄像头的帧宽度和帧高度
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 定义视频编码器和输出文件
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # 或者使用 'XVID'
out = cv2.VideoWriter('output.mp4', fourcc, 20.0, (frame_width, frame_height))while True:ret, frame = cap.read()if not ret:print("Failed to grab frame.")break# 将当前帧写入输出视频文件out.write(frame)# 显示当前帧cv2.imshow('frame', frame)# 按'q'键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()
opencv 综合案例
import cv2
import numpy as npdef add_gaussian_noise(image):row, col = image.shapemean = 0sigma = 15gauss = np.random.normal(mean, sigma, (row, col))noisy = image + gaussnoisy_img = np.clip(noisy, 0, 255)return noisy_img.astype(np.uint8)# 输入和输出视频文件名
input_video = 'resources/outdoor.mp4'
output_video = 'resources/output.mp4'# 打开输入视频
cap = cv2.VideoCapture(input_video)# 获取视频的帧率和帧大小
fps = int(cap.get(cv2.CAP_PROP_FPS))
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 计算新的帧大小 (540p)
new_height = 540
new_width = int((new_height / frame_height) * frame_width)# 创建视频写入对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_video, fourcc, fps, (new_width, new_height), isColor=False)while True:ret, frame = cap.read()if not ret:break# 调整帧大小frame = cv2.resize(frame, (new_width, new_height))# 转换为灰度图像frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 垂直翻转画面frame = cv2.flip(frame, 1)# 添加高斯噪声frame = add_gaussian_noise(frame)# 写入输出视频out.write(frame)# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()
5 pickle 案例
# 使用 pickle 保存数据
with open('data.pkl', 'wb') as file:pickle.dump(data, file)# 使用 pickle 加载数据
with open('data.pkl', 'rb') as file:loaded_data = pickle.load(file)
相关文章:

【python进阶】txt excel pickle opencv操作demo
文章目录 1. txt读写读综合案例 日志文件读写 2. excel读写读取csv读取xlsx 3. matplotlib 案例折线图多个折现图散点图柱状图饼状图 4 opencv 案例加载与展示图片缩放图片旋转图片保存图片读取摄像头视频保存opencv 综合案例 5 pickle 案例 1. txt读写 读 file.read() file.r…...

Aware接口作用
介绍 Aware(感知)接口是一个标记,里面没有任何方法,实际方法定义都是子接口确定(相当于定义了一套规则,并建议子接口中应该只有一个无返回值的方法)。 我们知道spring已经定义好了很多对象,如…...

Docker部署Minio S3第三方存储
Docker部署Minio S3第三方存储 你不要着急,你先去读你的书,我去看我的电影,总有一天,我们会窝在一起,读同一本书,看同一部电影。 安装Docker 1、选择要安装的平台 Docker要求CentOS系统的内核版本高于3.1…...

听说京东618裁员没?上午还在赶需求,下午就开会通知被裁了~
文末还有最新面经共享群,没准能让你刷到意向公司的面试真题呢。 京东也要向市场输送人才了? 在群里看到不少群友转发京东裁员相关的内容: 我特地去网上搜索了相关资料,看看网友的分享: 想不到马上就618了,东哥竟然抢…...

力扣226. 翻转二叉树(DFS的两种思路)
Problem: 226. 翻转二叉树 文章目录 题目描述思路复杂度Code 题目描述 思路 涉及二叉树的递归解法时往往需要考虑两种思路: 1.在递归遍历时执行题目需要的具体要求; 2.将一个大问题分解为多个小子问题 具体到本体: 思路1:遍历 先…...

状态机-非重叠的序列检测
描述 设计一个状态机,用来检测序列 10111,要求: 1、进行非重叠检测 即101110111 只会被检测通过一次 2、寄存器输出且同步输出结果 注意rst为低电平复位 信号示意图: 波形示意图: 输入描述 输入信号 clk rst data…...

Word怎么画图?这5个方法收藏好!
“我需要在Word文档中画一些图,想问下Word应该怎么画图呢?有没有朋友可以帮我看看怎么操作呢?” 在今天的数字化时代,信息爆炸式增长,人们越来越需要高效、直观地传递和接收信息。而Word画图功能正是这一需求的完美体现…...

qt designer 依赖库 QMessageBox
目录 qt designer 依赖库配置实例 单步调试快捷键 f10 QMessageBox 使用方法 背景图设置...

反序列化漏洞(JBoss、apache log4、apache Shiro、JWT)Weblogic未授权访问、代码执行、任意上传
1.1什么是反序列化 就是把一个对象变成可以传输的字符串,目的就是为了方便传输。假设,我们写了一个class,这个class里面存有一些变量。当这个class被实例化了之后,在使用过程中里面的一些变量值发生了改变。以后在某些时候还会用到…...

PHP身份证真伪验证、身份证二、三要素核验、身份证ocr接口
实名认证有利于网络绿化,所以在互联网发展迅速的今天,实名认证成了“刚需”。而OCR与实名认证两种产品的结和更是擦出了美丽的火花。翔云人工智能开放平台提供的实名认证OCR接口良好的展现出两种功能结合的效果。以身份实名认证产品举例来说,…...

【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 布局管理器 | 表单布局Form Layout 文章编号:…...

数智赋能内涝治理,四信城市排水防涝解决方案保障城市安全运行
由强降雨、台风造成城市低洼处出现大量积水、内涝的情况时有发生,给人们出行带来了极大不便和安全隐患,甚至危及群众生命财产安全。 为降低内涝造成的损失,一方面我们要大力加强城市排水基础设施的建设;另一方面要全面掌握城市内涝…...

docker实战之搭建MYSQL8.0主从同步
目录 环境配置容器创建主服务器创建MYSQL容器新增my.cnf文件创建用户并授权 从服务器创建MYSQL容器新增my.cnf文件重启MYSQL容器配置主从同步 验证主从同步彩蛋 MySQL 主从同步(Master-Slave Replication)是一种常用的解决方案,它允许一个主服…...

LTD275次升级 | 网页编辑器新增AI翻译 • 文章|产品等内容可导出 • 新增交互数据 • 购物清单可导出• 官微中心app出新版
1、 网站编辑器文本组件可一键翻译; 2、 文章、产品新增导出功能; 3、 购物车新增导出购物清单功能; 4、 App优化首页数据展示、新增访客交互数据功能; 5、 已知问题修复与优化; 01 网站编辑器 新增文本组件一键翻…...

代码随想录算法训练营第36期DAY36
贪心好难,希望能坚持到柳暗花明那天。 DAY36 1005K次取反后最大化的数组和 自己的方法,注意越界条件放在最前面就好: class Solution {public: int largestSumAfterKNegations(vector<int>& nums, int k) { //自己的…...

zookeeper安装教程
前置环境: hadoop3.3.6 三台集群 CentOS7 (图文并茂)基于CentOS-7搭建hadoop3.3.6大数据集群-CSDN博客 1.下载并上传 下载并上传ZOOKEEPER安装包到主节点 官网下载地址 Index of /dist/zookeeper (apache.org) 切换到/opt/bigdata目录(根据自己的情况…...

windows2008修改远程桌面端口,如何果断修改远程桌面端口,确保系统安全无忧!
在数字化时代的浪潮中,Windows 2008系统以其卓越的稳定性和可靠性,赢得了众多企业和个人的青睐。然而,随着网络安全问题的日益严峻,如何确保远程桌面连接的安全,成为了摆在我们面前的一道难题。今天,我将为…...

【计算机网络原理】对传输层TCP协议的重点知识的总结
˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…...

mysql实战——半同步复制搭建
一、搭建前准备 主库 192.168.1.78 从库 192.168.1.76 二、搭建 1、先搭建异步复制 MySQL实战——主从异步复制搭建(一主一从)-CSDN博客 2、在异步的基础上搭建半同步复制 主库 mysql>install plugin rpl_semi_sync_slave soname semisy…...

Leetcode 3152. Special Array II
Leetcode 3152. Special Array II 1. 解题思路2. 代码实现 题目链接:3152. Special Array II 1. 解题思路 这一题的话思路上就是分堆,使用贪婪算法找到每一个元素所在的最长special子序列,然后判断query的首尾元素是不是属于同一个special…...

人工智能与区块链技术:开启未来科技的双引擎
在当今科技飞速发展的时代,人工智能和区块链技术如同两颗璀璨的明星,照亮了人类通往未来的道路。 人工智能,以其强大的学习和分析能力,正悄然改变着我们的生活。它能够处理海量的数据,为我们提供精准的预测和个性化的…...

Python筑基之旅-MySQL数据库(二)
目录 一、第三方库 1、mysql-connector-python 1-1、由来 1-2、优缺点 1-2-1、优点 1-2-1-1、官方支持 1-2-1-2、纯Python实现 1-2-1-3、全面支持 1-2-1-4、兼容性 1-2-1-5、易于使用 1-2-2、缺点 1-2-2-1、性能 1-2-2-2、安装 1-2-2-3、社区支持 1-2-2-4、扩…...

web前端面试题
web前端面试题 1、前端如何实现优化性能 (1)减少网络时间 ①使用DNS缓存技术 ②减少需要传输的文件尺寸 ③加快文件传输速度 (2)减少发送的请求数量 ①利用浏览器缓存 ②使用合并的图片文件 (3)提高浏览器下载的并发度 ①JS文件放在HTML文档最后 ②使用多个域名 (…...

创建型模式之单例
文章目录 概述定义场景小结 概述 设计模式包括创建型模式,结构型模式,行为型模式。 今天先看看创建型模式,而单例是创建型模式中的第一个而且是常用的,就从它开始吧。 定义 单例模式用来创建全局唯一的对象。一个类只允许创建一…...

在 Next.js 应用中创建ContactForm表单提交
在 Next.js 应用中创建表单提交涉及几个关键步骤,包括设置表单、处理表单提交以及管理服务器端或 API 逻辑。以下是使用 Next.js 开发一个简单表单提交的步骤。 1. 设置表单组件 首先,创建一个表单组件。在这个例子中,我们将创建一个 Conta…...

HTML5 3D图像应用
目录 关键技术与规范应用示例与领域相关工具与框架HTML5 3D图像应用是利用HTML5、CSS3、JavaScript(及其相关的库和框架)以及其他现代Web技术(如WebGL)构建的,能够在浏览器中呈现三维图形、动画和交互式场景的应用程序。以下是一些关于HTML5 3D图像应用的关键点和示例: …...

SQL——DML对表中数据的操作
# 创建数据库 create database if not exists db_BigData default character set gb2312 default collate gb2312_chinese_ci; # 创建表 create table if not exists db_BigData.stu (id int auto_increment primary key comment 主键ID,name var…...

深度学习之基于Matlab卷积神经网络(CNN)手写数字识别
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 手写数字识别是计算机视觉领域的一个重要问题,也是深度学习应用的一个典型场景。卷…...

工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端
工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端 采用javaspringboot-vue.jsuniapp开发 随着工业4.0的快速发展,制造执行系统(MES)成为了智能制造的核心。今天,将为大家介绍一款开源的MES系统——MES管…...

Science| 单体耦合纤维实现无芯片纺织电子(纤维器件/智能织物/柔性可穿戴电子)
东华大学Hongzhi Wang,Chengyi Hou和Qinghong Zhang团队在《Science》上发布了一篇题为“Single body-coupled fiber enables chipless textile electronics”的论文。论文内容如下: 一、 摘要 智能纺织品为将技术融入日常生活中提供了理想的平台。然而,目前的纺织电子系统…...