C++ OpenCV实践:复杂背景下划痕检测

本文介绍了使用C++和OpenCV在复杂背景下进行划痕检测的步骤,包括图片缩放、灰度化、高斯模糊、均值化处理、差值处理、二值化和轮廓提取等技术,最终展示了检测结果。作者提醒,针对不同大小的图像可能需要调整筛选规则,并建议使用Mask图像来提高检测的通用性和效率。
摘要由CSDN通过智能技术生成


前言

今天在51Halcon网站答疑区看到划痕检测的求助,觉得挺有意思,就用OpenCV实现了下,这里分享给大家。

问题链接:https://www.51halcon.com/thread-941-1-1.html


1. 检测步骤

先上原图:
请添加图片描述
这个问题就是检测上图环上右上角大约45度的一个划痕或者缝隙。

本人实现检测主要步骤:

  1. 图片缩小1倍(图片太大了,OpenCV显示窗口显示不全)
  2. 图像灰度化;
  3. 高斯模糊去除噪声影响;
  4. 对图像做均值化处理,将划痕覆盖;
  5. 均值前后图像差值处理,得到包含划痕的灰度图;
  6. 二值化处理
  7. 提取前景轮廓,分析划痕几何特性,筛选划痕轮廓;
  8. 绘制满足条件的划痕轮廓。

2. C++ OpenCV实现

#include <iostream>
#include <opencv2\imgcodecs.hpp>
#include <opencv2\core.hpp>
#include <opencv2\imgproc.hpp>
#include <opencv2\highgui.hpp>

using namespace cv;

int main()
{
   
	std::string strImgFile = "C:\\Temp\\common\\Workspace\\Opencv\\images\\crack_with_complex_bg.bmp";
	Mat mSrc = imread(strImgFile);
	CV_Assert
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值