#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
【opencv】示例-detect_mser.cpp 使用 MSER 算法来检测图像中的极值区域
最新推荐文章于 2024-10-17 07:26:56 发布