如何更改图像特定区域的颜色?

问题描述

我试图在 python 中覆盖段落内的图像。

这是原图,第一段中间有两张图片

enter image description here

抱歉图片文件太大了..我想将第一段中间的两个图像转换为纯白色(用纯色覆盖它们)。我有这两张图片的坐标,但我如何才能改变这些特定区域的颜色?

这是这两个图像的 x,y 坐标:

图像_1:

left,right = 678,925
top,bottum = 325,373

图像_2:

left,right = 130,1534
top,bottum = 403,1508

请帮忙!非常感谢!!

解决方法

以下是如何“编辑”给定左上角和右下角的图像部分。

import cv2
import numpy as np

# load image
img = cv2.imread("page.jpg");

# target boxes
boxes = [];

# first box
tl = [678,325];
br = [925,373];
boxes.append([tl,br]);

# second box
tl = [130,403];
br = [1534,1508];
boxes.append([tl,br]);

# redact with numpy slicing
for box in boxes:
    tl,br = box;
    img[tl[1]:br[1],tl[0]:br[0]] = [255,255,255]; # replace with white

# show image
cv2.imshow("Redacted",img);
cv2.waitKey(0);
cv2.imwrite("redacted.png",img); # save

我认为您提供的盒子不正确。第二个很大,第一个很小。这是使用这些框的图片:

enter image description here

这个代码应该适用于任何盒子,所以只需将角坐标调整到正确的位置就可以了。