python - 黑白配色
问题描述
当红色与绿色混合时,我按预期得到黄色。
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)
解决方案
我认为@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)
推荐阅读
- android-studio - AutoCompleteTextView 向上显示列表
- lyft-api - 在 Lyft 身份验证中出现未经授权的客户端错误
- visual-studio - Visual Studio Code 无法识别 python 2.7 解释器
- bash - 从命令行启动和杀死(单独)多个隔离的 VS Code 实例
- python - 删除文本中的数字引用
- flutter - 颤振 onTap() 和 onPressed()
- c# - 同一个 dll 中包含的别名程序集
- python - 为什么我的列名在我没有分配的时候变成了数字?
- javascript - How do i make my discord bot type in a specific channel while someone is typing in the bots dms?
- html - 如何在所有页面完全加载之前隐藏页面的各个部分