gpt4 book ai didi

python - 使用python从矩形图像创建非矩形图像

转载 作者:行者123 更新时间:2023-12-02 16:14:59 25 4
gpt4 key购买 nike

我有几张700x400的图片,看起来像enter image description here下面的图片

它们由两个区域组成,一个区域由蓝色表示,另一个区域由绿色表示。这些区域由一条线隔开。一个XML文件包含用于分隔这些区域的所有图像(大约60个数组)的线条的单独y轴的y轴,如下所示:

<?xml version="1.0" encoding="utf-8"?> 
<Data>
<Image>
<ImageUrl> file:///Data/1.tif </ImageUrl>
<Array> 150 144 169 199 199 200 210 ..... 344 </Array>
</Image>
<Image>
<ImageUrl> file:///Data/2.tif </ImageUrl>
<Array> 150 144 169 199 199 200 210 ..... 344 </Array>
</Image>
.
.
.
</Data>

现在,我想沿着这条线剪切图像 ABCD,并且只有绿色区域。我看过 this,但无法正常工作。我努力了 :
import xml.etree.ElementTree as ET
import cv2, numpy as np
tree = ET.parse("image.xml")
segArray = tree.findall(".//Image/Array")
arrayList = []
for i in range (0,len(segArray)-1):
xa = segArray[i].text.split(" ")
arrayList.append(xa)
arrayList = np.array(arrayList)

arrayList存储数组,但是现在我想不出一种使用这些数组来像我想的那样剪切图像的方法。

最佳答案

关于既没有代表性图像也没有数据的图像处理问题,很难回答,但是我想您想根据某种形式的XML使未指定图像的顶部透明到顶部为止一定距离。

因此,我将以paddington作为输入图像,以正弦波作为XML,并假设您可以适应您要尝试执行的操作:

enter image description here

并使用PIL / Pillow这样的代码:

#!/bin/env python3

from math import sin,cos
import numpy as np
from PIL import Image

# Create a new alpha mask, initially all white, that makes parts of image transparent
w, h = 700, 400
alpha = np.ones((h,w), dtype=np.uint8)*255

# Draw a vertical black line of length "l" from top downwards at each column position across image
for col in range(w):
# Length of line is given by a sine wave
l = abs(int(sin(col/30)*h/3))
alpha[0:l, col] = 0


# Now open our image and push that alpha layer into it
im = Image.open('image.png').convert('RGB')

im.putalpha(Image.fromarray(alpha))
im.save('result.png')

结果

enter image description here

我创建的Alpha层看起来像这样,并添加了红色边框,因此您可以在StackOverflow的白色背景上看到其范围:

enter image description here

关于python - 使用python从矩形图像创建非矩形图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57822990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com