【问题标题】:Python: Measuring a particle size in an image from a given reference?Python:根据给定参考​​测量图像中的颗粒大小?
【发布时间】:2020-01-29 13:36:59
【问题描述】:

我是 python 初学者。我正在从 100 张图像中计算和测量颗粒大小。我在下面有一个示例图像。带有指向它的箭头的粒子的高度和宽度为 20 微米。有没有办法使用该粒子作为参考来计算和测量其他类似粒子的数量?是通过 OpenCV 吗?

这是参考图像,箭头指向高度和宽度为 20 微米的参考粒子(可以使用下面的第二个粒子进行测试):

以下是可用于测试的其他图像:

谢谢

【问题讨论】:

标签: python opencv particles


【解决方案1】:
  1. 获取参考粒子的高度和宽度的像素数
  2. 定位粒子(因为图像是黑白的,所以很简单)。
  3. 获取围绕这些非黑色区域的矩形
  4. 将最小边界矩形的宽度/高度与参考矩形进行比较。
import matplotlib as mpl
mpl.rcParams['figure.dpi'] = 300
import matplotlib.pyplot as plt

import cv2
import numpy as np

WIDTH_REF = 50.0 # pixels
HEIGHT_REF = 50.0 # pixels

img = cv2.imread('example.png')
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
contours, _ = cv2.findContours(gray, cv2.RETR_EXTERNAL,
                cv2.CHAIN_APPROX_SIMPLE)

res = np.array(img)

for c in contours:
    x, y, widthPixel, heightPixel = cv2.boundingRect(c)
    realWidth = widthPixel / WIDTH_REF * 20.0
    realHeight = heightPixel / HEIGHT_REF * 20.0
    cv2.rectangle(res,(x,y),(x+widthPixel,y+heightPixel), (255, 0, 0), 2)
    cv2.putText(res, "{0:.1f}".format(realWidth) +" x " + "{0:.1f}".format(realHeight) + " microns", (x,y-10), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)
    print(realWidth, " x ", realHeight)

【讨论】:

  • 非常感谢。我真的很感激这一点。我只是有几个问题:1)你是怎么得到参考粒子的像素数的? 2)我怎样才能得到最后一张图片,其中每个粒子旁边都绘制了矩形并写有大小?谢谢
猜你喜欢
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 2015-07-31
  • 1970-01-01
  • 2016-05-28
  • 2017-07-29
相关资源
最近更新 更多