我的任务是计算土壤表面裂缝的总面积。以下是一些可能的输入图像的示例:
img1
img2
img3
img4
我可以轻松地检测出土壤表面:
但是,对我来说,准确地检测裂缝很复杂。经过大量研究,我决定将双向过滤器与Canny Edges结合使用以检测裂纹。这是我的代码:
blur = cv2.bilateralFilter(gray, 5, 60, 40)
canny_cracks = cv2.Canny(blur, 100, 200)
# Morphological Transformation for closing edges
kernel = np.ones((val, val))
res = cv2.morphologyEx(canny_cracks, cv2.MORPH_CLOSE, kernel)
cv2.imshow('Result', res)
但是,它并不像我期望的那么准确。我的问题是,为了更准确地检测裂纹,哪种滤波器和阈值化将是最佳选择?我尝试使用cv2.findContours
代替cv2.Canny
,这带来了很多噪音。对于这样一个具体的问题,我感到很抱歉,我是OpenCV的新手。