我正在寻找一种替代方法来分割以下土壤颗粒图像中的颗粒,而不是在 python 中进行分水岭分割,因为它可能会进一步误导对颗粒的正确检测,我正在研究边缘检测图像(使用 HED 算法)作为附上..我希望找到一种更好的方法来分割颗粒以进行进一步处理,因为我想在我的项目中获得图像中每个多边形的面积..在此先感谢我还询问随机游走分割或任何其他可用的方法。
我想用白色填充这些多边形,并且通过对整个图像的循环重复此操作,因此我想知道可用于在 python 中使用 opencv 执行此操作的语法和函数 这是我的输入图像
alist=[]
img = cv2.imread('closing2.jpg',cv2.IMREAD_GRAYSCALE)
imo = cv2.imread('closing2.jpg',cv2.IMREAD_GRAYSCALE)
imr = cv2.imread('closing2.jpg',cv2.IMREAD_GRAYSCALE)*0
imac = imr
height , width = imo.shape[:2]
a,im = cv2.threshold(img,200,255,cv2.THRESH_BINARY)
# i=100
# p=[i,i]
points = []
for j in range(0,1000,50):
for i in range(0,1000,50):
p=[i,j]
poly = raypoly(im,p,5)
st = metrics(p,poly)
polyc=raypolyLimit(im,p,st,30)
# print(polyc)
# print(len(polyc))
# for m in range(len(polyc)):
# point = polyc[m]
# cv2.fillConvexPoly(im, point, 255)
plotpoly(polyc,imr)
plotpolypoints(polyc,imr,255,1)
# plotray(im,p,imr)
am = polyArea(polyc)
# print(am)
if am > 5: …Run Code Online (Sandbox Code Playgroud) 我有一个问题,即如何使用 python 中的分水岭分割来单独分割该图像中的粒子。我的主要目标是通过应用过滤器中值模糊然后应用 Canny 边缘检测方法来去除噪声。
[![img = cv2.imread('sands.jpg')
img = cv2.medianBlur(img,7)
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imo = cv2.Canny(img,140,255)][1]][1]
Run Code Online (Sandbox Code Playgroud)
我想增强由 Canny 边缘检测功能产生的轮廓,因为我使用这些图像来检测图像内粒子的区域属性以估计面积。