OpenCV 六色重构 Lenna 图像 - Python 实现
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 图像并将其转换为灰度。
- 将灰度图像转换回彩色,以便我们可以用六种颜色替换像素。
- 遍历每个像素,计算其与六种颜色中每种颜色的距离。
- 将像素替换为与其距离最近的颜色。
这种技术称为色彩量化,它可以减少图像中颜色的数量,同时保留其整体外观。
原文地址: https://www.cveoy.top/t/topic/jtgc 著作权归作者所有。请勿转载和采集!