【opencv】示例-detect_mser.cpp 使用 MSER 算法来检测图像中的极值区域

本文介绍了如何使用OpenCV的MSER算法检测图像中的稳定极值区域,并展示了如何配合OpenGL实现参数调整和实时视图改变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7cae2c56dcfebfb0311809f4df040d7a.png

f6e56d9a7ed4a0c755bd860fed3011e5.png

180e4add7fc8fe1a796ff866c58315c0.png

4b506fa8be086aa76831f0ab1373fa7c.png

0cf9ec361c492ae8fa305057a633811b.png

#include <opencv2/core.hpp> // 包含OpenCV核心操作的头文件
#include <opencv2/imgproc.hpp> // 包含图像处理功能的头文件
#include <opencv2/highgui.hpp> // 包含图形用户界面的头文件
#include <opencv2/features2d.hpp> // 包含特征检测相关功能的头文件
#include "opencv2/core/opengl.hpp" // 包含OpenCV的OpenGL支持的头文件


#include <vector> // 包含标准模板库的vector(向量)容器类的头文件
#include <map> // 包含标准模板库的map(映射)容器类的头文件
#include <iostream> // 包含标准输入输出流的头文件
#include <iomanip> // 包含输入输出流的格式化操作的头文件
#include <limits> // 包含标准限制值的头文件
#include <stdint.h> // 包含标准整型定义的头文件
// 判断是否有OpenGL的支持
#ifdef HAVE_OPENGL
#ifdef _WIN32 // 如果是Windows 32位操作系统
#define WIN32_LEAN_AND_MEAN 1
#define NOMINMAX 1
#include <windows.h> // 包含Windows API的头文件
#endif
#if defined(_WIN64) // 如果是Windows 64位操作系统
#include <windows.h> // 包含Windows API的头文件
#endif


#if defined(__APPLE__) // 如果是苹果系统(MacOS)
#include <OpenGL/gl.h> // 包含OpenGL库的头文件
#include <OpenGL/glu.h> // 包含OpenGL工具库的头文件
#else // 其他操作系统
#include <GL/gl.h> // 包含OpenGL库的头文件
#include <GL/glu.h> // 包含OpenGL工具库的头文件
#endif
#endif


using namespace std; // 指定使用标准命名空间
using namespace cv; // 指定使用OpenCV命名空间


// 帮助信息函数,打印程序如何使用的说明
static void help(char** argv)
{
    cout << "\nThis program demonstrates how to use MSER to detect extremal regions\n"
            "Usage:\n"
         << argv[0] << " <image1(without parameter a synthetic image is used as default)>\n"
            "Press esc key when image window is active to change descriptor parameter\n"
            "Press 2, 8, 4, 6, +, -, or 5 keys in openGL windows to change view or use mouse\n";
}


// MSER算法参数结构体定义
struct MSERParams
{
    // MSERParams构造函数,带有默认参数
    MSERParams(int _delta = 5, int _min_area = 60, int _max_area = 14400,
               double _max_variation = 0.25, double _min_diversity = .2,
               int _max_evolution = 200, double _area_threshold = 1.01,
               double _min_margin = 0.003, int _edge_blur_size = 5)
    {
        // 初始化成员变量
        delta = _delta;
        minArea = _min_area;
        maxArea = _max_area;
        maxVariation
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值