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