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

同济子豪兄模板 半天搞定图像分类

同济子豪兄模板 半天搞定图像分类

‘’'import cv2
import numpy as np
import time
from tqdm import tqdm

视频逐帧处理代码模板

不需修改任何代码,只需定义process_frame函数即可

def generate_video(input_path=‘videos/robot.mp4’):
filehead = input_path.split(‘/’)[-1]
output_path = “out-” + filehead

print('视频开始处理',input_path)# 获取视频总帧数
cap = cv2.VideoCapture(input_path)
frame_count = 0
while(cap.isOpened()):success, frame = cap.read()frame_count += 1if not success:break
cap.release()
print('视频总帧数为',frame_count)# cv2.namedWindow('Crack Detection and Measurement Video Processing')
cap = cv2.VideoCapture(input_path)
frame_size = (cap.get(cv2.CAP_PROP_FRAME_WIDTH), cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# fourcc = int(cap.get(cv2.CAP_PROP_FOURCC))
# fourcc = cv2.VideoWriter_fourcc(*'XVID')
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
fps = cap.get(cv2.CAP_PROP_FPS)out = cv2.VideoWriter(output_path, fourcc, fps, (int(frame_size[0]), int(frame_size[1])))# 进度条绑定视频总帧数
with tqdm(total=frame_count-1) as pbar:try:while(cap.isOpened()):success, frame = cap.read()if not success:break# 处理帧# frame_path = './temp_frame.png'# cv2.imwrite(frame_path, frame)try:frame = process_frame(frame)except:print('报错!', error)passif success == True:# cv2.imshow('Video Processing', frame)out.write(frame)# 进度条更新一帧pbar.update(1)# if cv2.waitKey(1) & 0xFF == ord('q'):# breakexcept:print('中途中断')passcv2.destroyAllWindows()
out.release()
cap.release()
print('视频已保存', output_path)

处理帧函数

def process_frame(img_bgr):

'''
输入摄像头拍摄画面bgr-array,输出图像分类预测结果bgr-array
'''# 记录该帧开始处理的时间
start_time = time.time()## 画面转成 RGB 的 Pillow 格式
img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB) # BGR转RGB
img_pil = Image.fromarray(img_rgb) # array 转 PIL## 预处理
input_img = test_transform(img_pil) # 预处理
input_tensor = input_img.unsqueeze(0).numpy()## onnx runtime 预测
ort_inputs = {'input': input_tensor} # onnx runtime 输入
pred_logits = ort_session.run(['output'], ort_inputs)[0] # onnx runtime 输出
pred_logits = torch.tensor(pred_logits)
pred_softmax = F.softmax(pred_logits, dim=1) # 对 logit 分数做 softmax 运算## 解析top-n预测结果的类别和置信度
top_n = torch.topk(pred_softmax, 3) # 取置信度最大的 n 个结果
pred_ids = top_n[1].cpu().detach().numpy().squeeze() # 解析预测类别
confs = top_n[0].cpu().detach().numpy().squeeze() # 解析置信度# 在图像上写英文
for i in range(len(confs)):pred_class = idx_to_labels[pred_ids[i]]# 写字:图片,添加的文字,左上角坐标,字体,字体大小,颜色,线宽,线型text = '{:<12} {:>.2f}'.format(pred_class, confs[i])img_bgr = cv2.putText(img_bgr, text, (50, 160 + 40 * i), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2, cv2.LINE_AA)# 记录该帧处理完毕的时间
end_time = time.time()
# 计算每秒处理图像帧数FPS
FPS = 1/(end_time - start_time)  
# 图片,添加的文字,左上角坐标,字体,字体大小,颜色,线宽,线型
img_bgr = cv2.putText(img_bgr, 'FPS  '+str(int(FPS)), (50, 80), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2, cv2.LINE_AA)return img_bgr

while True:
img_bgr = cap.read()

if img_bgr is None:continueimg_bgr = process_frame(img_bgr)cvs.imshow(img_bgr)

‘’’

demo见B站分享: Aidlux两天搞定图像分类,半天就可以 |【aidlux实现图像分类~还是蛮好用的,可以推荐-哔哩哔哩】 https://b23.tv/codx3GL

相关文章:

同济子豪兄模板 半天搞定图像分类

同济子豪兄模板 半天搞定图像分类 ‘’import cv2 import numpy as np import time from tqdm import tqdm 视频逐帧处理代码模板 不需修改任何代码&#xff0c;只需定义process_frame函数即可 def generate_video(input_path‘videos/robot.mp4’): filehead input_path.…...

接口自动化测试,Fiddler使用抓包辅助实战,一篇彻底打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、快捷设置&…...

概念解析 | 隐式神经表示:揭开神经网络黑盒的奥秘

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:隐式神经表示(Implicit Neural Representations) 隐式神经表示:揭开神经网络黑盒的奥秘 近年来,神经网络在各种任务上取得了惊人的进步,但其内部表示方式依然难以解读,被称为“…...

深入浅出PHP封装根据商品ID获取淘宝商品详情数据方法

要通过淘宝的API获取商品详情&#xff0c;您可以使用淘宝开放平台提供的接口来实现。以下是一种使用PHP编程语言实现的示例&#xff0c;展示如何通过淘宝开放平台API获取商品详情&#xff1a; 首先&#xff0c;确保您已注册成为淘宝开放平台的开发者&#xff0c;并创建一个应用…...

自动切换HTTP爬虫ip助力Python数据采集

在Python数据采集中&#xff0c;如果你需要爬取一些网站的数据&#xff0c;并且需要切换IP地址来避免被封或限制&#xff0c;我们可以考虑以下几种方式来实现自动切换HTTP爬虫IP。 1. 使用代理服务器 使用代理服务器是常见的IP切换技术之一。你可以购买或使用免费的代理服务器…...

20230811导出Redmi Note12Pro 5G手机的录音机APP的录音

20230811导出Redmi Note12Pro 5G手机的录音机APP的录音 2023/8/11 10:54 redmi note12 pro 录音文件 位置 貌似必须导出录音&#xff0c;录音的源文件不知道存储到哪里了&#xff01; 参考资料&#xff1a; https://jingyan.baidu.com/article/b87fe19e9aa79b1319356842.html 红…...

Python-OpenCV中的图像处理-傅里叶变换

Python-OpenCV中的图像处理-傅里叶变换 傅里叶变换Numpy中的傅里叶变换Numpy中的傅里叶逆变换OpenCV中的傅里叶变换OpenCV中的傅里叶逆变换 DFT的性能优化不同滤波算子傅里叶变换对比 傅里叶变换 傅里叶变换经常被用来分析不同滤波器的频率特性。我们可以使用 2D 离散傅里叶变…...

8.10 用redis实现缓存功能和Spring Cache

什么是缓存? 缓存(Cache), 就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码。 通过Redis来缓存数据&#xff0c;减少数据库查询操作; 逻辑 每个分类的菜品保存一份缓存数据 数据库菜品数据有变更时清理缓存数据 如何将商品数据缓存起…...

SPI协议个人记录

SPI协议 SPI&#xff08;Serial Peripheral Interface&#xff09;是一种同步串行接口技术&#xff0c;由Motorola公司推出。SPI总线系统是一种同步串行外设接口&#xff0c;允许MCU与各种外围设备以串行方式进行通信和数据交换。外围设备包括FLASHRAM、A/D转换器、网络控制器…...

【深度学习 video detect】Towards High Performance Video Object Detection for Mobiles

文章目录 摘要IntroductionRevisiting Video Object Detection BaselinePractice for Mobiles Model Architecture for MobilesLight Flow 摘要 尽管在桌面GPU上取得了视频目标检测的最近成功&#xff0c;但其架构对于移动设备来说仍然过于沉重。目前尚不清楚在非常有限的计算…...

时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比

时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比 目录 时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 时序预测 | …...

【软件工程】面向对象方法-RUP

RUP&#xff08;Rational Unified Process&#xff0c;统一软件开发过程&#xff09;。 RUP特点 以用况驱动的&#xff0c;以体系结构为中心的&#xff0c;迭代增量式开发 用况驱动 用况是能够向用户提供有价值结果的系统中的一种功能用况获取的是功能需求 在系统的生存周期中…...

Golang 的面向对象

文章目录 duck typingnil不一定是空接口组合代替继承接口转换回具体的类型使用switch匹配接口的原始类型 duck typing golang中实现某个接口不需要像其它语言使用 implemet 去继承实现&#xff0c;而是只要你的结构体包含接口所需的方法即可 package mainimport "fmt&qu…...

STABLE DIFFUSION模型及插件的存放路径

记录下学习SD的一些心得&#xff0c;使用的是秋叶大佬的集成webui&#xff0c;下载了之后点击启动器即可开启&#xff0c;文件夹中的内容如下 主模型存放在models文件下的stable-diffusion文件夹内&#xff0c;一些扩展类的插件是存放在extensions文件夹下...

Three.js 设置模型材质纹理贴图和修改材质颜色,材质透明度,材质网格

相关API的使用&#xff1a; 1 traverse &#xff08;模型循环遍历方法&#xff09; 2. THREE.TextureLoader&#xff08;用于加载和处理图片纹理&#xff09; 3. THREE.MeshLambertMaterial&#xff08;用于创建材质&#xff09; 4. getObjectByProperty&#xff08;通过材…...

docker 安装mongodb 虚拟机安装mongodb

生产环境直接安装比较好&#xff0c;以及使用集群环境&#xff0c;本文仅测试交流使用&#xff0c;我用来写分布式im测试使用&#xff1a; nami-im: 分布式im, 集群 zookeeper netty kafka nacos rpc主要为gate&#xff08;长连接服务&#xff09; logic &#xff08;业务&…...

在SockJS+Spring Websocket中convertAndSendToUser中的“用户”来自哪里?

目录 一、前言二、Principal三、使用 一、前言 我们知道可以使用客户端订阅的主题前缀从 stomp 服务器向客户端发送消息&#xff0c;例如 /topic/hello。我们还知道我们可以向特定用户发送消息&#xff0c;因为 spring 提供了convertAndSendToUser(username, destination, mes…...

【软件测试】我的2023面试经验谈

最近行业里有个苦涩的笑话&#xff1a;公司扛过了之前的三年&#xff0c;没扛过摘下最近的一年&#xff0c;真是让人想笑又笑不出来。年前听说政策的变化&#xff0c;大家都满怀希望觉得年后行情一片大好&#xff0c;工作岗位激增&#xff0c;至少能有更多的机会拥抱未来。然而…...

SpringBoot 整合JDBC

SpringData简介 Sping Data 官网&#xff1a;https://spring.io/projects/spring-data数据库相关的启动器 &#xff1a;可以参考官方文档&#xff1a;https://docs.spring.io/spring-boot/docs/2.6.5/reference/htmlsingle/#using-boot-starter 整合JDBC 创建测试项目测试数据…...

TypeScript使用npm安装报错问题

问题如图&#xff1a; 问题原因&#xff1a; 权限不足导致&#xff0c;可以输入如下命令&#xff1a; sudo npm install i -g typescript该命令会要求输入登录密码相关&#xff0c;稍等片刻&#xff0c;即可安装成功。检测安装的命令&#xff1a; tsc -v...

T型翼/尾板导向的穿浪双体船姿态控制【附代码】

✨ 长期致力于穿浪双体船、T型翼、尾板、多自由度姿态控制、舒适性评估研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;动态水翼升力模型与耦合运动方…...

UE4动画蓝图实战:用双骨骼IK节点搞定手部穿模,附完整蓝图节点截图

UE4动画蓝图实战&#xff1a;双骨骼IK节点解决手部穿模的完整指南在角色动画开发中&#xff0c;手部穿模问题堪称"视觉杀手"。想象一下精心设计的角色挥拳时&#xff0c;拳头直接穿过墙壁或敌人身体——这种违和感足以毁掉整个场景的沉浸感。本文将彻底解决这个痛点&…...

智能手机相机光谱特性测量与多光谱成像技术

1. 智能手机相机光谱特性测量基础智能手机相机的光谱灵敏度函数(Spectral Sensitivity Function, SSF)和透射率函数是计算摄影领域的核心参数&#xff0c;它们决定了设备对光信号的响应特性。准确获取这些参数对色彩还原、光谱重建和白平衡校准等任务至关重要。1.1 光谱灵敏度函…...

嵌入式快速原型开发:基于Sceptre平台与LPC2148的实战指南

1. 项目概述&#xff1a;Sceptre&#xff0c;一个被低估的嵌入式快速原型利器 在嵌入式开发的世界里&#xff0c;我们总是在寻找那个“刚刚好”的平台&#xff1a;它要足够强大&#xff0c;能跑复杂的算法&#xff1b;要足够小巧&#xff0c;能塞进各种外壳&#xff1b;要足够便…...

Atomic Layout核心概念解析:Composition组件如何实现布局与间距分离的终极指南

Atomic Layout核心概念解析&#xff1a;Composition组件如何实现布局与间距分离的终极指南 【免费下载链接】atomic-layout Build declarative, responsive layouts in React using CSS Grid. 项目地址: https://gitcode.com/gh_mirrors/at/atomic-layout Atomic Layout…...

如何优化 MySQL 千万级数据分页查询的性能?

它的本质是&#xff1a;**传统 LIMIT offset, size 在大数据量下性能急剧下降&#xff0c;是因为 MySQL 必须 扫描并丢弃 前 offset 行数据。当 offset 很大时&#xff08;如 LIMIT 1000000, 10&#xff09;&#xff0c;MySQL 需要读取 1,000,010 行记录&#xff0c;执行 1,000…...

PostgreSQL Join 执行策略(Nested Loop、Hash Join、Merge Join)与 NOT EXISTS 优化

以集成数据压缩 SQL 优化为例&#xff0c;用大白话讲清楚 Nested Loop、Hash Join、Merge Join 三种执行策略。一、背景&#xff1a;一条慢 SQL 引发的思考 在对上游下发数据做压缩时&#xff0c;有这样一条 UPDATE SQL&#xff1a; -- ❌ 原始写法 UPDATE magellan_nk_order_i…...

JavaScript对象创建:告别繁琐,四种灵活写法一学就会

在JavaScript里&#xff0c;创建对象的这般方法常把刚开始学习的新手弄得困惑不已&#xff0c;好像无论走哪条道都行得通&#xff0c;可又不清楚该挑哪一条才好。我编写JavaScript都有十几年功夫了&#xff0c;对象创建这事差不多每天都会碰到可谓基础技能。它不像变量声明那般…...

为内部知识库问答机器人集成taotoken多模型能力的架构设计

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为内部知识库问答机器人集成taotoken多模型能力的架构设计 应用场景类&#xff0c;探讨为企业内部知识库构建智能问答机器人时&…...

Safe Exam Browser虚拟机绕过实战:深度解析与安全研究指南

Safe Exam Browser虚拟机绕过实战&#xff1a;深度解析与安全研究指南 【免费下载链接】safe-exam-browser-bypass A VM and display detection bypass for SEB. 项目地址: https://gitcode.com/gh_mirrors/sa/safe-exam-browser-bypass 在数字化教育快速发展的今天&…...