1.普通RGB图像为三个通道,转换为灰度图为一个通道
2.Opencv
import cv2
#打开图片并显示
img = cv2.imread("./cat.png")
cv2.imshow("Image", img)
cv2.waitKey (0)
#将彩色图像转成灰度图像,利用opencv自带的cvtColor可以将彩色图像转成灰度图像
gray_image = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#查看图片通道格式
gray_image.shape
#img.shape 返回图像高(图像矩阵的行数)、宽(图像矩阵的列数)和通道数3个属性组成的元组,若图像是非彩色图,则只返回高和宽组成的元组。
#图像存储
cv2.imwrite('./new_img2.jpg',gray_image)
cv2.imread()会默认以彩色模式读取图片,这样黑白图片读取后也成了三通道,想以图片原始模式读取使用
img = cv2.imread("./cat.png",-1)
使用cv2.imshow()展示图片时,需要加上cv2.waitKey (0),否则会一跳而过。
cv2.imshow("Image", img)
cv2.waitKey (0)
3.PIL
#1、显示图片
from PIL import Image
im = Image.open('lena.png')
im.show()
#2、将 PIL Image 图片转换为 numpy 数组
im_array = np.array(im)
#3、保存 PIL 图片
#直接调用 Image 类的 save 方法
from PIL import Image
I = Image.open('lena.png')
I.save('new_lena.png')
#5、RGB 转换为灰度图、二值化图
from PIL import Image
I = Image.open('lena.png')
I.show()
L = I.convert('L') #转化为灰度图
L = I.convert('1') #转化为二值化图
L.show()
#查看图片模式
lena=Image.open('lena.png')
lena.mode
#输出RGB为彩色图片,通道数为3,输出'L'者"1"为灰度及黑白图,通道数为1
1:1位像素,表示黑和白,但是存储的时候每个像素存储为8bit。
L:8位像素,表示黑和白
RGB:3x8位像素,为真彩色。
重要的一点时图像只要经过转换及存储后,其模式就不会变,只是读取时以不同的模式读会有差异,不用担心
网友评论