python opencv轮廓检测_python opencv中的不规则形状检测和测量

正如我在评论中提到的那样,对于这个问题,分水岭似乎是一个很好的方法.但是当你回答时,定义标记的前景和背景是困难的部分!我的想法是使用形态梯度沿着冰晶获得良好的边缘并从那里开始工作;形态梯度似乎很有效.

import numpy as np

import cv2

img = cv2.imread('image.png')

blur = cv2.GaussianBlur(img, (7, 7), 2)

h, w = img.shape[:2]

# Morphological gradient

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7, 7))

gradient = cv2.morphologyEx(blur, cv2.MORPH_GRADIENT, kernel)

cv2.imshow('Morphological gradient', gradient)

cv2.waitKey()

从这里开始,我使用一些阈值来对梯度进行二值化.可能有一种更清洁的方法来做到这一点……但这比我尝试过的其他一些想法更好.

# Binarize gradient

lowerb = np.array([0, 0, 0])

upperb = np.array([15, 15, 15])

binary = cv2.inRange(gradient, lowerb, upperb)

cv2.imshow('Binarized gradient', binary)

cv2

你可能感兴趣的:(python,opencv轮廓检测)