1

当给定这样的图像时:

在此处输入图像描述

并且不知道图像中对象的颜色,我希望能够自动找到最佳的 H、S 和 V 范围来阈值对象本身,以获得这样的结果像这样:

在此处输入图像描述

在这个例子中,我手动找到了值并使用 cv::inRange 对图像进行阈值处理。
我正在寻找的输出是用于阈值图像中给定对象的最佳 H、S 和 V 范围(每个最小值和最大值,总共 6 个整数值),而无需事先知道对象是什么颜色。稍后我需要在我的代码中使用这些值。
要记住的关键点:
- 所有给定的图像将具有相同的大小。
- 所有给定的图像都将具有相同的深色背景。
- 我将放入图像中的所有对象都是全彩色的。

我可以暴力破解 6 个 HSV 范围值的所有可能排列,为每个值设置阈值,并找到一种聪明的方法来确定何时找到最佳 blob(也许是 blob 大小?)。不过,这似乎是一个非常麻烦、冗长且效率极低的解决方案。

什么是解决这个问题的好方法?我做了一些研究,发现 OpenCV 有一些机器学习能力,但我需要在过程结束时有实际的 6 个值,而不仅仅是一个阈值图像。

4

0 回答 0