常用的图像大小进行操作

一:在图像读取时,常用的读取方式包括PIL和CV2。
1:用PIL读取
首先载入PIL,接着用Image打开图片。

from PIL import Image
image = Image.open("D:/PycharmProjects/python function/0005.png")
print(type(image))
image = image.resize((512, 1024),Image.BICUBIC)
print(image.size)#(512, 1024)

PIL打开的图片是PIL.IMAGE格式,因此可以用**image.resize()**对图像进行缩放等,参数包括你需要的目标尺寸和采样方式。而查看图片格式可以直接调用image.size,但是只能查看长和宽无法查看通道,如果用shape是无法打开的,也可以直接使用type函数查看。

对于PIL图片还可以用torch的transforms 函数进行处理,值得注意的是,如果你的torch版本和torchvision版本不匹配会报错,没有InterpolationMode,这是你可以使用上一种方法。TR.functional.resize包括输入图片,目标尺寸,采样方式等三个参数,也可以用size函数查看大小。注意变换后的图片大小会经过调换,输入的是(15, 1024),输出的是(1024, 15)。且无法查看通道只能查看长和宽。

from torchvision import transforms as TR
from torchvision.transforms import InterpolationMode
new = TR.functional.resize(image, (15, 1024), InterpolationMode.NEAREST)
print(new.size)#(1024, 15)

2:opencv读取
使用cv2也可以读入图片,读取后的类型为numpy格式。但是读取后图片的大小为**(H,W,C),如果对图片进行操作,可以用cv2.resize**,参数包括输入图片,大小,采样方式。值得注意的是resize会将大小进行调换,例如输入的是(512,1024),输出的是(1024,512,3)。查看大小可以采用shape函数。

import cv2
i = cv2.imread("D:/PycharmProjects/python function/0005.png")
print(type(i))
l = cv2.resize(i,(512,1024),cv2.INTER_NEAREST)
print(i.shape)
print(l.shape)#(1024,512,3)

二:在图像处理时,常用的包括Upsample和F.interpolate
1:使用nn.Upsample
首先将numpy格式图片转换为tensor格式。numpy格式图片转换为tensor后变为**(C,H,W)。使用nn.Upsample可以对转换后的tensor直接进行上采样,通过参数scale_factor**调整倍数。

import torch.nn as nn
i = cv2.imread("D:/PycharmProjects/python function/0005.png")
q = TR.functional.to_tensor(i)
m = nn.Upsample(scale_factor=2)(q)#torch.Size([3, 1024, 1024])

2:使用F.interpolate
F.interpolate无法处理只有三个维度(C,H,W)的图片,在模型训练中不会出现三个维度的图片,因为在数据载入时候已经添加了batch维度。因为需要手动给图片添加一个batch维度变为(B,C,H,W),使用unsqueeze函数。F.interpolate包含输入图片,目标尺寸和采样方式三个参数。在实际中可以通过控制size参数对图片进行任意尺寸的变化。

import torch.nn.functional as F
q = q.unsqueeze(dim=0)
j = F.interpolate(q,size=[34,56],mode="bilinear")#torch.Size([1, 3, 34, 56])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/689482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一练:LeeCode-501、二叉搜索树中的众数【二叉搜索树+pre辅助节点+DFS】

本文是力扣LeeCode-LeeCode-501、二叉搜索树中的众数【二叉搜索树pre辅助节点DFS】 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐LeeCode。 给你一个含重复值的二叉搜索树(BST)的根节点 root ,…

个性签名大全

只许一生浮世清欢愿我以孤独作为铠甲,自此不再受伤愿我是阳光,明媚而不忧伤我不敢太勇敢太执着太骄傲,我怕失去开始你是我的天使,最后你是我的唯一姐的霸气,无人能比,哥的傲气,无人能朋唯有万事…

Unity面试手册:初中级面试题

1.请简述ArrayList和List的主要区别? ArrayList存在不安全类型(ArrayList会把所有插入其中的数据都当做Object来处理),装箱拆箱的操作(费时),List是泛型类,功能跟ArrayList相似&…

ASUS华硕枪神8笔记本电脑G614JIR,G814JVR,G634JYR,G834JZR工厂模式出厂Windows11系统 带重置还原功能

适用ROG枪神8系列笔记本型号: G614JIR、G614JVR、G634JYR、G634JZR G814JIR、G814JVR、G834JYR、G834JZR 链接:https://pan.baidu.com/s/1tYZt6XFNC2d6YmwTbtFN7A?pwd3kp8 提取码:3kp8 带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主…

说一下 JVM 有哪些垃圾回收器?如何选择垃圾收集器?notify()和notifyAll()有什么区别?

说一下 JVM 有哪些垃圾回收器? 如果说垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。下图展示了 7 种作用于不同分代的收集器,其中用于回收新生代的收集器包括 Serial 、 PraNew 、 Parallel Scavenge &#xf…

JSONObject.parseObject的使用-嵌套json

pom文件 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.54</version></dependency>具体代码 import com.alibaba.fastjson.JSONObject;public class JsonLearn {public static …

PyCharm - Run Debug 程序安全执行步骤

PyCharm - Run & Debug 程序安全执行步骤 1. Run2. DebugReferences 1. Run right click -> Run ‘simulation_data_gene…’ or Ctrl Shift F10 2. Debug right click -> Debug ‘simulation_data_gene…’ 在一个 PyCharm 工程下&#xff0c;存在多个 Pytho…

3个密码学相关的问题

一、离散对数问题&#xff08;Discrete Logarithm Problem, DLP&#xff09; 问题描述&#xff1a;给定 有限阿贝尓群 G中的2个元素a和b&#xff0c;找出最小的正整数x满足&#xff1a;b a ^^ x &#xff08;或者证明这样的x不存在&#xff09;。 二、阶数问题&#xff08;O…

Python实现水雨情遥测终端串口通信

Python实现水雨情遥测终端的串口通信&#xff0c;可以使用pySerial库。pySerial是一个Python串行端口通信库&#xff0c;它可以让你简单地与串行设备进行通信。以下是一个基本的示例&#xff0c;说明如何使用pySerial库进行串口通信&#xff1a; 首先&#xff0c;你需要安装py…

【PyQt】13-对话框

文章目录 前言一、知识储备二、详细展开2.1 通用对话框-QDialog2.1 消息类型对话框-QMessageBox运行结果 2.2 输入对话框 QInputDilog运行结果 2.3 字体对话框-QFontDialog运行结果 2.4 颜色对话框运行结果 2.5 文件对话框运行结果 总结 前言 1、四种形式的对话框。 2、警告框…

深入理解 Vue3 中的 setup 函数

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

搞不明白这4类车,别去自驾游

文 | AUTO芯球 作者 | 太2 春天要来了 又可以去浪了 喜欢自驾的朋友憋不住了吧&#xff0c; 鄙人不才全国各地走过&#xff0c;各种车型也大致开过。 那么根据我这几年的自驾经历 来跟大家聊一聊我觉得比较方便好用的自驾车。 第一类&#xff0c;城市SUV 宝马X&#xff…

vue框架-vue-cli

vue-cli Vue CLI是一个官方的脚手架工具,用于快速搭建基于Vue.js的项目。Vue CLI提供了一整套可配置的脚手架,可以帮助开发人员快速构建现代化的Web应用程序。 Vue CLI通过提供预先配置好的Webpack模板和插件,使得开发人员可以在不需要手动编写Webpack配置的情况下快速创建…

【Docker】docker安装

需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、Ubuntu安装docker 1、查看操作系统和CPU架构 2、卸载docker 3、配置docker下载源 4、安装docker 5、解决报错…

【STM32 物联网】AT指令与TCP,发送与接收数据

文章目录 前言一、连接TCP服务器1.1 配置Wifi模式1.2 连接路由器1.3 查询ESP8266设备IP地址1.4 连接TCP服务器 二、向服务器接收数据和发送数据2.1 发送数据2.2 接收数据 总结 前言 随着物联网&#xff08;IoT&#xff09;技术的迅速发展&#xff0c;越来越多的设备和系统开始…

【开源】C++ 周期任务调度的思想和实现

​ 今天调休&#xff0c;抓住年假的最后一天&#xff0c;将构思多日适合将并行任务串行执行的框架实现出来。 核心思想&#xff1a; 将各个独立的功能模块作为周期性的任务。在主循环集中调度所有任务&#xff0c;让各个功能模块依次有处理事项的机会。如果处理事项较为耗时&…

BES 平台 SDK之串口指令

本文章是基于BES2700 芯片&#xff0c;其他BESxxx 芯片可做参考&#xff0c;如有不当之处&#xff0c;欢迎评论区留言指出。仅供参考学习用&#xff01; 上位机下发格式&#xff1a; 格式一&#xff1a;[A,B] 格式二&#xff1a;A:B 固定格式&#xff1a;auto_test&#xff1a…

政安晨:【完全零基础】认知人工智能(二)【超级简单】的【机器学习神经网络】—— 底层算法

如果小伙伴第一次看到这篇文章&#xff0c;可以先浏览一下我这个系列的上一篇文章&#xff1a; 政安晨&#xff1a;【完全零基础】认知人工智能&#xff08;一&#xff09;【超级简单】的【机器学习神经网络】 —— 预测机https://blog.csdn.net/snowdenkeke/article/details/…

阿里云服务器CPU内存配置怎么选择够用?

阿里云服务器配置怎么选择&#xff1f;根据实际使用场景选择&#xff0c;个人搭建网站可选2核2G配置&#xff0c;访问量大的话可以选择2核4G配置&#xff0c;企业部署Java、Python等开发环境可以选择2核8G配置&#xff0c;企业数据库、Web应用或APP可以选择4核8G配置或4核16G配…

技能下载中:Sora视频让机器人秒学任何技艺!

引言 在机器人成为平凡工匠和前沿先驱的时代&#xff0c;我们正站在新黎明的边缘。本文将探讨斯坦福大学的通用操作接口&#xff08;UMI&#xff09;及其与OpenAI的Sora如何共同推进机器人技术&#xff0c;开创未来学习的新纪元。 正文 斯坦福的通用操作接口&#xff08;UMI…