用OpenCV进行玉米树计数

用OpenCV进行玉米树计数,opencv,counting,Opencv,Counting,如何基于下图使用opencv精确计算玉米树?我曾尝试过使用inRange进行HSV转换,但到目前为止一无所获 有没有办法正确计算树木的数量?即使减少了噪音,我认为它也不会计算它的属性。我选择了一个模板,如下所示。。。 当我尝试运行模板匹配时,我得到了以下匹配。。 匹配很好,因为我从图像的该部分选择了模板。但是,当阈值为ed时,包含完整图像不同区域匹配范围值的结果图像如下所示。。 因此,你可以看到,如果你计算白色斑块(忽略小噪音),你几乎可以得到可能的作物数量 编辑 如果您尝试在RGB图像的绿色平

如何基于下图使用opencv精确计算玉米树?我曾尝试过使用inRange进行HSV转换,但到目前为止一无所获


有没有办法正确计算树木的数量?即使减少了噪音,我认为它也不会计算它的属性。

我选择了一个模板,如下所示。。。 当我尝试运行模板匹配时,我得到了以下匹配。。 匹配很好,因为我从图像的该部分选择了模板。但是,当阈值为ed时,包含完整图像不同区域匹配范围值的结果图像如下所示。。 因此,你可以看到,如果你计算白色斑块(忽略小噪音),你几乎可以得到可能的作物数量

编辑


如果您尝试在RGB图像的绿色平面中进行模板匹配

可以得到更精确的结果,在执行几个简单的预处理步骤时,您的问题更容易解决。看看我得到的结果:

步骤:

  • 将RGB转换为实验室图像
  • 提取A通道(丢弃L、B通道)
  • 拉伸/最大化图像对比度
  • 使用Otsu的最佳阈值选择进行二值化
  • 反转图像,使前景为白色,背景为黑色

基于此,图像模板匹配或其他检测方法应该更有效。

尝试一些模板匹配…你能给我举个例子吗?好的,较小的白点和右下角的白点怎么样?我可以用一个findContour数一数吗?左上角的小点实际上是一棵植物。要去除其他较小的点,可以使用侵蚀过滤器。我现在不想详细讨论第二阶段。这取决于你:-)。我将在几分钟后发布我的代码-我在这个计算机视觉主题上是一个真正的新手(只知道基本知识)。我已经用源代码更新了我在顶部的帖子。大津大学的门槛和侵蚀对我来说都是新闻:-)
#include#include使用名称空间cv;使用名称空间std;int main(){Mat src=imread(“corn.jpg”);if(src.empty(){return-1;}Mat lab;cvtColor(src,lab,CV_bgr2; lab);imshow(“lab”,lab);return 0;}
我真的被困在这个问题上了,我怎么能忽略小噪音(忽略较小的白点)?1)如何在完整图像的不同区域应用匹配范围?2) 您只使用了一个灰度转换吗?3) 你做了什么样的阈值?本例中的FindOnTours()并没有解决计数问题。我已经应用了模板匹配。然而,我无法得到像你这样的结果(黑白图像加上白色补丁)。好吧,我将不胜感激:-)