OpenCV,更改为图像中最接近的颜色

Posted

技术标签:

【中文标题】OpenCV,更改为图像中最接近的颜色【英文标题】:OpenCV, Change to nearest color in image 【发布时间】:2020-07-28 16:02:24 【问题描述】:

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

我该怎么做?

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))

【问题讨论】:

能否请您详细说明或添加图片以更好地解释问题。当您说图像中最接近的颜色时,您的意思是低于lower_blue 还是高于upper_blue 的颜色?或者你的意思是说颜色应该是图像中相邻像素的颜色? 我会尝试在这种情况下添加公共图像,但我的意思是图像中的相邻像素。 【参考方案1】:
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/

【讨论】:

以上是关于OpenCV,更改为图像中最接近的颜色的主要内容,如果未能解决你的问题,请参考以下文章

Opencv:将使用视频的代码更改为使用轨迹栏进行颜色检测的图像

RGB 图像中最主要的颜色 - OpenCV / NumPy / Python

OpenCV:改变像素的颜色

如何使用带有c ++的opencv库将下图中的黑色像素更改为红色像素

OpenCV-几何形状颜色识别 #导入MD文档图片#

OpenCV Python 系列教程4 - OpenCV 图像处理(上)