Imagemagick 删除图像区域

Imagemagick remove Area of a Image


我想从图像中删除一个区域,但我不确定从哪里看。
我举个例子。
资料来源:https://i.imgur.com/rNFDje9.png
目的地:https://i.imgur.com/m8uZOLJ.png
因此,我删除了一个从 100x100 像素开始的 100x100 区域。
有人可以指导我在哪里看吗?

非常感谢,

我想您想在图像上绘制一个白色矩形。所以如果你想要一个 100px 宽和 20px 高的白色矩形,从左侧偏移 10px,从顶部偏移 20px,使用:

magick input.png -fill white -draw "rectangle 10,20 110,40" result.png

因此,如果我使用 200x100 洋红色输入图像,我得到:

我假设你想要一个透明区域。以下是如何在 Imagemagick 和 Python/OpenCV.

中执行此操作

转换图像以包含和不透明的 alpha 通道。然后创建一个带有黑色矩形的白色背景蒙版。结果应该是不透明的地方是白色,结果应该是透明的地方是黑色。然后把mask放到图片的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)

掩码:

结果:

下载生成的图像,看看它是透明的而不是白色的。