【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…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
