我正在尝试使用图像处理工具将颗粒分为有缺陷的和无缺陷的,比如Python中的OpenCV。其中一张图片如图所示。

我首先使用HSV空间通过测距分别分割出颗粒,并应用了一些边缘检测算法,如canny,自适应阈值,但我可以找到一个特殊的方法来解决这个问题,因为我最近开始探索,我仍然在探索图像处理的能力。
有缺陷的:






无缺陷:






我有两个问题:
1)如果我使用如上所示的edge_detected图片,则使用什么度量来区分颗粒。
2)由于在无缺陷ones.Is的第三张图像中使用canny的边缘检测失败,因此我可以依赖任何其他功能。
发布于 2020-06-19 00:30:50
举个例子:
import cv2
import numpy as np
img=cv2.imread('YfClv.jpg')
#convert to hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
#color definition
blue_lower = np.array([100,118,33])
blue_upper = np.array([119,255,160])
#blue color mask (sort of thresholding, actually segmentation)
mask = cv2.inRange(hsv, blue_lower, blue_upper)
se=cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (20, 20))
mask=cv2.dilate(mask, se)
mask=cv2.bitwise_not(mask)
edges = cv2.Canny(img,300,100) #find edges
out=cv2.bitwise_and(edges, mask) #xor for testing
#cv2.imshow('test', out)
cv2.imwrite('bad_seeds.png', out)结果,内侧边缘:

https://stackoverflow.com/questions/62448433
复制相似问题