【问题标题】:How to count small seeds of two different kinds in an image?如何计算图像中两种不同种类的小种子?
【发布时间】:2021-07-07 04:33:58
【问题描述】:

我有一张图片,下面有大约 503 颗奇异子和 4 颗黑胡椒种子:

我正在尝试计算它们。我熟悉使用种子大小计算一种类型的对象,然后将其除以它们所覆盖的总面积。这是一种简单的方法,但效果很好。

对于上面的图片,我使用阈值方法找到了粒度,结果是 197 个单位,通过使用下面的代码,我可以找到种子的总数:

image = Image.open('./shapes/S__14155926.jpg')
arr = np.array(image)
nseeds = np.sum(arr[...,2] < 100) / 197
print(nseeds)
504.58468309859154

这个数字在球场上,这里有几个错误的计数没有问题。但是,如何在无需训练 CNN 模型的情况下找到分类为 500 small seeds and 4 large seeds 的输出。我不想识别种子,只是检测和计数。

【问题讨论】:

    标签: python-3.x opencv image-processing computer-vision object-detection


    【解决方案1】:

    两种种子的颜色都非常相似,这使得阈值化有点挑战性。也许,将种子通过过滤器会更容易,因此您可以在两个不同的图像中使用您的技术。如果种子彼此分离得很好,您可以在blob detection 上尝试一下。

    【讨论】:

    • 有没有一种方法可以隐藏图像中的所有奇亚籽并保留辣椒种子用于一个过程,然后隐藏所有辣椒种子并保留奇亚籽用于另一个过程?
    • 我不这么认为,因为我在上面评论过。
    【解决方案2】:

    首先我找到所有种子的面积

    img=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    img_bin = 255-cv2.threshold(copy, 127, 255, cv2.THRESH_BINARY)[1]
    S=cv2.moments(img_bin)
    S['m00']
    

    得到面积等于 26607210.0 像素

    然后我剪了5颗种子

    并找到他们的区域 175185.0。因此一个小种子有35037.0。

    因为一个大种子包含大约 8 个小种子(以上述理智的方式)我明白了 大约有728颗小种子和4颗大种子

    【讨论】:

    • 感谢您的想法,但小种子的数量为 504。这是很大比例的错误。
    猜你喜欢
    • 2021-06-29
    • 2016-11-12
    • 2019-12-25
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多