目前,我正面临着用相邻的颜色给粉红色的盒子着色的麻烦,这样图像看起来会更真实的。我的形象是这样的:
到目前为止,我使用CV2包并实现了这一点:
我的代码:
up = np.array([151,157,255])
pink_mask = cv2.inRange(img, up, up)
cnts, _ = cv2.findContours(pink_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for c in cnts:
color = tuple(map(int, img[0, 0]))
cv2.fillPoly(img, pts=[c], color=color)
在这里,我用图像上的第一个像素填充,因为我不知道如何用相邻的颜色填充它。
2条答案
按热度按时间nhn9ugyo1#
我们可以扩大遮罩,并使用cv2.inPaint:
输出:
62lalag42#
使用'cv2.boundingRect[c]'获取当前轮廓' x,y,w和h。如果要根据检测到的轮廓的左手填充颜色,请使用(x - 5,y)。如果你想在右边填充颜色,使用(x + w + 5,y)。
请注意,5只是使用的偏移量。你可以从1开始。