基于OpenCVSharp的工业零件涂胶缺陷检测方案
创作时间:
作者:
@小白创作中心
基于OpenCVSharp的工业零件涂胶缺陷检测方案
引用
CSDN
1.
https://blog.csdn.net/qq_37835727/article/details/125789686
本文将介绍如何使用OpenCVSharp库进行工业零件涂胶缺陷检测。通过图像预处理、二值化、轮廓提取等步骤,实现对涂胶是否断开的自动检测。
1. 需求背景
某工厂自动化流水线上需要检测零件涂胶工艺是否正常。具体需求是对零件上的白色涂胶部分进行检测,判断涂胶是否有断开现象。如果涂胶断开,则判定为不合格(NG)。
2. 原始图像
3. 检测目标
需要检测图中白色涂胶部分,判断是否有断开现象。如下图箭头指示部分即是涂胶区域:
4. 处理流程
处理过程中涉及几个关键步骤的中间图像:
- 模糊处理-降噪
- 图像二值化
- 轮廓提取
从处理结果可以看出,涂胶没有断开,为合格件。
5. 代码实现
下面是完整的图像处理代码:
public bool ImgProcess(Mat src)
{
bool result = false;
// 图像灰度转换
Mat matGray = new Mat();
Cv2.CvtColor(src, matGray, ColorConversionCodes.BGR2GRAY);
Cv2.ImShow("matGray", matGray);
Mat BlurMat = new Mat();
Cv2.MedianBlur(matGray, BlurMat, 5);
Mat bilateralFilter = new Mat();
Cv2.BilateralFilter(BlurMat, bilateralFilter, 9, 25, 25);
Mat BlurMat1 = new Mat();
Cv2.FastNlMeansDenoising(bilateralFilter, BlurMat1, 9);
Cv2.ImShow("BlurMat1", BlurMat1);
// 二值化处理
Mat binaryImg = new Mat();
Cv2.Threshold(BlurMat1, binaryImg, 210, 255, ThresholdTypes.Binary);
Cv2.ImShow("binary", binaryImg);
Mat morhpImage = new Mat();
Mat kernel = Cv2.GetStructuringElement(MorphShapes.Ellipse, new Size(3,3), new Point(-1, -1));
Cv2.MorphologyEx(binaryImg, morhpImage, MorphTypes.Erode, kernel, new Point(-1, -1),1);
Cv2.ImShow("Open", morhpImage);
Mat laplanceMat = new Mat();
Cv2.Laplacian(morhpImage, laplanceMat, MatType.CV_8UC1, 3, 3, 5);
Cv2.ImShow("Laplacian", laplanceMat);
// 连通区域计算
Point[][] contours;
HierarchyIndex[] hierarchies;
Cv2.FindContours(laplanceMat, out contours, out hierarchies, RetrievalModes.Tree, ContourApproximationModes.ApproxSimple);
// 绘制结果图像
Mat markRet = Mat.Zeros(src.Size(), MatType.CV_8UC3);
RNG rng = new RNG(12345);
double maxArea = 0;
int index = -1;
for (int i = 0; i < contours.Length; i++)
{
double area = Cv2.ContourArea(contours[i]);
double length = Cv2.ArcLength(contours[i], false);
if (area > maxArea)
{
maxArea = area;
index = i;
}
if (length > 500 && length < 1000)
{
Cv2.DrawContours(markRet, contours, i, new Scalar(rng.Uniform(0, 255), rng.Uniform(0, 255), rng.Uniform(0, 255)), 6, LineTypes.Link4);
}
}
Cv2.ImShow("dist-Binary", markRet);
return result;
}
6. 总结
以上是对该图像处理方法的完整介绍。如果对其中某些算法的具体原理不熟悉,可以通过关键字搜索进一步了解。此外,通过适当调节参数,可以扩大该方法的通用性,欢迎各位技术伙伴补充交流。
热门推荐
DHCP原理最全详解
梦见打自己的小孩:解析与心理解读
掌握这5个烹饪技巧,让你厨艺大增,下厨做菜不用求人,太实用了
三大人民币汇率指数均下跌,CFETS指数按周跌0.24
碘伏可以治脚气吗?正确治疗和预防脚气的方法
碘伏消毒液介绍
如何在电脑上隐藏任务栏以获得更大屏幕空间
水墨屏的护眼效果是否显著(探索水墨屏在保护眼睛方面的意义和局限性)
顺宝安教育优质均衡之势 创湾区一流公办教育集团
人格分裂的意思是什么
眩晕症的表现症状及治疗方法
源氏与平氏:日本历史中的交织命运
源平合战:日本历史上的重大转折
房屋出租给个人:税率、所需材料及电器损坏赔偿指南
电机防水等级怎么区分,了解电机防水等级的划分方法
游戏主播培训指南:从入门到职业发展
多所高校降低转专业门槛,如何实施?有何影响?
小儿双黄连口服液的作用与使用注意事项
灿烂的广府
集中供热系统与分户供热分析
中央空调分户计费系统:公平分摊能耗费用的解决方案
心梗发作时最佳的急救方法是什么
如何正确安装排气风扇?排气风扇安装有哪些注意事项?
劳务合同工资标准及相关法律问题详解
被乱投喂的网红动物们现状:可可西里肥狼多了还挑食,趵突泉鲤鱼已禁喂
《少年游》柳永晚年所作,堪称其备库一生的高度概括
如何分析和优化户型图设计?这些设计如何影响居住体验?
吃了甜食心慌气短是什么原因
自驾游好还是坐飞机好一点?细致分析两者的优缺点
广州番禺区:捧银过大年 传统民俗玩出新花样