【OpenCV项目实战】图像的像素值反转
2026/6/10 21:05:06 网站建设 项目流程

文章目录

  • 一、项目思路
  • 二、算法详解
    • 2.1、获取图像信息
    • 2.2、新建模板
    • 2.3、图像通道顺序
  • 三、项目实战:彩图的像素值反转(方法一)
  • 四、项目实战:彩图的像素值反转(方法二)
  • 五、项目实战:彩图转换为灰图后,像素值反转

一、项目思路

  1. 读取图像
  2. 获取图像信息
  3. 新建模板
  4. 像素值反转
  5. 显示图像

二、算法详解

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()

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询