OpenCV 六色重构 Lenna 图像

本教程展示如何使用 OpenCV 和 Python,仅用六种颜色逼近 Lenna 图像。

六种颜色

我们将使用以下 RGB 颜色:

  • (255, 0, 0) - 红色
  • (255, 255, 0) - 黄色
  • (0, 255, 0) - 绿色
  • (0, 255, 255) - 青色
  • (0, 0, 255) - 蓝色
  • (255, 255, 255) - 白色

Python 代码

import cv2

# 读取 Lenna 图像
img = cv2.imread('lenna.png')

# 定义六种颜色
colors = [(255, 0, 0), (255, 255, 0), (0, 255, 0), (0, 255, 255), (0, 0, 255), (255, 255, 255)]

# 将图像转换为灰度
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 将灰度图像转换回彩色
color = cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR)

# 遍历每个像素,找到最接近的颜色
for i in range(color.shape[0]):
    for j in range(color.shape[1]):
        pixel = color[i, j]
        min_dist = float('inf')
        for c in colors:
            dist = (c[0] - pixel[0])**2 + (c[1] - pixel[1])**2 + (c[2] - pixel[2])**2
            if dist < min_dist:
                min_dist = dist
                closest_color = c
        color[i, j] = closest_color

# 显示结果图像
cv2.imshow('六色 Lenna', color)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果

运行代码后,您将看到 Lenna 图像仅用六种颜色逼近后的版本。

六色 Lenna

解释

代码的工作原理如下:

  1. 读取 Lenna 图像并将其转换为灰度。
  2. 将灰度图像转换回彩色,以便我们可以用六种颜色替换像素。
  3. 遍历每个像素,计算其与六种颜色中每种颜色的距离。
  4. 将像素替换为与其距离最近的颜色。

这种技术称为色彩量化,它可以减少图像中颜色的数量,同时保留其整体外观。

OpenCV 六色重构 Lenna 图像 - Python 实现

原文地址: https://www.cveoy.top/t/topic/jtgc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录