如何将图像颜色翻转至光谱对侧的等效颜色
图像光谱对侧颜色翻转实现方法
你描述的这类效果通常分为两种常见实现逻辑,可根据需求选择:
核心实现逻辑
- 全色反色(负片效果):对应你提到的白变黑、黑变白的效果,实现逻辑是对8位深度图像的RGB三个通道像素值单独取反,计算公式为
新像素值 = 255 - 原像素值。这种翻转会同步改变颜色和明度,比如浅灰会变为深灰,亮红色会变为暗青色。 - 色相补色翻转(保留明度):对应你提到的蓝变黄、红变青、绿变品红这类光谱对侧等效色效果,不会改变图像明暗程度。实现逻辑是将图像从RGB色彩空间转换到HSV/HSB色彩空间,仅对色相(Hue)通道做180度偏移,再转换回RGB空间即可。
常用工具操作步骤
Photoshop/GIMP类图像编辑软件
- 普通反色:直接按快捷键
Ctrl+I(Windows)/Cmd+I(Mac)即可一键完成 - 补色翻转:
- 新建「色相/饱和度」调整图层
- 把色相滑块直接拖动到+180或者-180的位置即可生效
Python代码实现
普通反色(基于OpenCV)
import cv2 import numpy as np img = cv2.imread("input.jpg") inverted_img = 255 - img cv2.imwrite("inverted_output.jpg", inverted_img)
补色翻转(基于OpenCV)
import cv2 import numpy as np img = cv2.imread("input.jpg") # 转换到HSV色彩空间 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # OpenCV的H通道范围为0-179,加90等价于色相偏移180度 hsv[..., 0] = (hsv[..., 0] + 90) % 180 # 转回RGB空间输出 complementary_img = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) cv2.imwrite("complementary_output.jpg", complementary_img)
注意:如果图像带Alpha透明通道,操作时不要修改Alpha通道数值,避免透明效果丢失。
内容的提问来源于stack exchange,提问作者Hopeless
相关产品推荐
相关产品推荐

