前言
最近在51Halcon答疑区有找到一个检测实例:在低对比度图像中检测圆形轮廓,这里分享给大家。
问题链接:
https://www.51halcon.com/thread-4876-1-1.html
1. 问题描述
问题提出者想要在如下图片中找到圆形轮廓:
2. OpenCV 实现步骤
主要步骤如下:
- 读取原图并转换为灰度图;
- 提取ROI区域;
- 阈值分割
- 查找轮廓并根据圆形轮廓特征(半径大小,外界矩形长宽比)过滤轮廓
- 绘制圆形轮廓;
3. 源码实现
#include <iostream>
#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\\BlueROI.jpg";
Mat mSrc = imread(strImgFile);
CV_Assert(