stuff.jpg
#include <opencv2/core/utility.hpp> // 包含OpenCV中的核心功能支持库
#include "opencv2/imgproc.hpp" // 包含OpenCV中的图像处理库
#include "opencv2/imgcodecs.hpp" // 包含OpenCV中的图像编解码库
#include "opencv2/highgui.hpp" // 包含OpenCV中的高级用户界面库
#include <stdio.h> // 包含标准输入输出库
using namespace std; // 使用标准命名空间
using namespace cv; // 使用OpenCV命名空间
int maskSize0 = DIST_MASK_5; // 定义默认的掩膜大小为5x5
int voronoiType = -1; // 定义维诺图模式的初始类型,-1表示未激活维诺图模式
int edgeThresh = 100; // 边缘检测的阈值
int distType0 = DIST_L1; // 定义默认的距离变换类型为L1
// 输出图像和临时图像
Mat gray;
// 亮度阈值的回调函数
static void onTrackbar( int, void* )
{
static const Scalar colors[] = // 预定义的颜色数组
{
Scalar(0,0,0),
Scalar(255,0,0),
Scalar(255,128,0),
Scalar(255,255,0),
Scalar(0,255,0),
Scalar(0,128,255),
Scalar(0,255,255),
Scalar(0,0,255),
Scalar(255,0,255)
};
int maskSize = voronoiType >= 0 ? DIST_MASK_5 : maskSize0; // 根据是否启用维诺图模式来选择掩膜大小
int distType = voronoiType >= 0 ? DIST_L2 : distType0; // 根据是否启用维诺图模式来选择距离变换类型
Mat edge = gray >= edgeThresh, dist, labels, dist8u; // 生成边缘图,距离图,标签图和8位显示图
// 执行距离变换计算
if( voronoiType < 0 )
distanceTransform( edge, dist, distType, maskSize ); // 距离变换操作
else
distanceTransform( edge, dist, lab