OpenCV应用实例:标出低对比度图像中的圆


前言

今天看了篇微信公众号,是使用python opencv 检测出低对比度图像中所有的圆,感觉挺有意思的,这里用C++实现出来,对原始的参数做了改动(发现原始参数检测出的圆有漏检的情况,主要是由于形态学开闭操作结果和预期结果不一致导致的)。


1. 低对比度图像中圆的检测步骤

  1. 读取彩色图像;
  2. 转换灰度图像;
  3. 模糊图像(ksize=50);
  4. 计算灰度图像与模糊图像的差值图像;
  5. 对差值图像进行二值化操作(阈值为15);
  6. 对二值化图像进行闭操作,连接不连续区域;(核大小为11x11)
  7. 对闭操作后的图像进行形态学开运算,分割出不同圆;(核大小为9x9)
  8. 查找轮廓;
  9. 过滤轮廓并绘制圆,主要针对图像上的水印;

2. C++ OpenCV实现

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

int main()
{
   
	using namespace std;
	using namespace cv;

	string strImgFile = "C:\\Temp\\common\\Workspace\\Opencv\\images\\low_contrast_circle.jpg";
	Mat src = imread(strImgFile);
	CV_Assert(src.empty() == false);
	imshow(&
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值