OpenCV 机器视觉入门实验:零件瑕疵检测 (含代码)
实验目的:
学习如何使用 OpenCV 进行图像处理和分析,实现零件瑕疵检测。
实验原理:
在工业生产中,零件的瑕疵检测是非常重要的一项工作。传统的零件瑕疵检测方法通常需要大量的人工参与,效率较低。而基于机器视觉技术的零件瑕疵检测方法可以自动化地完成这项工作,提高检测效率和准确率。
本实验将使用 OpenCV 进行图像处理和分析,通过对图像进行滤波、二值化等处理,实现对零件瑕疵的检测。
实验步骤:
- 导入所需的库和模块
import cv2
import numpy as np
- 读取图像
img = cv2.imread('part_defect.jpg')
- 图像预处理
对图像进行一些预处理操作,如滤波、二值化等。
# 高斯滤波
img_blur = cv2.GaussianBlur(img, (7, 7), 0)
# 灰度化
img_gray = cv2.cvtColor(img_blur, cv2.COLOR_BGR2GRAY)
# 二值化
ret, img_thresh = cv2.threshold(img_gray, 50, 255, cv2.THRESH_BINARY)
- 寻找轮廓
使用 cv2.findContours() 函数寻找图像中的轮廓。
contours, hierarchy = cv2.findContours(img_thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
- 绘制轮廓
使用 cv2.drawContours() 函数绘制轮廓。
cv2.drawContours(img, contours, -1, (0, 255, 0), 2)
- 显示结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
完整代码:
import cv2
import numpy as np
# 读取图像
img = cv2.imread('part_defect.jpg')
# 高斯滤波
img_blur = cv2.GaussianBlur(img, (7, 7), 0)
# 灰度化
img_gray = cv2.cvtColor(img_blur, cv2.COLOR_BGR2GRAY)
# 二值化
ret, img_thresh = cv2.threshold(img_gray, 50, 255, cv2.THRESH_BINARY)
# 寻找轮廓
contours, hierarchy = cv2.findContours(img_thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(img, contours, -1, (0, 255, 0), 2)
# 显示结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
实验结果:
运行代码后,将会显示出图像,并在图像中标注出所有的轮廓。

结论:
本实验使用 OpenCV 实现了对零件瑕疵的检测。通过对图像进行滤波、二值化等预处理,可以提高零件瑕疵的检测准确率。对于不同的零件瑕疵检测任务,需要根据实际情况进行参数调整和算法优化。
原文地址: https://www.cveoy.top/t/topic/nYZU 著作权归作者所有。请勿转载和采集!