OpenCV(二十七):图像距离变换

1.像素间距离

2.距离变换函数distanceTransform()

void cv::distanceTransform ( InputArray src,

OutputArray dst,

int distanceType,

int maskSize,

int dstType = CV_32F

)

  • src:输入图像,数据类型为CV8U的单通道图像
  • dst:输出图像,与输入图像具有相同的尺寸,数据类型为CV_8U或者CV_32F的单通道图像distanceType:选择计算两个像素之间距离方法的标志, 常用的有DIST_L1、DIST_L2和DIST_C,分别表示街区距离、欧式距离和棋盘距离
  • maskSize: 距离变换掩码矩阵大小,可以选择尺寸为DIST_MASK_3(3×3)、DIST_MASK_ 5(5X5)
  • dstType:输出图像的数据类型,可以是CV_8U或者CV_32F

示例代码:

复制代码
//图像距离的变换
void Image_range_transformation(Mat image){
    Mat rice;
    cvtColor(image,rice,COLOR_BGR2GRAY);
    Mat riceBW,riceBW_INV;
    //将图像转成二值图像,同时把黑白区域图像互换
    threshold(rice,riceBW,50,255,THRESH_BINARY);
    threshold(rice,riceBW_INV,50,255,THRESH_BINARY_INV);
    //距离变换
    Mat dist,dist_INV;
    distanceTransform(riceBW,dist,1,3,CV_32F);//为了显示清晰,将数据类型变成CV_32F
    distanceTransform(riceBW_INV,dist_INV,1,3,CV_8U);
    //显示变换结果
    imwrite("/sdcard/DCIM/dist1.png",dist);
    imwrite("/sdcard/DCIM/dist_INV1.png",dist_INV);
}

图像黑白区域互换后进行距离变换的结果:

相关推荐
REDcker1 分钟前
libevent、libev 与 libuv:对比、演进与实现原理
linux·c++·后端·编程·c·高并发·服务端
八月瓜科技2 分钟前
擎策·知海全球专利数据库 专业专利检索赋能 规避无效研发提效创新
大数据·数据库·人工智能·科技·aigc
奇树谦4 分钟前
3-5年工控上位机(C++/Qt)面试题|聚焦实战,直击核心模块
c++·qt
2301_793804697 分钟前
C++中的访问者模式变体
开发语言·c++·算法
百胜软件@百胜软件7 分钟前
社区生鲜零售革命:8万亿赛道的效率突围与生态重构
人工智能·重构·零售
2501_9454248011 分钟前
模板代码版本兼容
开发语言·c++·算法
jinanwuhuaguo12 分钟前
OpenClaw v2026.3.22-beta.1 深度技术分析报告:从单智能体操作系统到多智能体协作平台的范式跃迁
运维·人工智能·语言模型·自然语言处理·visual studio code·openclaw
天辛大师13 分钟前
天辛大师也谈大模型GEO技术,虚构与误导的重读
大数据·人工智能·决策树·随机森林·启发式算法
m0_5180194814 分钟前
C++中的委托构造函数
开发语言·c++·算法
金融小师妹16 分钟前
基于多因子流动性模型的“黄金闪崩”解析:利率预期强化与资金再平衡驱动的金价8%下跌机制
大数据·人工智能·svn·能源