簡體   English   中英

使用 PILLOW [PIL,Python] 將透視校正圖像與透明背景模板圖像合並

[英]Merging perspective corrected image with transparent background template image using PILLOW [PIL, Python]

問題:我有多個書籍封面圖片。 我用 3D 視角制作了一個類似於“書”的模板。 我現在要做的就是拍攝每本書的封面圖像,校正透視圖(它始終不變,因為模板始終不變)並將我的透視校正圖像與模板(背景/畫布)合並。

為了更容易理解 - 這是在 Adobe Photoshop 中創建的示例: 在此處輸入圖像描述

我試圖用紅色箭頭顯示原始封面圖像的頂點(在透視校正之前)。 如您所見,右側的 2 個頂點必須保留。 左邊的其他兩點必須始終保持不變。

你能告訴我如何實現嗎?

更新我有什么:

1)覆蓋自己在此處輸入圖像描述

2)透明背景模板: 在此處輸入圖像描述

我需要轉換封面的透視並將其與模板圖像合並

你真的不需要寫任何 Python,你可以在終端中使用ImageMagick使用“透視變換” ,如下所示:

magick cover.png -virtual-pixel none -distort perspective "0,0 96,89 %w,0 325,63 %w,%h 326,522 0,%h 96,491" template.png +swap -flatten result.png

在此處輸入圖像描述

查看透視變換的參數,您可以看到有 4 對坐標,變換的每個角各一對,顯示源位置如何映射到 output 圖像中。

因此,封面的左上角 (0,0) 被映射到模板中空白區域的左上角 (96,89)。 封面的右上角 (width,0) 被映射到模板空白區域的右上角 (325,63)。 封面的右下角(寬度、高度)被映射到模板空白區域的右下角 (326,522)。 封面的左下角 (0,height) 被映射到模板空白區域 (96,491) 的左下角。

如果您使用的是舊版 v6 ImageMagick ,請將magick替換為convert


請注意,如果您真的想在 Python 中執行此操作,這里有一個名為wand的 Python 綁定。 我對wand不是很有經驗,但這似乎是等價的:

#!/usr/bin/env python3

from itertools import chain
from wand.color import Color
from wand.image import Image

with Image(filename='cover.png') as cover, Image(filename='template.png') as template:
    w, h = cover.size
    cover.virtual_pixel = 'transparent'
    source_points = (
        (0, 0),
        (w, 0),
        (w, h),
        (0, h)
    )
    destination_points = (
        (96, 89),
        (325, 63),
        (326, 522),
        (96, 491)
    )
    order = chain.from_iterable(zip(source_points, destination_points))
    arguments = list(chain.from_iterable(order))
    cover.distort('perspective', arguments)

    # Overlay cover onto template and save
    template.composite(cover,left=0,top=0)
    template.save(filename='result.png')

關鍵詞:Python、ImageMagick、魔杖、圖像處理、透視變換、扭曲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM