在python中向图像添加照明效果

2024-10-02 00:24:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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

PIL的imageenhancement模块确实提供了一种将图像变为英国人的方法。但我想控制光源的位置来获得特效。有人知道怎么做吗?在

谢谢你!在


Tags: 模块方法图像pil光源imageenhancement
1条回答
网友
1楼 · 发布于 2024-10-02 00:24:01

坏消息是皮尔不能这么做。我试着说出几个想法,不幸的是,没有一个是直截了当的。在

GIMP(GNU图像处理程序)有一个很棒的“ligthning effects”插件

GIMP可以用Python编写脚本,并且可以参数化地调用插件。 缺点是您的插件必须从GIMP的进程中urn。(因此,您要么将GIMP作为一个批处理进行一次运行,要么必须设计一个通过lightning effects插件处理图像的服务器python插件)

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

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

或者用一个由黑白矩形组成的矩形网格来“伪造”它,你可以将它与你的通透颜色倍增相结合。 这是唯一可以让YOU单独使用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)

相关问题 更多 >

    热门问题