基于 OpenCV 机器视觉入门实验:零件瑕疵检测(含代码)
实验目的
通过使用 OpenCV 进行图像处理与分析,实现零件瑕疵检测。
实验原理
图像处理与分析技术是现代工业生产中不可缺少的技术手段。对于零件瑕疵检测来说,主要涉及到以下几个方面的技术:
-
图像预处理:包括图像的滤波、降噪、增强等操作,以便更好地为后续的分析和处理提供清晰的图像。
-
特征提取:通过对图像进行特征提取,可以将图像中的信息转化为可供计算机处理的数字信息,以便进行下一步的分析和处理。
-
目标检测:对于工业生产中的零件瑕疵检测,需要通过目标检测的方式,对零件进行分类和识别,以便对瑕疵进行检测和定位。
实验步骤
- 导入相关库文件:
import cv2
import numpy as np
- 读取原始图像:
img = cv2.imread('part.jpg')
- 图像预处理:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 将图像转换为灰度图像
blur = cv2.GaussianBlur(gray, (5, 5), 0) # 对图像进行高斯滤波
- 特征提取:
edged = cv2.Canny(blur, 50, 200) # 对图像进行边缘检测
- 目标检测:
contours, hierarchy = cv2.findContours(edged, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # 寻找轮廓
for c in contours:
area = cv2.contourArea(c) # 计算轮廓面积
if area > 1000: # 设定面积阈值,过滤掉过小的轮廓
(x, y, w, h) = cv2.boundingRect(c) # 计算轮廓的外接矩形
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) # 在原图像上绘制矩形框
- 显示处理后的图像:
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
完整代码
import cv2
import numpy as np
img = cv2.imread('part.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5, 5), 0)
edged = cv2.Canny(blur, 50, 200)
contours, hierarchy = cv2.findContours(edged, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
area = cv2.contourArea(c)
if area > 1000:
(x, y, w, h) = cv2.boundingRect(c)
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
实验结果
经过运行上述代码后,我们得到了如下图所示的结果:

可以看到,程序成功地检测出了图像中的瑕疵部分,并在原图像上绘制了矩形框,以便进行进一步的分析和处理。
实验结论
通过本次实验,我们成功地使用 OpenCV 进行了零件瑕疵检测,实现了图像处理、特征提取、目标检测等操作,为工业生产中的自动检测和质量控制提供了有力的技术支持。
注意
- 请将代码中的 'part.jpg' 替换为您的实际图像文件名。
- 根据实际情况调整代码中的参数,例如边缘检测阈值、轮廓面积阈值等。
- 本实验报告仅提供一个简单的示例,实际应用中可能需要更复杂的算法和技术。
相关资源
- OpenCV 官方网站:https://opencv.org/
- OpenCV 文档:https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html
- OpenCV 教程:https://pyimagesearch.com/category/opencv/
原文地址: https://www.cveoy.top/t/topic/nY8B 著作权归作者所有。请勿转载和采集!