首页 > 其他分享 >深度学习(np,tensor,pil,cv2互转)

深度学习(np,tensor,pil,cv2互转)

时间:2024-10-19 14:33:32浏览次数:1  
标签:pil tensor img cv2 np 互转 import

在做深度学习的时候经常会在这四种格式上互转。

转换时有几个需要注意的点:

1. np和cv2都能通过cv2.imshow显示出来。

2. torchvision的transforms会把HWC转为CHW。

3. from_numpy读取的HWC还是HWC,需要额外对tensor旋转。

4. pil和cv2读取的都是HWC格式,不过C中的BGR和RGB顺序不同。

下面是两两互转的例子:

import numpy as np
import cv2
import torchvision
import torch
from PIL import Image

img_pil = Image.open('1.jpg')
img_cv2 = cv2.imread('1.jpg')

#pil <-> np
img_np = np.array(img_pil)
img_pil = Image.fromarray(img_np)

#pil <-> torch
img_tensor = torchvision.transforms.ToTensor()(img_pil)
img_pil = torchvision.transforms.ToPILImage()(img_tensor)

#pil <-> cv2
img_cv2 = cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR)
img_pil = Image.fromarray(cv2.cvtColor(img_cv2, cv2.COLOR_BGR2RGB))

#cv2 <-> np
img_np = np.array(img_cv2)
img_cv2 = img_np                                                #直接给能imshow出来
# img_cv2 = cv2.cvtColor(np.array(img_cv2),cv2.COLOR_BGR2RGB)   #网上常见的方法转一次颜色不对
# img_cv2 = cv2.cvtColor(img_cv2,cv2.COLOR_BGR2RGB)             #需要再转一次  

# cv2 <-> torch
img_tensor = torchvision.transforms.ToTensor()(img_cv2)
img_cv2 = img_tensor.permute(1,2,0).numpy()

# np <-> torch
img_tensor = torch.from_numpy(img_np)
img_np = img_tensor.numpy()

# img_pil.show()
cv2.imshow('img',img_cv2)
cv2.waitKey(0)

标签:pil,tensor,img,cv2,np,互转,import
From: https://www.cnblogs.com/tiandsp/p/18475850

相关文章

  • ReadPilot: 革新网页阅读体验的AI助手
    ReadPilot:让网页阅读更高效、更智能在这个信息爆炸的时代,我们每天都面临着大量的网页内容需要阅读和处理。如何在有限的时间内快速获取关键信息,成为了许多人面临的挑战。ReadPilot应运而生,它是一款革新性的AI网页阅读助手,旨在帮助用户更高效地获取和理解网页内容。ReadPil......
  • 《末日地带2》游戏打不开:d3dcompiler_43.dll丢失怎么修复
    针对《末日地带2》游戏因d3dcompiler_43.dll文件丢失而无法打开的问题,可以尝试以下几种修复方法:一、重新安装DirectXd3dcompiler_43.dll是DirectX的一部分,因此重新安装DirectX通常可以解决问题。可以从微软官方网站下载相应版本的DirectX进行安装。安装过程中,请确保不要勾选......
  • PostgreSQL中将对象oid和对象名相互转换
    文章目录PostgreSQL中将对象oid转为对象名数据库类型转换对应类型的oid对应关系创建测试数据将对象名转为oid类型转换关系测试示例PostgreSQL中将对象oid转为对象名使用pg的内部数据类型将对象oid转为对象名,可以简化一些系统视图的关联查询。数据库类型转换对应类......
  • 沃姆斯传说:午夜新娘游戏报错d3dcompiler_47.dll缺失,解决方法全攻略
    当你在玩《沃姆斯传说:午夜新娘》这款游戏时,如果遇到系统报错提示“d3dcompiler_47.dll缺失”,这通常意味着你的系统中缺少了这个关键的动态链接库文件,或者游戏无法正确找到它。d3dcompiler_47.dll是DirectX的一部分,它支持Direct3D编译器,对于游戏的图形渲染至关重要。以下是一些......
  • 【PYTHON】图片和base64互转实践
    目录1导入依赖2image_to_base643base64_to_image1导入依赖importbase64fromPILimportImageimportio2image_to_base64defimage_to_base64(image_path):"""将图片文件转换成Base64编码的字符串:paramimage_path:图片文件的路径:retu......
  • Python 实现Excel XLS和XLSX格式相互转换
    在日常工作中,我们经常需要处理和转换不同格式的Excel文件,以适应不同的需求和软件兼容性。Excel文件的两种常见格式是XLS(Excel97-2003)和XLSX(Excel2007及以上版本)。本文将详细介绍如何使用Python在XLS和XLSX格式之间进行转换。Python库安装所需Python库-Spire.XLSforPython......
  • 独家解读:微软Copilot重磅更新,Copilot Voice震撼登场!
    01.Copilot重磅更新激动人心的消息来了!「Copilot个人版」现在开放了测试功能,让用户抢先体验!Copilot已经无缝集成到Github.com,用AI的超能力,让用户生产力和协作效率飞跃提升!但先别急,这次的更新还没有全量放送:CopilotVoice,首先在澳大利亚、加拿大、新西兰、英国和美国提......
  • PROFINET 转 EtherCAT, EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关
    EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关https://item.taobao.com/item.htm?ft=t&id=822721028899协议转换通信网关PROFINET转EtherCATGW系列型号 MS-GW31概述简介MS-GW31是PROFINET和EtherCAT协议转换网关,为用户提供两种不同通讯协议......
  • ORCLE与MySQL的相互转化
    1.情景展示在实际开发中,不同的地方可能所需使用的数据库是不同的。这就要求,我们开发的程序需要兼容不同的数据库,放到程序里面就是:需要有不同类型的sqlMap文件。以既要兼容MySQL,也要兼容Oracle进行举例说明。2.准备工作第一步根据已经写好的一套sql进行复制,然后,在原有sql的......
  • 基于Anaconda搭建深度学习环境,安装Tensorflow、Keras和Pytorch
    1、Anaconda安装(一款可以同时创建跟管理多个python环境的软件)https://blog.csdn.net/run_success/article/details/134656460安装好Anaconda之后,我们可以接着配置一个用于人工智能开发的Python环境。一、创建新的Python环境1、打开AnacondaPrompt2、创建一个名为badou的Py......