在树莓派上使用PIL将一张图片叠加到另一张上
我正在使用树莓派和一个摄像头模块。我写了一个脚本,让摄像头拍了一张照片。
现在,在我拍完照片后,我需要一个Python脚本,把刚拍的照片和另一张图片(比如水印或标志)合成在一起。我试着使用这个链接:http://pillow.readthedocs.org/en/latest/handbook/tutorial.html,但我不知道该用哪些命令或语法。
编辑:
我的Python脚本... 它拍了一张带时间的照片。
from datetime import datetime
zeit = datetime.now()
zeit = "%s-%s-%s-%s:%s:%s" % (zeit.year,zeit.day,zeit.month,zeit.hour,zeit.minute,zeit.second)
Bildformat = ".png"
Bildname = "Bild-" + zeit + Bildformat
from subprocess import call
#call (["raspistill -o " + Bildname + " -t 1 -n"], shell=True)
call (["raspistill -o /home/pi/cam_project/Bilder/" + Bildname + " -t 1 -n"], shell=True)
编辑 2:
谢谢大家的回答。这是我的完整代码。我想添加一些像教程中提到的内容(请查看上面的链接)。我的主要想法是,摄像头拍一张照片,然后PIL库(见链接)抓取这张照片,并把这张新拍的照片和另一张之前制作好的图片(在同一个文件夹里,像水印或标志)合成在一起。
大概是这样的:
from __future__ import print_function
from PIL import Image
img_taken = Image.open("/home/pi/cam_project/Bilder/" + Bildname + "")
# This is the picture with the date as name
img_watermark/logo = Image.open("home/pi/cam_project/Bilder/watermark.png
# This is the logo
# Then I want something like: paste img_watermark/logo in img_taken
如果你点击我上面发的链接,向下滚动到“滚动图像”部分,在代码后面他们说:
对于更高级的技巧,paste方法还可以接受一个透明度蒙版作为可选参数。在这个蒙版中,值255表示在该位置粘贴的图像是不透明的(也就是说,粘贴的图像应该原样使用)。值0表示粘贴的图像是完全透明的。介于两者之间的值表示不同程度的透明度。
我想要的输出是处理过的图片(带有标志/水印)。
1 个回答
4
我觉得这个方法对你有用。它可以处理你使用的水印图片中的透明度,还能让水印图片变得更亮,这样就不那么明显了。
import PIL.Image
import PIL.ImageEnhance
# images
base_path = 'base.jpg'
watermark_path = 'watermark.png'
base = PIL.Image.open(base_path)
watermark = PIL.Image.open(watermark_path)
# optional lightness of watermark from 0.0 to 1.0
brightness = 0.5
watermark = PIL.ImageEnhance.Brightness(watermark).enhance(brightness)
# apply the watermark
some_xy_offset = (10, 20)
# the mask uses the transparency of the watermark (if it exists)
base.paste(watermark, some_xy_offset, mask=watermark)
base.save('final.png')
base.show()
(公共领域的猫咪图片)