首页 > 解决方案 > OpenCV,更改为图像中最接近的颜色

问题描述

我目前有以下代码,它搜索一系列颜色(蓝色)并将其替换为特定颜色,但是,我想将其替换为图像中最接近的颜色,而不是调色板中最接近的颜色图片。

我怎样才能做到这一点?

import cv2
import numpy as np
import matplotlib.pyplot as plt

image = cv2.imread('test5.jpeg')
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

lower_blue = np.array([80,50,50], dtype="uint8")
upper_blue = np.array([101,255,255], dtype="uint8")

mask = cv2.inRange(hsv, lower_blue, upper_blue)

#image[mask > 0] = (183, 213, 247)

plt.figure()
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

标签: pythonnumpyopencv

解决方案


mask = cv2.inRange(hsv, lower_blue, upper_blue)

mask = cv2.bitwise_and(image, image, mask=mask)
gray_mask = cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY)

image = cv2.inpaint(image, gray_mask, 100, flags=cv2.INPAINT_TELEA)

inpaint我可以使用该方法解决我的问题。

https://www.pyimagesearch.com/2020/05/18/image-inpainting-with-opencv-and-python/


推荐阅读