1. 批量将rgb图转换为灰度图
matlab代码:
pathdir='D:Matlab InstallMATLABR2021Abinground_truth';%文件夹路径
format = 'png';%文件格式
files=dir(strcat(pathdir,'*.',format));
steps=100;
hwait=waitbar(0,'准备开始');
for n=1:numel(files)
filename=strcat(pathdir,files(n).name);
img=imread(filename);
mysize=size(img);
fprintf('a=%f',mysize);
x=rgb2gray(img);
imwrite(x,filename,'png');%自动设置为替换原文件,可以修改
str='正在运行中';
waitbar(n/numel(files),hwait,str);
end
close(hwait);
或python代码
转换后,查看图片属性,位深度从“24” 变为 “8”, 且图片的mode从“rgb”变为“L”
2. 批量jpg转png
用批处理bat文件处理,新建txt, 里面内容输入:
ren *.jpg *.png
将txt文件重命名为.bat文件
3. 将灰度图 二值化后 仍为灰度图
python代码
import os
from PIL import Image
# 源目录
MyPath = r'C:UsersZDesktop111'
# # 输出目录
OutPath = 'C:/Users/Z/Desktop/333/'
def processImage(filesoure, destsoure, name, imgtype):
'''
filesoure是存放待转换图片的目录
destsoure是存在输出转换后图片的目录
name是文件名
imgtype是文件类型
'''
imgtype = 'png'
# 打开图片
img = Image.open(name)
# 模式L”为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。
# 二值化
# 自定义灰度界限,大于这个值为黑色,小于这个值为白色
threshold = 200
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(256)
# 图片二值化
photo = img.point(table, 'L') # 'L'表示灰度图,图片位深度为8,若这里设置为'1',则图像是二值图,位深度是1
photo.save(destsoure + name, imgtype)
def run():
# 切换到源目录,遍历源目录下所有图片
os.chdir(MyPath)
for i in os.listdir(os.getcwd()):
# 检查后缀
postfix = os.path.splitext(i)[1]
if postfix == '.png':
processImage(MyPath, OutPath, i, postfix)
if __name__ == '__main__':
run()



