Python: Измерение размера частиц на изображении по заданной ссылке? - PullRequest
0 голосов
/ 29 января 2020

Я python новичок. Я работаю над подсчетом и измерением размеров частиц по сотням изображений. У меня есть пример изображения ниже. Частица со стрелкой, направленной на нее, имеет диаметр 20 мкм в высоту и ширину. Есть ли способ использовать эту частицу в качестве эталона для подсчета количества и измерения других подобных частиц? Это через OpenCV?

Вот эталонное изображение со стрелкой, направленной к эталонной частице высотой и шириной 20 микрон (можно использовать вторую частицу ниже для целей тестирования): enter image description here

Вот другие изображения, которые можно использовать для тестирования: enter image description here enter image description here

Спасибо

1 Ответ

1 голос
/ 29 января 2020
  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)

example

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...