dalun图像转单通道scm.imread 和cv2.imrea
1. 批量把文件夹中3通道变为单通道
pathdir='./data/';%文件夹路径
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);
x=rgb2gray(img);
mysize=size(img);
mysize
sizes=size(x);
sizes
imwrite(x,filename,'png');%自动设置为替换原文件,可以修改
str='正在运行中巴啦啦巴啦';
waitbar(n/numel(files),hwait,str);
end
close(hwait);
2.注释代码为批量查看图片的通道数,下面代码为查看单张图片的通道数
% %pathdir='./data/';%文件夹路径
% %format = 'png';%文件格式
% %files=dir(strcat(pathdir,'*.',format));
% for n=1:numel(files)
% filename=strcat(pathdir,files(n).name);
% img=imread(filename);
% mysize=size(img);
% mysize
% end
img=imread('./data/1599.png');
mysize=size(img);
mysize
-------------------------------------------------------------------------------------
转自:https://blog.csdn.net/weixin_40546602/article/details/80763310
1、cv2.imre# 加载灰度图像数据ad()函数读取灰度图像
#-----------------------------------------
img_gray_data = cv2.imread('./images/AN001.png')
print('数据类型:', type(img_gray_data))
print('数组类型:', img_gray_data.dtype)
print('数组形状:', img_gray_data.shape)
print('数组最大值:{},最小值:{}'.format(img_gray_data.max(), img_gray_data.min()))
#---------------------------------
结果:数据类型: <class 'numpy.ndarray'>
数组类型: uint8数组形状: (490, 640, 3)
数组最大值:255,最小值:0
即使读取的图片为灰度图,cv2.imread()函数也会按bgr三个通道读取。这三个通道的像素值是相同的。
2、scm.imread()函数读取灰度图像
img = scm.imread('./images/AN001.png')
print('数据类型:', type(img))
print('数组类型:', img.dtype)
print('数组形状:', img.shape)
print('数组最大值:{},最小值:{}'.format(img.max(), img.min()))
结果:数据类型: <class 'numpy.ndarray'>
数组类型: uint8
数组形状: (490, 640)
数组最大值:255,最小值:0
此函数读取的图像仅有一个亮度通道,需要谨慎处理
3、scm.imresize()函数和transform.resize()函数对(490,640)二维灰度图像的处理
img_resize = scm.imresize(img, (256, 256, 3))
img_resize ==transform.resize(img, (256, 256, 3))
# scm.imresize()函数
数组形状: (256, 256)
数组最大值:255,最小值:0
# transform.resize()函数
数组形状: (256, 256, 3)
数组最大值:1.0,最小值:0.0
前者对(490,640)二维数据进行了resize,而后者处理后变成了3通道数据,而且,像素值从0-255,变成了0-1,进行了归一化。