网站建设课程内容,小型企业门户网站制作,什么网站可以学做西餐,广州专业做网站排名哪家好缺陷检测#xff0c;分为两个部分#xff0c;一个部分是提取指定的轮廓#xff0c;第二个部分通过对比实现划痕检测与缺角检测。本次主要搞定第一部分#xff0c;学会观察图像与提取图像ROI对象轮廓外接矩形与轮廓。
下面是基于二值图像分析的大致流程
读取图像将图像转换…缺陷检测分为两个部分一个部分是提取指定的轮廓第二个部分通过对比实现划痕检测与缺角检测。本次主要搞定第一部分学会观察图像与提取图像ROI对象轮廓外接矩形与轮廓。
下面是基于二值图像分析的大致流程
读取图像将图像转换为灰度图并对其进行二值化处理。
# 图像二值化
gray cv.cvtColor(src, cv.COLOR_BGR2GRAY)
ret, binary cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | 进行形态学开运算以去除噪声和平滑图像。
cv.THRESH_OTSU)
# 形态学开运算去除噪声和平滑图像
se cv.getStructuringElement(cv.MORPH_RECT, (3, 3), (-1, -1))
binary cv.morphologyEx(binary, cv.MORPH_OPEN, se)
cv.imshow(binary, binary)提取图像中的轮廓。
# 提取图像中的轮廓
contours, hierarchy cv.findContours(binary, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
针对每个轮廓计算其外接矩形并根据一些条件绘制矩形和轮廓。
height, width src.shape[:2]
for c in range(len(contours)):x, y, w, h cv.boundingRect(contours[c])area cv.contourArea(contours[c])# 根据条件过滤不符合要求的轮廓if h (height//2):continueif area 150:continuecv.rectangle(src, (x, y), (xw, yh), (0, 0, 255), 1, 8, 0)cv.drawContours(src, contours, c, (0, 255, 0), 2, 8)整理示例检测图片中的缺陷并将缺陷框选出来
原图 代码如下
import cv2 as cvsrc cv.imread(que01.jpg)
cv.namedWindow(input, cv.WINDOW_AUTOSIZE)
cv.imshow(input, src)# 图像二值化
gray cv.cvtColor(src, cv.COLOR_BGR2GRAY)
ret, binary cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
# 形态学开运算去除噪声和平滑图像
se cv.getStructuringElement(cv.MORPH_RECT, (3, 3), (-1, -1))
binary cv.morphologyEx(binary, cv.MORPH_OPEN, se)
cv.imshow(binary, binary)# 提取图像中的轮廓
contours, hierarchy cv.findContours(binary, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)height, width src.shape[:2]
for c in range(len(contours)):x, y, w, h cv.boundingRect(contours[c])area cv.contourArea(contours[c])# 根据条件过滤不符合要求的轮廓if h (height//2):continueif area 150:continuecv.rectangle(src, (x, y), (xw, yh), (0, 0, 255), 1, 8, 0)cv.drawContours(src, contours, c, (0, 255, 0), 2, 8)cv.imshow(result, src)
cv.imwrite(binary2.png, src)cv.waitKey(0)
cv.destroyAllWindows()运行结果如下 示例2 原图 修改上面的图片路径地址运行看效果 对于明显的缺陷检测还是可以的但是实际生产的缺陷肯定不是这么明显的如下图 后续讲解这类的缺陷该如何检测敬请期待