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

图像前后处理代码

文章目录

  • 前言
  • 1、背景
  • 2、代码
  • 总结


前言

 本篇提供一段在计算机视觉中常用的图像前后处理代码。比如许多开源项目中用到了RGB转换,resize、归一化以及转张量维度变化操作。当尝试使用这些项目时,可视化不方便,因此,本文提供跑一个demo样例,以供记录。

1、背景

 我这里以我项目用到的前处理为例:opencv读取图像,变形的resize,norm,转RGB,维度变化转张量。接下来,我将提供一段代码,将上述张量还原回原始图像。
 以coco为例,底下是原图:
在这里插入图片描述
 经过前处理后变成640*640归一化的图像。

2、代码

import cv2
import torch
import numpy as np 
post_img_tensor = result['img'].data   # 这是经过变化后的张量  
# 逆归一化
mean = torch.tensor([123.675, 116.28, 103.53], dtype=torch.float32).view(3, 1, 1)
std  = torch.tensor([58.395, 57.12, 57.375], dtype=torch.float32).view(3, 1, 1)
original_tensor = post_img_tensor.cpu().float() * std + mean
original_tensor = original_tensor.to(torch.uint8)   
original_np     = original_tensor.permute(1, 2, 0).numpy()        # hwc, numpy array 
resized_image   = cv2.cvtColor(original_np, cv2.COLOR_RGB2BGR)
scale_factor = result['scale_factor']  # arr: [w_ratio, h_ratio, w_ratio, h_ratio]
w_ratio , h_ratio = scale_factor[:2]
src_img = cv2.resize(resized_image, dsize = ((int(resized_image.shape[1]/w_ratio), int(resized_image.shape[0]//h_ratio))), interpolation=cv2.INTER_LINEAR)
cv2.imwrite('./demo.jpg', src_img)

总结

 这里只是提供一个样板,不过基本上已经包含大多数前处理流程,读者可自行更改一些参数来实现逆操作。

相关文章:

  • Web信息收集
  • 【STM32】ST7789屏幕驱动
  • Windows中xxx.dll动态链接库文件转xxx.a静态库文件
  • Python Cookbook-5.15 根据姓的首字母将人名排序和分组
  • 深入解析 Spring AI Alibaba 多模态对话模型:构建下一代智能应用的实践指南
  • QML 中的 QVariantMap
  • Python Cookbook-5.14 给字典类型增加排名功能
  • CSPM认证对项目论证的范式革新:从合规审查到价值创造的战略跃迁
  • MicroPython 开发ESP32应用教程 之 I2S、INMP441音频录制、MAX98357A音频播放、SD卡读写
  • 5Why分析法
  • 低压电工怎么备考,刷题题库分享
  • MySQL Slow Log
  • 三维凹多面体分解为凸多面体的MATLAB实现
  • 理解大模型论文中的名词部分
  • 深入剖析Go Channel:从底层原理到高阶避坑指南|Go语言进阶(5)
  • Next.js 平行路由详解
  • Linux系统中使用node -v出现GLIBC_2.27 not found问题的解决方案
  • 前端大屏可视化项目 局部全屏(指定盒子全屏)
  • 《算法笔记》3.5小节——入门模拟->进制转换
  • Halo 设置 GitHub - OAuth2 认证指南
  • 网站导航网站建设多少钱/网络推广app是违法的吗
  • 做模型的网站有哪些/chatgpt网址
  • 求网站开发客户/google关键词推广
  • 现在视频做网站晚了吗/seo怎么才能优化好
  • p2p电影网站开发/深圳seo优化公司搜索引擎优化方案
  • 使用别人网站代码做自己的网站/哪个浏览器不屏蔽网站