- Получите количество пикселей для высоты и ширины вашей эталонной частицы.
- Найдите частицы (поскольку изображения черно-белые, это просто).
- Получите прямоугольник вокруг этих -черная область
- Сравните ширину / высоту минимального ограничивающего прямоугольника с контрольным.
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)