Python 用opencv处理不同质量的图像

Python 用opencv处理不同质量的图像,python,opencv,Python,Opencv,我正在分析一幅图像,以便在图像中找到棕色的物体。我正在对图像进行阈值处理,并将最暗的部分作为棕色细胞。但是,根据图像的质量,有时无法识别对象。在OpenCV Python中是否有任何解决方案,例如预处理灰度图像并定义棕色对特定图像的含义 我用来查找棕点的代码如下: def countBrownDots(图像文件): im=cv2.imread(图像文件) #改变颜色空间 灰色=cv2.CVT颜色(im、cv2.COLOR\U BGR2GRAY) 灰色=增加亮度(灰色) l1,thresh=cv

我正在分析一幅图像,以便在图像中找到棕色的物体。我正在对图像进行阈值处理,并将最暗的部分作为棕色细胞。但是,根据图像的质量,有时无法识别对象。在OpenCV Python中是否有任何解决方案,例如预处理灰度图像并定义棕色对特定图像的含义

我用来查找棕点的代码如下:

def countBrownDots(图像文件): im=cv2.imread(图像文件) #改变颜色空间 灰色=cv2.CVT颜色(im、cv2.COLOR\U BGR2GRAY) 灰色=增加亮度(灰色) l1,thresh=cv2.阈值(灰色,10255,cv2.thresh\u二进制\u INV) 阈值=nImage.gaussian_滤波器(阈值,16) l2,thresh=cv2.阈值(thresh,70255,cv2.thresh\u二进制) 阈值=nImage.gaussian_滤波器(阈值,16) cv2.imshow(“阈值22”,阈值) rmax=pymorp.regmax(thresh) nim=pymorp.overlay(thresh,rmax) 种子,nr_核=nImage.标签(rmax) cv2.imshow(“原件”,im) cv2.imshow(“布朗”,nim)

以下是一个输入图像示例:


查看HSV颜色空间中的图像,以下是并排堆叠的3个平面

虽然人们建议根据色调进行分割,但在饱和度和值平面中实际上有更多的鉴别信息。对于此特定图像,使用灰度(即值平面)可能比使用色调获得更好的结果。但是,这不是放弃颜色信息的理由

作为颜色分割的概念证明(使用Gimp),我只是随机选择了一个棕色斑点,并将所有颜色从该斑点更改为绿色,颜色距离小于60,得到以下结果:

如果你稍微使用一下参数,你可能会得到你想要的。然后编写代码。
我尝试过对图像进行预处理以对其进行后期处理,但这并没有真正起到帮助。

您好,首先您应该查看HSV空间,在该空间中更容易找到特定的颜色。第二,你应该展示你的问题的图像,以帮助我们理解问题。图像是这样的:根据biquette所说的,你也应该从色调图像中构建一个直方图,看看在给定范围内获取具有色调值的图像区域是否已经解决了问题。注意:有时你可以通过找到所有你不想要的东西来解决问题。我可以计算更改为灰度的对象数量,并对这个特定的图像使用阈值,但当图像更改时,它不起作用。我必须根据图像操作参数。我想做一些通用的所有类型的图像。这可能吗?手动调整许多图像的参数,然后使用这些图像来训练分类器。OpenCV有一个数字可供选择,请参阅。我可能会选择支持向量机,因为如果任何东西都能起作用,但一开始会有点痛苦。