最终效果如下:
不仅标出了裂纹位置,还标出了裂纹的尺寸
原图如下:
核心原理就是基于opencv的图片处理及轮廓查找,具体逻辑看代码,话不多说上代码:
# 在一张图片上检测圆
import cv2
import numpy as np
def detect_circle(img):
"""在一张图片上检测圆
img: 必须是二值化的图
"""
roi=np.zeros(img.shape[:2], dtype=np.uint8)
mask = np.ones_like(img) * 255
# img = img * 255
img_bgr = np.stack([img,img,img],axis=-1)
# param2越小,检测到的圆越多
circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,
param1=10,param2=10,minRadius=10,maxRadius=70)
# print(circles)
circles = np.uint16(n