【opencv】示例-distrans.cpp 距离变换

f02abca910ffc3f94b0faa6a95826163.jpeg

stuff.jpg

006de25e1ba1b3b6f6ca809008149052.png

6513471157952e94cd5538403c8b60b8.gif

69547acc388be9200f8c0300ad6c81b5.png

#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值