python - 在Python中为图像添加灯光效果

标签 python image-processing python-imaging-library

我想使用 Python 指定图像中特定位置的光源。

PIL 的 ImageEnhance 模块确实提供了一种增强图像的方法。但我想控制光源的放置以实现特殊效果。有谁知道该怎么做吗?

谢谢!

最佳答案

所以,坏消息是 PIL 无法做到这一点。我在下面提出了一些想法,不幸的是,没有一个是直截了当的。

GIMP(GNU 图像处理程序)确实有一个很棒的“闪电效果”插件,

GIMP 可以用 Python 编写脚本,并且可以参数化地调用插件。 缺点是您的插件必须从 GIMP 进程中运行。 (因此,您要么以批量方式启动 GIMP 一次运行,要么必须设计一个服务器 Python 插件,通过闪电效果插件处理您的图像)

我熟悉的其他选项也涉及进程外渲染,即使用 POVRay:将图像渲染为 1x1x0.1 平面板的颜料贴图,然后您可以在周围放置“真实”光源。

另一种方法是自己使用 OpenGL - 我浏览了一下,也许这个“gloss”项目可以为您提供一种使用光源的方法,而无需深入到低级 opengl: http://www.tuxradar.com/gloss

或者 - 用黑白矩形的矩形网格“伪造”它,并将其与颜色乘法结合起来。 这是让 yiou 单独使用 PIL 的唯一方法,但是“网格”线太明显了,我认为尝试用模糊来平滑不会削减它:

def fake_light(image, tilesize=50):
    WIDTH, HEIGHT = i.size
    for x in xrange(0, WIDTH, tilesize):
        for y in xrange(0, HEIGHT, tilesize):
            br = int(255 * (1 - x / float(WIDTH) * y /float(HEIGHT)))
            tile = Image.new("RGBA", (tilesize, tilesize), (255,255,255,128))
            image.paste((br,br,br), (x, y, x + tilesize, y + tilesize), mask=tile)

关于python - 在Python中为图像添加灯光效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2028809/

相关文章:

python - 将文档字符串中的预期结果指定为十六进制?

python - Pandas.DataFrame.rename 方法中的参数 "index"是什么?

python - 以所有可能的方式增加每个列表元素

image - 为什么我在 matlab 中用这个短代码没有得到蓝色、绿色或红色 channel ?

java - 如何将图像转换为 postscript 形状

image-processing - ComponentMeasurements[_,"Centroid"] 结果偏移

python-3.x - Pillow+numpy+unittest 给出 ResourceWarning : does this indicate a leak?

python - PIL 未在机器上统一渲染字体

python - 如何使用tensorflow对象检测API提高对象检测的精度?

python - 在 Python,Python Image Library 1.1.6 中,如何在不调整大小的情况下扩展 Canvas ?