【OpenCV学习记录】4.图像基本操作——轮廓查找

本文介绍了OpenCV中的轮廓查找技术,对比了它与边缘检测的区别,并通过代码展示了如何实现轮廓查找与绘制。同时,针对阈值调节可能导致的stack overflow问题提出了解决方案,建议增大VS的堆栈保留大小。此外,提到了自适应阈值函数在处理照片中明暗差异引起的轮廓提取问题时的作用。
摘要由CSDN通过智能技术生成

不同于边缘检测,轮廓查找将梯度突变的连续点集作为一个整体进行存储,这也是轮廓与边缘的区别:边缘为离散点,轮廓为多个点集。
下面的代码实现了轮廓查找与绘制,结合滚动条功能方便阈值调节。
由于阈值调节过程中会不断调用回调函数,因此可能出现stack overflow的错误,建议将vs中“堆栈保留大小”调大:
在这里插入图片描述
代码:

// 轮廓查找

#include "pch.h"
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include "opencv2/highgui/highgui.hpp"
#include <iostream>

using namespace std;
using namespace cv;
//宏定义
#define IMAGE_NAME "image2.jpg"//输入图片名
#define WINDOW_NAME "轮廓查找"//创建的窗口名
#define BAR_NAME "阈值"//滚动条名称
//全局变量
const int BAR_MAX = 50;//滚动条上限
int Bar_Value = 33;//滚动条变量
Mat image;//原图
Mat tmp_image;//临时图,阈值化后的二值图
Mat output_image;//输出图
RNG g_rng(time(0));//随机数
/*回调函数会重复调用,因此将变量在外部申明可以节省内存*/
//定义轮廓与层次结构
vector<vector<Point>> contours;
ve
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值