【问题标题】:How to calculate the number of shapes detected after thresholding如何计算阈值后检测到的形状数量
【发布时间】:2017-01-11 01:16:01
【问题描述】:

我使用 java OpenCV 对我的图像进行了颜色分割,阈值图像可以显示为图像 1:

我想计算阈值图像中的白点数量。我研究了findcontour() 函数并试图计算白点的数量。但是我失败了。请帮我。我的代码在这里。

Imgproc.findContours(destination, contours, hierarchy,
         Imgproc.RETR_EXTERNAL,Imgproc.CHAIN_APPROX_SIMPLE);
for(int j=0;j<contours.size();j++){
  sum=sum+contours.size();
}
System.out.println("Sum"+sum);

【问题讨论】:

  • 请尽快帮助我...
  • 你能上传你正在使用的图片吗?
  • “我在这方面失败了”是什么意思?输出是什么?以及为什么您的输入图像称为“目的地”
  • 你有没有得到任何错误或错误的输出?。
  • @JeruLuke 这是我正在处理的图像。

标签: java opencv image-processing opencv-contour


【解决方案1】:

对于这种情况,Jeru 的回答是正确的。如果你有一个噪声较大的情况,而形态学操作不会把它们取出来,你可以用轮廓大小做一个截止,比如

for contour in contours
    if cv2.contourArea(contour) > minimal_length

计数之前

【讨论】:

  • 非常感谢您的指导:D
【解决方案2】:

我应用了形态学Opening操作。

使用此代码:opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)

kernel 是一个 5x5 的 1 数组。

我得到了这个:

【讨论】:

  • 我希望你在 Java 中找到了类似的功能。 )
  • 我能知道获取点数的方法吗...例如这个点数是=1
  • 是的,我可以在 java 中找到类似的函数,非常感谢你......但是我能知道获取点数的方法吗?例如,点数为=1
  • 对于我使用的内核 (1,1,1,1,1) (1,1,1,1,1) (1,1,1,1,1) (1,1, 1,1,1) (1,1,1,1,1) 这个矩阵,然后我在那个“面具”图像上找到了轮廓,我得到了 6 作为我的输出。非常感谢您的指导。
猜你喜欢
  • 2016-10-11
  • 1970-01-01
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 2019-07-04
  • 2020-06-11
  • 1970-01-01
  • 2015-07-07
相关资源
最近更新 更多