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

【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 文章编号&#xff1a…...

数智赋能内涝治理,四信城市排水防涝解决方案保障城市安全运行

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

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

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

zookeeper安装教程

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

windows2008修改远程桌面端口,如何果断修改远程桌面端口,确保系统安全无忧!

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

【计算机网络原理】对传输层TCP协议的重点知识的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…...

mysql实战——半同步复制搭建

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

Leetcode 3152. Special Array II

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

5大实用功能揭秘:Sabaki围棋软件如何成为棋手必备的分析神器

5大实用功能揭秘&#xff1a;Sabaki围棋软件如何成为棋手必备的分析神器 【免费下载链接】Sabaki An elegant Go board and SGF editor for a more civilized age. 项目地址: https://gitcode.com/gh_mirrors/sa/Sabaki Sabaki是一款免费开源的围棋软件&#xff0c;以其…...

渗透测试授权书:法律效力与技术执行的耦合设计

1. 这份授权书不是“走个形式”&#xff0c;而是渗透测试合法性的生死线很多人第一次接触渗透测试&#xff0c;看到《渗透测试授权书》模板&#xff0c;第一反应是&#xff1a;“不就是签个字的事&#xff1f;网上随便找个PDF填上名字就行。”我2015年刚入行时也这么想&#xf…...

用Vector2.Lerp、MoveTowards和SmoothDamp搞定Unity 2D物体平滑移动(附性能对比)

Unity 2D平滑移动实战&#xff1a;Vector2.Lerp vs MoveTowards vs SmoothDamp 在2D游戏开发中&#xff0c;角色的移动效果直接影响玩家的操作体验。一个生硬的位移会破坏游戏沉浸感&#xff0c;而恰到好处的缓动则能让操作手感提升一个档次。Unity提供了三种核心方法来实现2D平…...

【VMware虚拟机】Linux下ubuntu连接网络详细讲解!

原理讲解 window上网需要网络适配器&#xff0c;通过家用路由器下发WLAN&#xff0c;自分配ip地址&#xff0c;连接即用 linux同理&#xff1a;在VMware虚拟机上需要”虚拟路由器“。对应为虚拟网络编辑器 1.打开虚拟网络编辑器 2.点击NAT&#xff0c;NAT模式和DHCP必须选上…...

# 我花了一天,给 AI Coding Agent 搭了一个 Mini Harness

最近在折腾 AI Coding Agent&#xff08;Claude Code / Cursor / 自定义 Agent&#xff09;时&#xff0c;我发现一个很常见的问题&#xff1a;**模型会写代码&#xff0c;但不一定会“按流程工作”。**它可能&#xff1a;- 需求还没对齐&#xff0c;直接开始改代码 - 改着改着…...

AutoDL新手避坑:Ubuntu 20.04安装Xfce4桌面环境,告别VNC黑屏

AutoDL云平台Xfce4桌面环境配置全攻略&#xff1a;从零搭建到VNC可视化开发 对于刚接触AutoDL等云GPU平台的新手开发者而言&#xff0c;命令行操作往往成为第一道门槛。当需要运行PaddleX这类图形化AI开发工具时&#xff0c;配置可用的远程桌面环境更是常见痛点。本文将彻底解决…...

校招数据决策系统:可解释逻辑回归与SHAP驱动的HR智能筛选

1. 项目概述&#xff1a;这不是一份“求职简历分析”&#xff0c;而是一套可复用的校园招聘数据决策系统“Campus Recruitment: EDA and Classification — Part 2”这个标题&#xff0c;乍看像某门数据科学课的作业编号&#xff0c;但实际拆解下来&#xff0c;它指向一个非常具…...

SAP HR数据维护避坑指南:HR_INFOTYPE_OPERATION函数调用前后的缓存与锁管理详解

SAP HR数据维护避坑指南&#xff1a;HR_INFOTYPE_OPERATION函数调用前后的缓存与锁管理详解 在SAP HR模块的日常开发与运维中&#xff0c;数据维护操作看似简单却暗藏玄机。许多开发者在调用HR_INFOTYPE_OPERATION函数进行人事信息类型操作时&#xff0c;常常忽略前后必要的缓存…...

编译和链接(以Windows,VS环境下C语言为例)

编译和链接(以Windows,VS环境下C语言为例&#xff09;一.什么是翻译环境和运行环境&#xff1f;二.翻译环境2.1预处理(预编译)2.2编译2.2.1词法分析2.2.2语法分析2.2.3语义分析2.3汇编2.4链接三.运行环境提前说明一下&#xff0c;虽然说我们是以Windows操作系统为例&#xff0c…...

量子纠错码与逻辑门优化实现技术解析

1. 量子纠错码与逻辑门实现基础量子纠错码是量子计算中确保计算可靠性的核心技术。与经典计算不同&#xff0c;量子态具有相干性和不可克隆性&#xff0c;这使得量子信息在存储和处理过程中极易受到环境噪声的影响。稳定子码&#xff08;Stabilizer Codes&#xff09;作为一类重…...