【发布时间】:2020-11-13 14:33:03
【问题描述】:
我想从图像中删除一个区域,但我不确定在哪里查看。
让我举个例子。
来源:https://i.imgur.com/rNFDje9.png
目的地:https://i.imgur.com/m8uZOLJ.png
因此,我从 100x100 像素开始删除了 100x100 的区域。
有人可以指导我在哪里看吗?
非常感谢,
本
【问题讨论】:
标签: imagemagick imagemagick-convert
我想从图像中删除一个区域,但我不确定在哪里查看。
让我举个例子。
来源:https://i.imgur.com/rNFDje9.png
目的地:https://i.imgur.com/m8uZOLJ.png
因此,我从 100x100 像素开始删除了 100x100 的区域。
有人可以指导我在哪里看吗?
非常感谢,
本
【问题讨论】:
标签: imagemagick imagemagick-convert
我假设您想要一个透明区域。以下是如何在 Imagemagick 和 Python/OpenCV 中执行此操作。
将图像转换为包含不透明的 Alpha 通道。然后创建一个带有黑色矩形的白色背景的蒙版。结果应该不透明的地方是白色,应该透明的地方是黑色。然后将遮罩放入图片的alpha通道中。
输入:
Imagemagick
convert barbara3.jpg \( +clone -fill white -colorize 100 -fill black -draw "rectangle 50,50 250,150" \) -alpha off -compose copy_opacity -composite result.png
Python/OpenCV
import cv2
import numpy as np
# read image
img = cv2.imread('barbara3.jpg')
hh, ww = img.shape[:2]
# convert to image with opaque alpha channel
imgA = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
# create mask of filled black rectangle on white background
# white for opaque and black for transparent
mask = np.full((hh,ww), 255, dtype=np.uint8)
mask = cv2.rectangle(mask, (50,50), (250,150), 0, -1)
# put mask into alpha channel of image
result = imgA.copy()
result[:,:,3] = mask
cv2.imwrite('barbara3_mask.png', mask)
cv2.imwrite('barbara3_transparent_box.png', result)
cv2.imshow("img", img)
cv2.imshow("mask", mask)
cv2.imshow("result", result)
cv2.waitKey(0)
面具:
结果:
下载生成的图像,看看它是透明的而不是白色的。
【讨论】: