如何替换图像中彩色物体的颜色?

2024-04-25 03:35:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在视频图像中检测边缘,但是像canny这样的边缘检测方法效果不是很好,可能是因为盒子的颜色和地板颜色或亮度之间的相似性,所以我想找到一种方法使所有的红色和蓝色盒子看起来尽可能白,或者可能是最好的方法来检测边缘尽可能完美从那以后的每一帧都是最终的目标。你知道吗

enter image description here


Tags: 方法图像目标视频颜色相似性边缘盒子
2条回答

我建议你使用颜色跟踪。你知道吗

  1. 转换为HSV

cv2.bgr2hsv型

为什么是hsv?即使亮度发生变化,你仍然可以检测到这种颜色

  1. 过滤

您可以使用cv2.inrange

  1. 噪声消除

使用cv2.Gaussianblur

  1. 轮廓

使用cv2.findContours

  1. 找到边缘 使用ur方法

对每种颜色的盒子重复这个步骤

希望这有帮助

我只想完成我对你问题的评论。我们可以使用HSV/HLS颜色空间和色调通道使用inRanges。例如:

import numpy as np
import cv2

# load image and threshold it
original = cv2.imread("a.jpg")
hsvframe = cv2.cvtColor(original, cv2.COLOR_BGR2HLS)
mask = cv2.inRange(hsvframe, (160,40,40), (180, 255, 255))
mask = mask +  cv2.inRange(hsvframe, (0,40,40), (12, 255, 255)) # color red is at the beginning and end of the hue wheel

original[mask==255] = (0,255,0)
cv2.imshow("image", original)

cv2.waitKey(0)
cv2.destroyAllWindows()

要记住的是,色调从0到180英寸第8页. 这意味着如果你需要300-360色调的限制将是150-180。其他两个值为0-255,其中255=100%。你知道吗

这个小代码的结果是:

enter image description here

它并不完美,但一方可以使用另一方建议的方法来完善它。我希望这有帮助。你知道吗

相关问题 更多 >