opencv-python 批量更改图像分辨率并且保留图像原有的透明度
opencv-python环境安装:https://www.cnblogs.com/technicist/p/17138657.html
案例代码(批量压缩图像分辨率为原来的一半,例如2400*1398 可压缩至1200*699):
注意:处理后的图像会保存到原来的目录下(替换掉原来的图像)
import cv2
import os
import sys# PATH = r'/root/autodl-tmp/MySwin-Unet/data/' # 这个路径只需写到train和val文件夹即可。文件夹下的图片程序会自动帮你打开
PATH = r'D:\ProgramFiles\libwebp\libwebp-1.2.1-windows-x64\bin\png\Help_3840_1080\mipmap-ldrtl-hdpi' def resizeImage(file,NoResize):
# image = cv2.imread(file, cv2.IMREAD_COLOR)
image = cv2.imread(file, cv2.IMREAD_UNCHANGED) #读入完整图片,包括alpha通道 # 如果type(image) == 'NoneType',会报错,导致程序中断,所以这里先跳过这些图片,
# 并记录下来,结束程序后手动修改(删除) if image is None:
NoResize += [str(file)]
else:
width = int(image.shape[1]/2)
height = int(image.shape[0]/2)
print("宽度:"+str(width))
print("高度:"+str(height))
resizeImg = cv2.resize(image, (width, height)) # 这里改为自己想要的分辨率 cv2.imwrite(file, resizeImg)
cv2.waitKey(100) if __name__ == "__main__":
NoResize = [] # 记录没被修改的图片
total = 0 for childPATH in os.listdir(PATH):
# 子文件路径
childPATH = PATH + '\\' + str(childPATH)
print(childPATH)
total+=1
resizeImage(childPATH,NoResize)
print("总数量:" + str(total))
print('------修改图片大小全部完成❥(^_-)')
效果:
(1)原图像的分辨率:

(2)处理后的分辨率:

(3)批量压缩:

坑1:压缩出来的图像,透明度全为1,导致图标不清晰,效果图如下:

问题分析:首次读取图像时,只读取了3个通道(R、G、B),漏读了透明度通道;设置读取4通道R、G、B + alpha通道即可

效果图如下:

opencv-python 批量更改图像分辨率并且保留图像原有的透明度的更多相关文章
- 【图像处理】OpenCV+Python图像处理入门教程(七)图像形态学操作
图像形态学主要从图像内提取分量信息,该分量信息通常对表达图像的特征具有重要意义.例如,在车牌号码识别中,能够使用形态学计算其重要特征信息,在进行识别时,只需对这些特征信息运算即可.图像形态学在目标视觉 ...
- Python批量更改文件名
一.问题在处理文件或者一些其他信息的时候我们需要更改文件名,那么我们可以写一个程序来修改这些文件名,以减少我们重复的做一件事. 二.解决本次使用的Python,利用的是Python中的OS模块,具体操 ...
- python 批量更改文件名
工作中遇到一种情况,就是市场部那边经常发过来一些apk的包 但是要求更改名字,文件太多了,没办法,只有想办法了,还好命名都是有规则的 比如说 YZLoan-gdtyyb-V2.23.apk------ ...
- 使用python批量更改文件
最近整理之前学爬虫存储的文件,发现有很多文件名有重复,而我有一点点强迫症,不想文件名重复,就写了一个Python代码来解决文件名重复问题 import os import random import ...
- openCV—Python(2)—— 载入、显示和保存图像
一.函数简单介绍 1.imread-读取图像 函数原型:imread(filename, flags=None) filename:读取的图像路径名:比如:"H:\img\lena.jpg& ...
- OpenCV2类批量处理文件夹及文件图像 及批量处理后保存到txt文件
//采用windows控制台实现计算文件夹中对象总数以及批量读取对象 //#include <afx.h> //和windows.h是一样的作用 #include <opencv2/ ...
- Halcon一日一练:图像分辨率与像素
1.图像像素: 像素是指由图像的小方格即所谓的像素(pixel)组成的,这些小方块都有一个明确的位置和被分配的色彩数值,而这些一小方格的颜色和位置就决定该图像所呈现出来的样子.像素是构成图像的基本单元 ...
- Opencv python图像处理-图像相似度计算
一.相关概念 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直.大白腿.樱桃唇.瓜子脸.王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定这是你 ...
- 利用 Python 进行批量更改文件后缀
利用 Python 进行批量更改文件后缀 代码 import os files = os.listdir('.') for file_name in files: portion = os.path. ...
- Python用Pillow(PIL)进行简单的图像操作
Python用Pillow(PIL)进行简单的图像操作 颜色与RGBA值 计算机通常将图像表示为RGB值,或者再加上alpha值(通透度,透明度),称为RGBA值.在Pillow中,RGBA的值表示为 ...
随机推荐
- 《HTTP权威指南》– 7.缓存
Web缓存的概念 Web缓存是可以自动保存常见文档副本的HTTP设备. 使用缓存的优点: 减少了数据的数据传输,节省了网络费用: 缓解了网络瓶颈的问题,不需要更多的带宽就能更快地加载页面: 降低了原始 ...
- 基于 Traefik 的 Basic Auth 配置
前言 Traefik是一个现代的HTTP反向代理和负载均衡器,使部署微服务变得容易. Traefik可以与现有的多种基础设施组件(Docker.Swarm模式.Kubernetes.Marathon. ...
- 【转载】SQL 2012以上版本分页查询更简单
2012以上版本分页查询更简单 注意:以下都是先执行排序,再取行数据 select* from t_workers order by worker_id desc offset 3 rows -- ...
- 主题 2 Shell工具和脚本
主题 2 Shell工具和脚本 Shell 工具和脚本 · the missing semester of your cs education (missing-semester-cn.github. ...
- ArcGIS工具 - 导出数据库结构
为了保证数据的一致性,数据库结构的正确性在数据库建设和管理过程中显示十分重要,在各个地理信息类项目的技术规定中都对空间数据库的结构进行明确和详细的定义,有时为了方便检查或文档编辑需要将数据结构导出,为 ...
- [Untiy]贪吃蛇大作战(三)——商店界面
游戏商店界面: 实际的效果图如下: 要实现这个滑动,首先我们需要,一个内容显示区域,一个内容滚动区域,如下图: 其中ItemContent挂载的组件如下: 红框标注的地方是右方的滑动块. 然后Item ...
- Java学习笔记:2022年1月9日(其二)
Java学习笔记:2022年1月9日(其二) 摘要:这篇笔记主要记录了1月9日学习的第四章的类的基础知识,以及访问器以及访问器于多线程的意义. 目录 Java学习笔记:2022年1月9日(其二) 1. ...
- 工作这么多年,我总结的数据传输对象 (DTO) 的最佳实践
前言 数据传输对象 (DTO) 是一种设计模式,常用于软件开发不同层或者不同系统之间传输数据.DTO 的主要目的是封装数据并防止它被其他层或系统直接访问或修改.通过遵循一组最佳实践,开发人员可以确保他 ...
- Keil 5(Keil C51)安装与注册 [ 图文教程 ]
前言 Keil C51 是 51 系列兼容单片机 C 语言软件开发系统,支持 8051 微控制器体系结构的 Keil 开发工具,适合每个阶段的开发人员,不管是专业的应用工程师,还是刚学习嵌入式软件开发 ...
- Docker命令的自动补齐
Docker命令的自动补齐 背景 在linux下输入命令或文件都是可以自动补齐的,这个特性极大的提高了我们的效率,多数情况下我们很少用命令参数的自动补齐. 但对docker git这类参数特别多的命令 ...