我有一些果園地面的影像,如下所示:
image1.png

image2.png

現在,我想從中提取一個栗子區域,image1.png然后將其放在image2.png.
于是我用Adobe Photoshop制作了一張蒙版圖片,結果(匯出為mask.png)是這樣的:
可以看到選中的區域與栗子的邊緣緊密貼合。
但是,當我使用 Python 讀取匯出的蒙版影像時,所選區域不再適合邊緣。它是一個看起來像這樣的矩形:
result.png

這就是我在閱讀影像和生成result.png.
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
# read image1.png
image1 = np.array(Image.open('image1.png').convert('RGB'))
# read mask.png
mask = np.array(Image.open('mask.png').convert('RGB'))
# Boolean indices representing the selected region
region = np.all(img != 255, axis=-1)
# "region" has a shape of (height, width)
# so we have to add an axis corresponding to color channels
region = np.dstack([region, region, region])
plt.imshow(np.where(region, image1, 255))
plt.axis('off')
plt.savefig('result.png', bbox_inches='tight')
有什么工具可以讓我按原樣使用蒙版影像(不是喜歡result.png而是喜歡mask.png)?
uj5u.com熱心網友回復:
你可以試試 OpenCV Python。從技術上講,您的mask.png影像是 RGBA 彩色影像,RGB 代表紅-綠-藍,A 代表透明度。使用 時np.array(Image.open('mask.png').convert('RGB')),您已將透明通道從影像中移除。
import numpy as np
import cv2
import matplotlib.pyplot as plt
mask = cv2.imread('mask.png', cv2.IMREAD_UNCHANGED)
cv2.imwrite('result.png',mask)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/361546.html
上一篇:如何在.NET6中讀取環境變數?
