【问题标题】:OpenCV, Change to nearest color in imageOpenCV,更改为图像中最接近的颜色
【发布时间】: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 的颜色?或者你的意思是说颜色应该是图像中相邻像素的颜色?
  • 我会尝试在这种情况下添加公共图像,但我的意思是图像中的相邻像素。

标签: python numpy opencv


【解决方案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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-12
    • 2020-05-17
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2019-07-02
    • 2016-07-03
    相关资源
    最近更新 更多