opencv学习(8):opencv距离转换函数cv::distanceTransform()
对应头文件:
#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()相关推荐
- OpenCV边缘之间的距离转换功能的实例(附完整代码)
OpenCV边缘之间的距离转换功能的实例 OpenCV边缘之间的距离转换功能的实例 OpenCV边缘之间的距离转换功能的实例 #include <opencv2/core/utility.hpp ...
- OpenCV学习-P34-P38 Opencv边缘检测
OpenCV学习-P34-P37 Opencv边缘检测 Sobel检测算子 Laplacian检测算子 Canny边缘检测算法 边缘检测总结 边缘检测分为两类:基于搜索和基于零穿越 基于搜索:寻找图像 ...
- OpenCV学习-P29-P32 Opencv直方图均衡化、掩膜
OpenCV学习-P29-P32 Opencv直方图均衡化及掩膜 1 直方图 2 直方图均衡化 3 直方图自适应均衡化 1 直方图 直方图原理:统计图像各个灰度区间的像素数 cv2.calcHist( ...
- opencv——PNG格式图像读取转换函数
暑假培训学习了opencv,放图像时,PNG格式的Alpha通道没用啊图都自己去p颜色,用来加载时变颜色 工作量太大了,,于是花了一下午弄了个简易功能的PNG格式文件读取转化加载函数. 注:这里主要是 ...
- opencv学习四:色彩空间转换
一.常见的色彩空间 RGB颜色空间 RGB(red,green,blue)颜色空间最常用的用途就是显示器系统,彩色阴极射线管,彩色光栅图形的显示器 都使用R.G.B数值来驱动R.G.B 电子枪发射电子 ...
- Opencv学习笔记 - OpenCV 4机器学习算法简介
在机器学习中,一些比较流行方法的包括:支持向量机(SVM).人工神经网络(ANN).聚类.k-最近邻.决策树和深度学习.OpenCV支持并实现几乎所有这些方法,并有详细的文档说明(包含在Main mo ...
- OpenCV学习——绘制OpenCV徽标
今天看到一个关于OpenCV的练习题,用绘图功能创建OpenCV的徽标. 关于OpenCV的绘图功能,在下面这篇笔记里写过了,这里不再多写,直接上代码!OpenCV学习--绘图功能_笨小古的博客-CS ...
- Opencv学习_3 (Opencv读取视频 视频进度控制 写视频)
opencv读取视频: 使用opencv读取视频主要用到这几个函数:cvCreateFileCapture cvQueryFrame (或cvGrabFrame cvRetrieveFrame) ...
- OpenCV学习(22) opencv中使用kmeans算法
kmeans算法的原理参考:http://www.cnblogs.com/mikewolf2002/p/3368118.html 下面学习一下opencv中kmeans函数的使用. 首先我们通过Ope ...
最新文章
- 关于学习Python的一点学习总结(27->关键字参数和默认值)
- SAP PM (工厂维护)模块介绍 - SAP入门必看
- 学习旧岛小程序 (5) 自定义组件的自定义事件
- Cortex-M3-栏目-文章来源
- 编写干净的测试-被认为有害的新内容
- mysql 更新日的数据类型_[每日更新-MySQL基础]5.常用的数据类型-整数和字符串
- IDEA社区版找不到tomcat
- IO多路复用中select、poll、epoll之间的区别
- 改变你一生命运的话语 不得不信
- WPF自定义控件 —— 布局
- Android近场通信---NFC基础(一)
- CSS_照片墙例子 相对定位
- 【黑马程序员】————预处理指令2-文件编译
- JS日期比较 2013-01-31大于2013-02-01
- C++之string的底层真的是用char数组来实现的么?
- Flume系列一之架构介绍和安装
- jq和js的关系_jquery与js的区别是什么?js与jquery的用法区别介绍
- element ui的table组件在鼠标滑动时边框线消失的解决
- SHT20温湿度传感器工作原理
- 皮江法 - 中国迷你直发 - 头发卷发器制造商
热门文章
- PHPExcel 导出excel(xls)
- 三S9超越iPhoneX成为4月销量王,原因竟是苹果一手造成的
- ConnectionResetError: [Errno 104] Connection reset by peer
- impress.js 源码分析
- 光流正负值的含义以及如何利用光流进行warping
- 爬虫代理服务器的使用,利用代理服务器爬取百度
- pdf大小怎么压缩?pdf文件如何压缩变小?
- 三项技术可以让自动驾驶更安全
- [Android] ListView中getView的原理+如何在ListView中放置多个item
- PigYear病毒 代码 研究