阅读对象:对概率论中的期望有一点了解。

1.图像几何矩

1.1简述

图像的几何矩包括空间矩、中心矩和中心归一化矩。几何矩具有平移、旋转和尺度不变性,一般是用来做大粒度的区分,用来过滤显然不相关的图像。

1.2用数学语言阐述图像的几何矩

针对于一幅图像,我们把像素的坐标看成是一个二维随机变量(X,Y),那么一幅灰度图像可以用二维灰度密度函数来表示,每个像素点的值可以看成是该处的密度,对某点求期望就是该图像在该点处的矩(原点矩),一阶矩和零阶矩可以计算某个形状的重心,二阶矩可以计算形状的方向,因此可以用矩来描述灰度图像的特征。3中矩的计算结果见图2。

图1 数学表示

1.3opencv中求矩的函数

class Moments { public: ......
// 空间矩
double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03;
// 中心矩
double mu20, mu11, mu02, mu30, mu21, mu12, mu03;
// 中心归一化矩 double nu20, nu11, nu02, nu30, nu21, nu12, nu03;
}

2.图像轮廓特征和几何矩案例

'''
轮廓特征
• 查找轮廓的不同特征,例如面积,周长,重心,边界框等。
'''
import cv2
dir='C:/Users/Thinkpad/Desktop/picture/'
img = cv2.imread(dir + 'q.jpg',0)
ret,thresh = cv2.threshold(img,127,255,0)
contours,hierarchy = cv2.findContours(thresh, 1, 2)
cnt = contours[0]#取第一个轮廓
M = cv2.moments(cnt)#计算矩
cx = int(M['m10']/M['m00'])#计算重心
cy = int(M['m01']/M['m00'])#计算重心
#轮廓的面积可以使用函数 cv2.contourArea() 计算得到,也可以使用矩(0 阶矩) ,M['m00']
area = cv2.contourArea(cnt)
#轮廓周长也被称为弧长。可以使用函数 cv2.arcLength() 计算得到。这个函数的第二参数可以用来指定对象的形状是闭合的(True) ,还是打开的(一条曲线)
perimeter = cv2.arcLength(cnt,True)

图2 Opencv+python中矩计算结果的展现形式

参考资料:

http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_contours/py_contours_begin/py_contours_begin.html#contours-getting-started

http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_contours/py_contour_features/py_contour_features.html

http://www.cnblogs.com/skyseraph/archive/2011/07/19/2110183.html

http://blog.csdn.net/gdfsg/article/details/51015066

end!!

opencv2.4.13+python2.7学习笔记--OpenCV中的图像处理--图像轮廓特征和几何矩的更多相关文章

  1. opencv2.4.13+python2.7学习笔记--OpenCV中的图像处理--图像轮廓

    阅读对象:无要求. 1.代码 ''' OpenCV中的轮廓 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度.为了更加准确,要使用二值化图像.在寻找轮廓之前,要进行阈值化 ...

  2. opencv2.4.13+python2.7学习笔记--opencv中的Gui特性--图片:读图像,显示图像,保存图像

    阅读对象:可以配置opencv+Python环境的任何人,毕竟写这篇文章的人就是小白. 1.环境说明 1.1opencv版本: 1.2Python版本: 1.3系统:win7 注: (1)opencv ...

  3. opencv2.4.13+python2.7学习笔记--使用 knn对手写数字OCR

    阅读对象:熟悉knn.了解opencv和python. 1.knn理论介绍:算法学习笔记:knn理论介绍 2. opencv中knn函数 路径:opencv\sources\modules\ml\in ...

  4. OpenCV学习(39) OpenCV中的LBP图像

    本章我们学习LBP图像的原理和使用,因为接下来教程我们要使用LBP图像的直方图来进行脸部识别. 参考资料: http://docs.opencv.org/modules/contrib/doc/fac ...

  5. ArcGIS案例学习笔记-点集中最近点对和最远点对

    ArcGIS案例学习笔记-点集中最近点对和最远点对 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:对于点图层,查找最近的点对和最远的点对 数据: 方法: 1. ...

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

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

  7. 《Cocos2d-x游戏开发实战精解》学习笔记3--在Cocos2d-x中播放声音

    <Cocos2d-x游戏开发实战精解>学习笔记1--在Cocos2d中显示图像 <Cocos2d-x游戏开发实战精解>学习笔记2--在Cocos2d-x中显示一行文字 之前的内 ...

  8. [OpenCV-Python] OpenCV 中的图像处理 部分 IV (一)

    部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录   13 颜色空间转换 目标 • 你将学习如何对图像进行颜色空间转换,比如从 BGR 到灰度图,或者从BGR 到 ...

  9. [OpenCV-Python] OpenCV 中的图像处理 部分 IV (三)

    部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录 19 Canny 边缘检测 目标 • 了解 Canny 边缘检测的概念 • 学习函数 cv2.Canny() 1 ...

随机推荐

  1. rest_framework_extensions实现缓存

    1.安装包 pip install drf-extensions pip install django-redis pip install django-redis-cache 2.配置redis # ...

  2. ElasticSearch日常使用脚本

    1.启动服务要切换到非root账户 (例子:su - elk --command="/usr/local/elk/kibana/bin/kibana serve &")2. ...

  3. 知识点---<input>、<textarea>

    一.在pc端的input是一个大的知识点 [1]文本框 <input type="text"> [2] 密码框 <input type="passwor ...

  4. java编译带中文是显示乱码的错误

    FirstJava.java:3: 错误: 编码GBK的不可映射字符 System.out.println("娆㈣繋瀛︿範Java绋嬪簭锛?")锛? ^FirstJava.java ...

  5. selenium java 浏览器操作

    环境搭建 selenium 2.53 selenium-java-2.53.0.jar selenium-java-2.53.0-srcs.jar 原代码包 拷贝的工程lib下,做build path ...

  6. Linux debug

    proc文件系统中可以查看一些正在运行的变量如device-tree sh-3.2# cat /proc/device-tree/ #address-cells fixedregulator@9/ # ...

  7. 按enter 导致整个页面刷新的解决办法

    1.如果用的又from表单的存在,则在form中添加事件 <form onsubmit="return false;">.......</form> 2.增 ...

  8. HTML5学习路线导航

    一.基本标签元素 1.基础标签第一篇 2.基础标签第二篇 3.表单form的使用 4.新增表单验证 二.CSS样式表 4.CSS插入样式表的三种格式 5.六大选择器 6.样式内容详细讲解 7.背景渐进 ...

  9. 天然气管道Gaz[POI2007]

    --BZOJ1034 题目描述 Mary试图控制成都的天然气市场.专家已经标示出了最好的天然气井和中转站在成都的地图.现在需要将中转 站和天然气井连接起来.每个中转站必须被连接到正好一个钻油井,反之亦 ...

  10. function 函数

    function:函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回.因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑. 如果没有return语句,函数执行完毕后也 ...