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


前言

最近在51Halcon中看到一条有意思的求助帖子,有热心朋友给出了Halcon的解决方法,这里给出C++ OpenCV的解决方法。


1. 检测步骤

Halcon实现(引用https://www.51halcon.com/thread-1173-1-2.html):
请添加图片描述
看到检测图像以及想要检测的目标(绿色实线闭合区域),我们知道,要检测的区域的区分度不高,这里给出个人实现思路:检测区域位于圆形的中心,而圆形中心区域亮度比周边要高,我们可以先分割出中心亮度高的区域,然后在这一分割出的区域进行检测目标,提取出目标轮廓。

2. C++ OpenCV实现

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

using namespace cv;

int main()
{
   
	std::string strImgFile = "C:\\Temp\\common\\Workspace\\Opencv\\images\\detect_defect_with_complex_background.bmp";
	Mat mSrc = imread(strImgFile);
	CV_Assert(!mSrc.empty());

	Mat mGray;
	cvtColor(mSrc, mGray, COLOR_BGR2GRAY);
	CV_Assert(!mGray.empty());

	Mat mThresh;
	threshold(mGray, mThresh, 0, 255, THRESH_BINARY | THRESH_OTSU)<
  • 4
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值