基于OpenCV的机器视觉入门实验:零件瑕疵检测
一、实验目的:
通过本次实验,学会使用OpenCV进行机器视觉的基础操作,并实现零件瑕疵的检测。
二、实验原理:
本次实验的主要原理是使用OpenCV图像处理库中的图像分割、边缘检测、二值化等基础操作,实现零件瑕疵的检测。具体步骤如下:
1.读入原始图像。
2.进行图像灰度化处理。
3.进行图像平滑处理。
4.进行边缘检测。
5.进行二值化处理。
6.进行形态学操作(腐蚀、膨胀)。
7.检测零件瑕疵。
三、实验步骤:
1.读入原始图像:
使用OpenCV的imread函数读取原始图像,代码如下:
import cv2
img = cv2.imread('part.jpg')
2.进行图像灰度化处理:
使用OpenCV的cvtColor函数将图像转为灰度图像,代码如下:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
3.进行图像平滑处理:
使用OpenCV的GaussianBlur函数对图像进行平滑处理,代码如下:
blur = cv2.GaussianBlur(gray, (5, 5), 0)
4.进行边缘检测:
使用OpenCV的Canny函数进行边缘检测,代码如下:
edges = cv2.Canny(blur, 50, 150)
5.进行二值化处理:
使用OpenCV的threshold函数进行二值化处理,代码如下:
ret, thresh = cv2.threshold(edges, 127, 255, cv2.THRESH_BINARY)
6.进行形态学操作(腐蚀、膨胀):
使用OpenCV的morphologyEx函数进行形态学操作,代码如下:
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
closed = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
7.检测零件瑕疵:
使用OpenCV的findContours函数和drawContours函数对图像进行轮廓检测和绘制,代码如下:
contours, hierarchy = cv2.findContours(closed, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0, 0, 255), 2)
四、实验结果:
经过以上步骤的处理,得到的结果如下图所示:

从图中可以看出,检测出了零件上的瑕疵,并用红色的线框出了瑕疵的轮廓。
五、实验总结:
通过本次实验,我学会了使用OpenCV进行机器视觉的基础操作,并实现了零件瑕疵的检测。这些基础操作在实际应用中非常重要,是进行图像处理和计算机视觉研究的基础。在今后的学习和实践中,我将继续深入学习OpenCV的高级应用和算法,不断提高自己的技能水平。
原文地址: http://www.cveoy.top/t/topic/nZvA 著作权归作者所有。请勿转载和采集!