Python 从图像中检测喷雾颜色

Python 从图像中检测喷雾颜色,python,detection,cv2,Python,Detection,Cv2,我得到了一张黄纸的照片,上面喷了一些喷雾。 我尝试只显示图像中的蓝色斑点,以便所有其他颜色将显示为白色,所有蓝色将显示为黑色。(所有喷涂颜色将转换为黑色…) 问题是,喷雾的一部分融合在照片中,看起来像绿色,这让我很难找到一种仅从图像中检测喷雾的方法。 我尝试在hsv的绿色和蓝色范围内使用cv2.inrange和cv2.bitwise_和,但我仍然无法从图像中获得喷雾的良好副本。 另外,我也试着用RGB来做这件事,就像在这段代码中一样 import cv2 import numpy as np i

我得到了一张黄纸的照片,上面喷了一些喷雾。 我尝试只显示图像中的蓝色斑点,以便所有其他颜色将显示为白色,所有蓝色将显示为黑色。(所有喷涂颜色将转换为黑色…) 问题是,喷雾的一部分融合在照片中,看起来像绿色,这让我很难找到一种仅从图像中检测喷雾的方法。 我尝试在hsv的绿色和蓝色范围内使用
cv2.inrange
cv2.bitwise_和
,但我仍然无法从图像中获得喷雾的良好副本。 另外,我也试着用RGB来做这件事,就像在这段代码中一样

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

image = cv2.imread(r"the image")

for row in range(image.shape[0]):
   for col in range(image.shape[1]):
       blue_range = [b for b in range(93,182)]
       duts_range_green = [dg for dg in range(25, 95)]
       duts_range_blue = [db for db in range(90, 145)]
       
        if image[row, col, 0] in blue_range or image[row,col,0] in duts_range_green and image[row, col,1] in duts_range_blue:
          image[row,col] = 0
       else:
          image[row, col] = 255
我试着做了一些过滤器,希望它能帮助我检测到喷雾,但它没有帮助太多

以下是我正在制作的图片:

此代码看起来有误。首先,您在内部
for
循环中构建的3个列表是恒定的:它们不依赖于任何一个循环索引,并且它们的内容永远不会更改,因此这只是一种让处理器产生一些热量的好方法(也许您很冷,我不知道……)。接下来,为什么
if
语句与
的内部
处于相同的缩进级别?您的意思是只对每行的最后一列进行操作吗?因为这就是它要做的。最后,在
else
中,您有一个输入错误:什么是
roe
(股本回报率?某种鱼子酱?)?对不起,我在复制代码时没有注意到它移动了。我现在修好了。在for循环中,我试图找出所有的喷雾颜色-蓝色的。我从每个部分(黄色、蓝色和圆点)提取了20个像素,并从中为每个RG和B确定了一个范围。我不明白它们有什么问题。