对应头文件:

#include <opencv2/imgproc.hpp>

函数功能:

计算源图像的每个像素到最近的零像素的距离。函数 cv::distanceTransform 计算从每个二进制图像像素到最近的零像素的近似或精确距离。 对于零图像像素,距离显然为零。

distanceTransform() [1/2]

c++格式

void cv::distanceTransform   (   InputArray      src,OutputArray     dst,OutputArray     labels,int      distanceType,int    maskSize,int    labelType = DIST_LABEL_CCOMP )         

python格式:

cv.distanceTransform(    src, distanceType, maskSize[, dst[, dstType]]   ) ->     dst
cv.distanceTransformWithLabels( src, distanceType, maskSize[, dst[, labels[, labelType]]]   ) ->     dst, labels

参数定义:

    src  8-bit, single-channel (binary) source image.----8位单通道二值图像(0-255)dst   Output image with calculated distances. It is a 8-bit or 32-bit floating-point, single-channel image of the same size as src.----计算距离后的输出图像,8位或32位浮点型的单通道图像labels    Output 2D array of labels (the discrete Voronoi diagram). It has the type CV_32SC1 and the same size as src.----标签的二维输出数组distanceType   Type of distance, see DistanceTypesmaskSize Size of the distance transform mask, see DistanceTransformMasks. DIST_MASK_PRECISE is not supported by this variant. In case of the DIST_L1 or DIST_C distance type, the parameter is forced to 3 because a 3×3 mask gives the same result as 5×5 or any larger aperture.----距离变换蒙版的大小,请参阅 DistanceTransformMasks。 此变体不支持 DIST_MASK_PRECISE。 在 DIST_L1 或 DIST_C 距离类型的情况下,该参数被强制为 3,因为 3×3 掩膜给出与 5×5 或任何更大孔径相同的结果。labelType Type of the label array to build, see DistanceTransformLabelTypes. --标签数组的类型

distanceTransform() [2/2]

这是一个重载的成员函数,是为了方便而提供的。 它与上述函数的不同之处仅在于它接受的参数。

c++格式:

void cv::distanceTransform   (   InputArray      src,OutputArray     dst,int     distanceType,int    maskSize,int    dstType = CV_32F )     

python格式:

cv.distanceTransform(    src, distanceType, maskSize[, dst[, dstType]]   ) ->     dst
cv.distanceTransformWithLabels( src, distanceType, maskSize[, dst[, labels[, labelType]]]   ) ->     dst, labels

参数:

src  8-bit, single-channel (binary) source image.
dst Output image with calculated distances. It is a 8-bit or 32-bit floating-point, single-channel image of the same size as src .
distanceType    Type of distance, see DistanceTypes
maskSize    Size of the distance transform mask, see DistanceTransformMasks. In case of the DIST_L1 or DIST_C distance type, the parameter is forced to 3 because a 3×3 mask gives the same result as 5×5 or any larger aperture.----距离变换蒙版的大小,请参阅 DistanceTransformMasks。 在 DIST_L1 或 DIST_C 距离类型的情况下,该参数被强制为 3,因为 3×3 掩膜给出与 5×5 或任何更大孔径相同的结果。
dstType Type of output image. It can be CV_8U or CV_32F. Type CV_8U can be used only for the first variant of the function and distanceType == DIST_L1. ----输出图像的类型。 它可以是 CV_8U 或 CV_32F。 类型 CV_8U 只能用于函数的第一个变体和 distanceType == DIST_L1。

DistanceTypes

距离变换和 M 估计器的距离类型

DIST_USER

Python: cv.DIST_USER

User defined distance.

自定义类型

DIST_L1

Python: cv.DIST_L1

distance = |x1-x2| + |y1-y2|

坐标绝对值

DIST_L2

Python: cv.DIST_L2

the simple euclidean distance

简单欧拉距离,应该是坐标差的平方求和再开方

DIST_C

Python: cv.DIST_C

distance = max(|x1-x2|,|y1-y2|)

DIST_L12

Python: cv.DIST_L12

L1-L2 metric: distance = 2(sqrt(1+x*x/2) - 1))

强调x方向距离

DIST_FAIR

Python: cv.DIST_FAIR

distance = c^2(|x|/c-log(1+|x|/c)), c = 1.3998

DIST_WELSCH

Python: cv.DIST_WELSCH

distance = c^2/2(1-exp(-(x/c)^2)), c = 2.9846

DIST_HUBER

Python: cv.DIST_HUBER

distance = |x|<c ? x^2/2 : c(|x|-c/2), c=1.345

DistanceTransformMasks

DIST_MASK_3

Python: cv.DIST_MASK_3

mask=3

3*3掩膜

DIST_MASK_5

Python: cv.DIST_MASK_5

mask=5

5*5掩膜

DIST_MASK_PRECISE

Python: cv.DIST_MASK_PRECISE

@meng

opencv学习(8):opencv距离转换函数cv::distanceTransform()相关推荐

  1. OpenCV边缘之间的距离转换功能的实例(附完整代码)

    OpenCV边缘之间的距离转换功能的实例 OpenCV边缘之间的距离转换功能的实例 OpenCV边缘之间的距离转换功能的实例 #include <opencv2/core/utility.hpp ...

  2. OpenCV学习-P34-P38 Opencv边缘检测

    OpenCV学习-P34-P37 Opencv边缘检测 Sobel检测算子 Laplacian检测算子 Canny边缘检测算法 边缘检测总结 边缘检测分为两类:基于搜索和基于零穿越 基于搜索:寻找图像 ...

  3. OpenCV学习-P29-P32 Opencv直方图均衡化、掩膜

    OpenCV学习-P29-P32 Opencv直方图均衡化及掩膜 1 直方图 2 直方图均衡化 3 直方图自适应均衡化 1 直方图 直方图原理:统计图像各个灰度区间的像素数 cv2.calcHist( ...

  4. opencv——PNG格式图像读取转换函数

    暑假培训学习了opencv,放图像时,PNG格式的Alpha通道没用啊图都自己去p颜色,用来加载时变颜色 工作量太大了,,于是花了一下午弄了个简易功能的PNG格式文件读取转化加载函数. 注:这里主要是 ...

  5. opencv学习四:色彩空间转换

    一.常见的色彩空间 RGB颜色空间 RGB(red,green,blue)颜色空间最常用的用途就是显示器系统,彩色阴极射线管,彩色光栅图形的显示器 都使用R.G.B数值来驱动R.G.B 电子枪发射电子 ...

  6. Opencv学习笔记 - OpenCV 4机器学习算法简介

    在机器学习中,一些比较流行方法的包括:支持向量机(SVM).人工神经网络(ANN).聚类.k-最近邻.决策树和深度学习.OpenCV支持并实现几乎所有这些方法,并有详细的文档说明(包含在Main mo ...

  7. OpenCV学习——绘制OpenCV徽标

    今天看到一个关于OpenCV的练习题,用绘图功能创建OpenCV的徽标. 关于OpenCV的绘图功能,在下面这篇笔记里写过了,这里不再多写,直接上代码!OpenCV学习--绘图功能_笨小古的博客-CS ...

  8. Opencv学习_3 (Opencv读取视频 视频进度控制 写视频)

    opencv读取视频: 使用opencv读取视频主要用到这几个函数:cvCreateFileCapture  cvQueryFrame (或cvGrabFrame cvRetrieveFrame)   ...

  9. OpenCV学习(22) opencv中使用kmeans算法

    kmeans算法的原理参考:http://www.cnblogs.com/mikewolf2002/p/3368118.html 下面学习一下opencv中kmeans函数的使用. 首先我们通过Ope ...

最新文章

  1. 关于学习Python的一点学习总结(27->关键字参数和默认值)
  2. SAP PM (工厂维护)模块介绍 - SAP入门必看
  3. 学习旧岛小程序 (5) 自定义组件的自定义事件
  4. Cortex-M3-栏目-文章来源
  5. 编写干净的测试-被认为有害的新内容
  6. mysql 更新日的数据类型_[每日更新-MySQL基础]5.常用的数据类型-整数和字符串
  7. IDEA社区版找不到tomcat
  8. IO多路复用中select、poll、epoll之间的区别
  9. 改变你一生命运的话语 不得不信
  10. WPF自定义控件 —— 布局
  11. Android近场通信---NFC基础(一)
  12. CSS_照片墙例子 相对定位
  13. 【黑马程序员】————预处理指令2-文件编译
  14. JS日期比较 2013-01-31大于2013-02-01
  15. C++之string的底层真的是用char数组来实现的么?
  16. Flume系列一之架构介绍和安装
  17. jq和js的关系_jquery与js的区别是什么?js与jquery的用法区别介绍
  18. element ui的table组件在鼠标滑动时边框线消失的解决
  19. SHT20温湿度传感器工作原理
  20. 皮江法 - 中国迷你直发 - 头发卷发器制造商

热门文章

  1. PHPExcel 导出excel(xls)
  2. 三S9超越iPhoneX成为4月销量王,原因竟是苹果一手造成的
  3. ConnectionResetError: [Errno 104] Connection reset by peer
  4. impress.js 源码分析
  5. 光流正负值的含义以及如何利用光流进行warping
  6. 爬虫代理服务器的使用,利用代理服务器爬取百度
  7. pdf大小怎么压缩?pdf文件如何压缩变小?
  8. 三项技术可以让自动驾驶更安全
  9. [Android] ListView中getView的原理+如何在ListView中放置多个item
  10. PigYear病毒 代码 研究