首页 > 解决方案 > 黑白配色

问题描述

当红色与绿色混合时,我按预期得到黄色。

RGB for Red:   [255, 0, 0] 
RGB for Green: [0, 255, 0]
Result:        [255, 255, 0]

但是当白色和黑色混合时,我应该得到正常的灰色,但我得到了白色。我不应该变灰吗?

RGB for Black: [0, 0, 0] 
RGB for White: [255, 255, 255]
Result:        [255, 255, 255] 

这是代码:

from PIL import Image, ImageChops
import math
import matplotlib.pylab as plt

im1= Image.open(r'.\red.jpg')
im2= Image.open(r'.\green.jpg')

result = ImageChops.add(im1, im2)

plt.imshow(result)
 

标签: pythonimageimage-processinggraphicssignal-processing

解决方案


我认为@Cris Luengo 所说的(“如果你想得到灰色,请将白色和黑色像素平均在一起”)是有效的;此外,我认为另外一件事可以是 MixFactor。

您可以为此使用 OpenCV。

进口:

import sys
import cv2
import numpy as np

加载图像:

im = cv2.imread(sys.path[0]+'/im.png')

主要代码:

color=[0,0,0]
mixFactor=.5
im = (1-mixFactor)*im+[(mixFactor)*x for x in color]

我的颜色输入值:

[0, 0, 0] black
[255, 255, 255] white
[255, 0, 0] blue (BGR)
[0, 255, 0] green   
[0, 0, 255] red       

我使用图形软件绘制了第一张彩色图像;使用此 Python 代码创建的其他 8 个。

在此处输入图像描述


信用:图像上的文本是使用OpenCV 中包含的默认Hershey字体编写的。您可以在此处此处阅读更多内容。


更新:
如果你想使用 imshow 作为这个混合方法的输出;像这样使用它:

cv2.imshow("preview", im/255)

推荐阅读