作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面是 python 中当前的工作代码,使用 PIL 来突出显示两个图像之间的差异。但其余图像变黑。
目前我想显示背景以及突出显示的图像。
无论如何,我可以让节目的背景变浅并突出显示差异。
from PIL import Image, ImageChops
point_table = ([0] + ([255] * 255))
def black_or_b(a, b):
diff = ImageChops.difference(a, b)
diff = diff.convert('L')
# diff = diff.point(point_table)
h,w=diff.size
new = diff.convert('RGB')
new.paste(b, mask=diff)
return new
a = Image.open('i1.png')
b = Image.open('i2.png')
c = black_or_b(a, b)
c.save('diff.png')
! https://drive.google.com/file/d/0BylgVQ7RN4ZhTUtUU1hmc1FUVlE/view?usp=sharing
最佳答案
PIL确实有一些方便的图像处理方法,但也有很多缺点开始进行认真的图像处理 -
大多数 Python 文献都会建议您切换对像素数据使用 NumPy,这将给出你完全控制-其他成像库,例如 leptonica、gegl 和 vips全部都有 Python 绑定(bind)和一系列不错的函数用于图像合成/分割。
在这种情况下,问题是想象一个人会如何在图像处理程序中获得所需的输出:你可以用黑色(或其他颜色)的阴影来覆盖原始图像,然后在其上粘贴第二张图像,但使用阈值(即像素等于或不同 - 所有中间值都应四舍五入将差异的“不同”作为第二个图像的掩码。
我修改了你的函数来创建这样的组合 -
from PIL import Image, ImageChops, ImageDraw
point_table = ([0] + ([255] * 255))
def new_gray(size, color):
img = Image.new('L',size)
dr = ImageDraw.Draw(img)
dr.rectangle((0,0) + size, color)
return img
def black_or_b(a, b, opacity=0.85):
diff = ImageChops.difference(a, b)
diff = diff.convert('L')
# Hack: there is no threshold in PILL,
# so we add the difference with itself to do
# a poor man's thresholding of the mask:
#(the values for equal pixels- 0 - don't add up)
thresholded_diff = diff
for repeat in range(3):
thresholded_diff = ImageChops.add(thresholded_diff, thresholded_diff)
h,w = size = diff.size
mask = new_gray(size, int(255 * (opacity)))
shade = new_gray(size, 0)
new = a.copy()
new.paste(shade, mask=mask)
# To have the original image show partially
# on the final result, simply put "diff" instead of thresholded_diff bellow
new.paste(b, mask=thresholded_diff)
return new
a = Image.open('a.png')
b = Image.open('b.png')
c = black_or_b(a, b)
c.save('c.png')
关于image - 比较两个图像并在第二个图像上突出显示差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30277447/
有没有一种方法可以“标记”对象的属性,使它们在反射中“突出”? 例如: class A { int aa, b; string s1, s2; public int AA
我是一名优秀的程序员,十分优秀!