OpenCV-Python实战(8) —— OpenCV 实现批量将 bmp、png、jpg格式图片转换为 png 格式图片
2023-09-14 09:15:07 时间
1. 需求分析
- 要求批量处理,因此考虑将所有的需要处理的文件放到一个文件夹下;
- 文件夹下可能不止需要处理的文件,因此通过文件后缀对文件进行筛选;
- 图片格式转换的处理方法有很多,本文采用 opencv 来进行图片的格式转换。
2. 实现效果
3. 需求实现
- 使用 os 模块来读取需要处理文件夹里的全部文件名称;
- 转换后的 png 格式图片需要新建一个 png 文件夹,保存转换后的 png 图片;
- 获取文件后缀,判断是否是需要转换的文件格式;
- 使用 cv.imread 和 cv.imwrite 进行格式转换:OpenCV-Python学习(2)—— OpenCV 图像的读取、显示和保存(cv.imread、cv.imshow、cv.imwrite)。
4. 图片转换
- 循环文件名称;
- 以【.】进行切割,获取文件名和文件后缀;
- 判断文件后缀,是否在转换需求文件中;
- 是需要转换的文件,根据文件名,使用 cv.imread 读取图片 OpenCV-Python学习(2)—— OpenCV 图像的读取、显示和保存(cv.imread、cv.imshow、cv.imwrite);
- 使用 cv.imwrite 保存文件,同时修改文件后缀为 png,OpenCV-Python学习(2)—— OpenCV 图像的读取、显示和保存(cv.imread、cv.imshow、cv.imwrite)。
# 图片转换
def handleImage(names):
for name in names:
suffixs = name.split('.')
suffix = suffixs.pop()
if suffix in ['bmp','png','jpg']:
img = cv.imread(f'./images/{name}')
cv.imwrite(f'./png/{suffixs[0]}.png', img)
print(f'================={suffixs[0]}转换成功==================')
5. 完整代码
"""
@Author :Rattenking
@Date :2023/03/24 10:27
@CSDN :https://blog.csdn.net/m0_38082783
"""
import os
import time
import cv2 as cv
filePath = os.path.dirname(os.path.abspath(__file__))
# 获取当前文件夹下的文件名列表
def readname():
names = None
try:
names = os.listdir(f'{filePath}/images/')
except Exception as e:
print(e)
print('获取文件名列表失败!')
else:
print('获取文件名列表成功!')
return names
# 图片转换
def handleImage(names):
for name in names:
suffixs = name.split('.')
suffix = suffixs.pop()
if suffix in ['bmp','png','jpg']:
img = cv.imread(f'./images/{name}')
cv.imwrite(f'./png/{suffixs[0]}.png', img)
print(f'================={suffixs[0]}转换成功==================')
# 转换所用时间的计算
def loopHandleFile():
start = time.time()
startTime = int(round(start * 1000))
names = readname()
try:
if not os.path.exists(f'./png/'):
os.makedirs(f'./png/')
handleImage(names)
except Exception as e:
print(e)
print('批量转换图片失败!')
else:
print('批量转换图片成功!')
end = time.time()
endTime = int(round(end * 1000))
print('本次转换用时:' + str(endTime - startTime) + ' ms')
if __name__ == "__main__":
loopHandleFile()
相关文章
- Python map、reduce、filter函数用法
- 【python】web开发
- python用类实现装饰器
- python:ERROR: No matching distribution found for Pillow==9.1.0的处理(Python 3.6.8)
- 【OpenCV-Python】教程:3-2 几何变换(仿射变换,透视变换)
- Python之多线程:python多线程设计之同时执行多个函数命令详细攻略
- 成功解决sub_div.insert(points)cv2.error: OpenCV(3.4.1) C:projectsopencv-pythonopencvmodulesimgproc
- Python语言学习:Python语言学习之python包/库package的简介(模块的封装/模块路径搜索/模块导入方法/自定义导入模块实现华氏-摄氏温度转换案例应用)、使用方法、管理工具之详细攻略
- 成功解决cv2.error: OpenCV(4.1.2) C:projectsopencv-pythonopencvmodulesimgprocsrccolor.cpp:182: err
- Python编程专属骚技巧8
- Python每日一练——第4天:百钱百鸡问题(升级版)
- 已解决2.Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and wi
- 〖Python 数据库开发实战 - MySQL篇⑯〗- SQL 语句的条件查询
- 从零开始学python | 使用Python映射,过滤和缩减函数:所有您需要知道的
- Python爬虫:browsercookie库获取浏览器cookie
- Python编程:pyenv管理多个python版本环境
- python super 理解(四)
- python基础===利用PyCharm进行Python远程调试(转)
- Python-OpenCV图像处理-10-直方图的操作
- OpenCV-Python学习(17)—— OpenCV 图像像素类型转换与归一化(cv.normalize)
- OpenCV-Python学习(12)—— OpenCV 向图像添加文本(cv.putText、cv.getTextSize)
- Python基于OpenCV的工作疲劳检测系统[源码&UI界面&部署教程]
- 【Python】3.python实现图片上传到阿里云OSS
- opencv-python 开发环境的安装、配置