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)
掩码:
结果:
下载生成的图像,看看它是透明的而不是白色的。
我想从图像中删除一个区域,但我不确定从哪里看。
我举个例子。
资料来源: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)
掩码:
结果:
下载生成的图像,看看它是透明的而不是白色的。