【问题标题】:How to get the size of an object using OpenCV python?如何使用 OpenCV python 获取对象的大小?
【发布时间】:2020-05-26 23:53:57
【问题描述】:

我有一个关于 opencv python 的问题,我在这里有一个图像示例我想知道如何使用 opencv python 获取这个对象的大小。

这是示例图片

这是我想要的输出

我只是在我想要的输出上使用绘画。

【问题讨论】:

  • 不是轮廓,我需要得到这个物体的尺寸嘿嘿。
  • 要测量物体,首先要找到它的轮廓。或者使用机器学习或深度网络来识别图像上的对象。
  • 您需要先获取轮廓,然后在它们周围放置一个框,然后测量该框的尺寸。这会给你以像素为单位的大小。如果您希望在现实世界中进行测量(如厘米或英寸),这是一个更加困难的问题,因为您必须拥有图像的校准数据才能将像素转换为现实世界。
  • 那么在检测到轮廓之后呢?如何获得尺寸?

标签: python image opencv image-processing computer-vision


【解决方案1】:

一种简单的方法是获取二值图像,然后在该图像上找到边界框。这是绘制到图像上的框的宽度(以像素为单位)和高度的结果。要确定真实世界的测量值,您需要校准信息以将像素缩放为具体值(例如厘米)。如果没有将像素转换为可量化长度的校准信息,则很难将其转换为真实尺寸。

代码

import cv2

# Load image, grayscale, Gaussian blur, Otsu's threshold
image = cv2.imread("1.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5,5), 0)
thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

# Find bounding box
x,y,w,h = cv2.boundingRect(thresh)
cv2.rectangle(image, (x, y), (x + w, y + h), (36,255,12), 2)
cv2.putText(image, "w={},h={}".format(w,h), (x,y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (36,255,12), 2)

cv2.imshow("thresh", thresh)
cv2.imshow("image", image)
cv2.waitKey()

【讨论】:

  • 所以我需要一个数据?获得真实世界的大小
  • 是的,您必须有一些校准数据。真实到像素的转化率
  • 怎么做,我这里有数据。你能帮我吗?
  • 我在图像上有一个额外的边界框,比我的图像小一点,我想忽略这个矩形框。有什么帮助吗?
【解决方案2】:

这里有一个快速建议,为什么不使用像 YOLO 这样的物体检测器,有很多预训练的权重可以在线下载,幸运的是,香蕉属于 coco 类。

你可以看看这个 github repo:https://github.com/divikshrivastava/drfoodie

编辑: 在这里查看示例 https://drive.google.com/file/d/1uJE0hy9mv75Ya3dqBIyw-kn1h87WLxy4/view?usp=drivesdk

【讨论】:

  • 如果是真实世界的尺寸呢?
  • 打扰一下,请问您能澄清一下尺寸,您是指面积还是直径?
  • 我需要直径。
【解决方案3】:

在你的情况下,只使用 RGB 图片,你实际上不能。

不过,以下是一种简单实用的方法。您可能需要一个在现实世界中以可测量单位(例如毫米)为单位的已知尺寸的参考对象。这应该预先放置在与感兴趣对象的相机相同的距离处。检测到图像中的两个对象(参考对象和感兴趣对象)后,您将能够计算“每公制像素比率”以计算其实际大小。有关详细信息,请查看以下链接:tutorialsimilarly in github

另一种方法是使用深度相机,或者只是使用this answer 可能建议的替代技术来检索与感兴趣对象的距离。

(编辑)另一方面,由于您的问题并未完全阐明您是指真实世界的指标(即厘米)还是仅以像素为单位的度量,请原谅我误导您..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多