文章目录
- 一、项目思路
- 二、算法详解
- 2.1、获取图像信息
- 2.2、新建模板
- 2.3、图像通道顺序
- 三、项目实战:彩图的像素值反转(方法一)
- 四、项目实战:彩图的像素值反转(方法二)
- 五、项目实战:彩图转换为灰图后,像素值反转
一、项目思路
- 读取图像
- 获取图像信息
- 新建模板
- 像素值反转
- 显示图像
二、算法详解
2.1、获取图像信息
img.shape[0]:图像的垂直尺寸(高度) img.shape[1]:图像的水平尺寸(宽度) img.shape[2]:图像的通道数2.2、新建模板
作用:根据给定形状和类型,返回全0填充的数组。 函数说明:zeros(shape,dtype=float,order='C')输入参数: shape:形状 dtype:(可选参数)数据类型,默认numpy.float64。 order:(可选参数),c代表行优先;F代表列优先2.3、图像通道顺序
需注意:Pillow加载图像后的尺寸是二维,图形化是三维,但无法打印三维尺寸。
详细区别:
Opencv:uint8的ndarray数据,通道顺序[h, w, c],颜色通道BGR。
- 导入模块:
import cv2
(1)cv2.imread()
(2)cv2.imshow()
(3)cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
Matplotlib(plt):uint8的ndarray数据,通道顺序[h, w, c],颜色通道RGB。
- 导入模块:
import matplotlib.pyplot as plt
(1)plt.imread()
(2)plt.imshow()
Pillow(PIL):uint8的ndarray数据,通道顺序[h, w, c],颜色通道RGB。
- 导入模块:
import PIL
(1)PIL.Image.open()
(2)PIL.Image.show()
Pythorch:tensor数据,通道顺序[n, c, h, w],颜色通道RGB。
- 导入模块:
import torchvision
(1)torchvision.transforms.ToTensor()
(2)torchvision.transforms.ToPILImage()
三、项目实战:彩图的像素值反转(方法一)
importcv2# opencv读取的格式是BGRimportmatplotlib.pyplotasplt# Matplotlib是RGBimportnumpyasnp img=cv2.imread(r'bee.jpg')# 读取图像imgInfo=img.shape# 读取图像信息height=imgInfo[0]# 图像高度width=imgInfo[1]# 图像宽度channel=imgInfo[2]# 图像通道数dst=np.zeros((height,width,channel),np.uint8)foriiinrange(channel):forjjinrange(height):forkkinrange(width):Pixel=img[jj,kk,ii]dst[jj,kk,ii]=255-Pixel img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)dst=cv2.cvtColor(dst,cv2.COLOR_BGR2RGB)plt.subplot(1,2,1),plt.imshow(img),plt.axis('off'),plt.title('Raw')plt.subplot(1,2,2),plt.imshow(dst),plt.axis('off'),plt.title('New')plt.show()python–图像颜色反转
四、项目实战:彩图的像素值反转(方法二)
importcv2# opencv读取的格式是BGRimportmatplotlib.pyplotasplt# Matplotlib是RGBimg=cv2.imread(r'bee.jpg')dst=255-img img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)dst=cv2.cvtColor(dst,cv2.COLOR_BGR2RGB)plt.subplot(1,2,1),plt.imshow(img),plt.axis('off'),plt.title('Raw')plt.subplot(1,2,2),plt.imshow(dst),plt.axis('off'),plt.title('New')plt.show()五、项目实战:彩图转换为灰图后,像素值反转
importcv2# opencv读取的格式是BGRimportmatplotlib.pyplotasplt# Matplotlib是RGBimg=cv2.imread('starry_night.jpg',1)gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 彩色图像转换为灰度图像(3通道变为1通道)dst=255-gray# 最大图像灰度值减去原图像,即可得到反转的图像img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)gray=cv2.cvtColor(gray,cv2.COLOR_BGR2RGB)dst=cv2.cvtColor(dst,cv2.COLOR_BGR2RGB)plt.subplot(1,3,1),plt.imshow(img),plt.axis('off'),plt.title('Raw')plt.subplot(1,3,2),plt.imshow(gray),plt.axis('off'),plt.title('Gray')plt.subplot(1,3,3),plt.imshow(dst),plt.axis('off'),plt.title('New')plt.show()