Imagemagick删除图像的区域

Imagemagick删除图像的区域,imagemagick,imagemagick-convert,Imagemagick,Imagemagick Convert,我想从图像中删除一个区域,但我不确定在哪里查看。 让我给你举个例子。 来源: 目的地: 因此,我从100x100像素开始删除了100x100个区域。 有人能告诉我去哪里看吗? 非常感谢, 本我想你应该在图像上画一个白色的矩形。因此,如果您想要一个宽100px、高20px的白色矩形,从左侧偏移10px,从顶部偏移20px,请使用: magick input.png -fill white -draw "rectangle 10,20 110,40" result.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通道。然后创建一个带有黑色矩形的白色背景遮罩。白色表示结果应不透明,黑色表示结果应透明。然后将遮罩放入图像的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)

遮罩:

结果:

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