阅读对象:对概率论中的期望有一点了解. 1.图像几何矩 1.1简述 图像的几何矩包括空间矩.中心矩和中心归一化矩.几何矩具有平移.旋转和尺度不变性,一般是用来做大粒度的区分,用来过滤显然不相关的图像. 1.2用数学语言阐述图像的几何矩 针对于一幅图像,我们把像素的坐标看成是一个二维随机变量(X,Y),那么一幅灰度图像可以用二维灰度密度函数来表示,每个像素点的值可以看成是该处的密度,对某点求期望就是该图像在该点处的矩(原点矩),一阶矩和零阶矩可以计算某个形状的重心,二阶矩可以计算形状的方向,因此可…
阅读对象:无要求. 1.代码 ''' OpenCV中的轮廓 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度.为了更加准确,要使用二值化图像.在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检测. cv2.findContours()在一个二值图像中查找轮廓 有三个参数: 第一个:输入图像; 第二个:轮廓检索模式; 第三个:轮廓近似方法 cv2.CHAIN_APPROX_NONE:所有的边界点都会被存储.但是我们真的需要这么多点吗?例如,当我们找的边界是一条直…
阅读对象:可以配置opencv+Python环境的任何人,毕竟写这篇文章的人就是小白. 1.环境说明 1.1opencv版本: 1.2Python版本: 1.3系统:win7 注: (1)opencv安装教程:http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows.html#install-opencv-python-i…
阅读对象:熟悉knn.了解opencv和python. 1.knn理论介绍:算法学习笔记:knn理论介绍 2. opencv中knn函数 路径:opencv\sources\modules\ml\include\opencv2\ml\ml.hpp 3.案例 3.1数据集介绍 我们的目的是创建一个可以对手写数字进行识别的程序.为了达到这个目的我们需要训练数据和测试数据.OpenCV 安装包中有一副图片(/samples/python2/data/digits.png), 其中有5000 个手写数字…
本章我们学习LBP图像的原理和使用,因为接下来教程我们要使用LBP图像的直方图来进行脸部识别. 参考资料: http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html http://www.cnblogs.com/mikewolf2002/p/3438166.html       LBP的基本思想是以图像中某个像素为中心,对相邻像素进行阈值比较.如果中心像素的亮度大于等于它的相邻像素,把相邻像素标记为1,否则标…
ArcGIS案例学习笔记-点集中最近点对和最远点对 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:对于点图层,查找最近的点对和最远的点对 数据: 方法: 1. PointDistance 2. NearestDistancePointPair.PointsToLines 3 FarestDistancePointPair.PointsToLine 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com…
kmeans算法的原理参考:http://www.cnblogs.com/mikewolf2002/p/3368118.html 下面学习一下opencv中kmeans函数的使用.      首先我们通过OpenCV中的随机数产生器RNG,生成一些均匀分布的随机点,这些点的位置对应一副图像中的像素位置,然后使用kmeans算法对这些随机点进行分类,并计算出分类簇的中心点.      随机产生的簇的数量是2到5之间的值,采样点的数量范围是1-1000,一维矩阵centers存放kmeans算法结束…
<Cocos2d-x游戏开发实战精解>学习笔记1--在Cocos2d中显示图像 <Cocos2d-x游戏开发实战精解>学习笔记2--在Cocos2d-x中显示一行文字 之前的内容主要都是介绍如何在屏幕上显示图像,事实上除了图像之外,音乐的播放也可以被理解为一种显示的方式,本节将学习在Cocos2d-x中播放声音的方法. (1)在HelloWorld.h中对HelloWorld类进行如下定义: class HelloWorld : public Cocos2d::Layer { pu…
部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录   13 颜色空间转换 目标 • 你将学习如何对图像进行颜色空间转换,比如从 BGR 到灰度图,或者从BGR 到 HSV 等. • 我没还要创建一个程序用来从一幅图像中获取某个特定颜色的物体. • 我们将要学习的函数有:cv2.cvtColor(),cv2.inRange() 等. 13.1 转换颜色空间 在 OpenCV 中有超过 150 中进行颜色空间转换的方法.但是你以后就会.发现我们经常用到的也就两种…
部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录 19 Canny 边缘检测 目标 • 了解 Canny 边缘检测的概念 • 学习函数 cv2.Canny() 19.1 原理 Canny 边缘检测是一种非常流行的边缘检测算法,是 John F.Canny 在1986 年提出的.它是一个有很多步构成的算法,我们接下来会逐步介绍. 19.1.1 噪声去除 由于边缘检测很容易受到噪声影响,所以第一步是使用 5x5 的高斯滤波器去除噪声,这个前面我们已经学过了. 1…
部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录 23 图像变换 23.1 傅里叶变换目标本小节我们将要学习: • 使用 OpenCV 对图像进行傅里叶变换 • 使用 Numpy 中 FFT(快速傅里叶变换)函数 • 傅里叶变换的一些用处 • 我们将要学习的函数有:cv2.dft(),cv2.idft() 等原理 傅里叶变换经常被用来分析不同滤波器的频率特性.我们可以使用 2D 离散傅里叶变换 (DFT) 分析图像的频域特性.实现 DFT 的一个快速算法被称…
部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录 16 图像平滑 目标 • 学习使用不同的低通滤波器对图像进行模糊 • 使用自定义的滤波器对图像进行卷积(2D 卷积) 2D 卷积 与一维信号一样,我们也可以对 2D 图像实施低通滤波(LPF),高通滤波(HPF)等.LPF 帮助我们去除噪音,模糊图像.HPF 帮助我们找到图像的边缘OpenCV 提供的函数 cv.filter2D() 可以让我们对一幅图像进行卷积操作.下面我们将对一幅图像使用平均滤波器.下面是…
部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录 21 OpenCV 中的轮廓 21.1 初识轮廓目标 • 理解什么是轮廓 • 学习找轮廓,绘制轮廓等 • 函数:cv2.findContours(),cv2.drawContours() 21.1.1 什么是轮廓 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同.的颜色或者灰度.轮廓在形状分析和物体的检测和识别中很有用. • 为了更加准确,要使用二值化图像.在寻找轮廓之前,要进行阈值化处理.或…
部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录 22 直方图 22.1 直方图的计算,绘制与分析目标 • 使用 OpenCV 或 Numpy 函数计算直方图 • 使用 Opencv 或者 Matplotlib 函数绘制直方图 • 将要学习的函数有:cv2.calcHist(),np.histogram()原理 什么是直方图呢?通过直方图你可以对整幅图像的灰度分布有一个整体的了解.直方图的 x 轴是灰度值(0 到 255),y 轴是图片中具有同一个灰度值的点…
前言: PCA是大家经常用来减少数据集的维数,同时保留数据集中对方差贡献最大的特征来达到简化数据集的目的.本文通过使用PCA来提取人脸中的特征脸这个例子,来熟悉下在oepncv中怎样使用PCA这个类. 开发环境:ubuntu12.04+Qt4.8.2+QtCreator2.5.1+opencv2.4.2 PCA数学理论: 关于PCA的理论,资料很多,公式也一大把,本人功底有限,理论方面这里就不列出了.下面主要从应用的角度大概来讲讲具体怎么实现数据集的降维. 把原始数据中每个样本用一个向量表示,然…
http://bbs.ednchina.com/BLOG_ARTICLE_3010439.HTM PCB上元器件的布局对整个PCB板的电磁兼容性影响很大,所以从事硬件电路设计的工程师很有必要学习PCB上对元器件的布局.下面,我将以学生学习的角度出发,学习与分析PCB上元器件布局的电磁兼容性设计. 1.概述 为了在设计初期给予布局人员更多的指导,应尽可能地采用电路框图以提供更为详尽的信息,这些应该注意的点包括: (1)  在物理上对电路板上功能性的子模块进行划分: (2)  敏感元器件和I/O端口…
今天在看书的过程中,又发现了自己目前对Javascript存在的一个知识模糊点:JS的作用域链,所以就通过查资料看书对作用域链相关的内容进行了学习.今天学习笔记主要有这样几个关键字:变量.参数传递.执行环境.变量对象.作用域链. 1.变量 变量需要注意的有两点:变量声明和复制变量值. 变量声明肯定大家都很熟悉,在JS中我们都是通过 var 关键字进行变量声明的.JS中规定,通过var声明的变量会被添加到最近的环境中,如果声明并且初始化一个变量没有用到var关键字,这个变量会被添加到全局环境中.…
单例设计模式(Singleton Pattern) 观察者模式(Observer Pattern) 工厂模式(Factory Pattern) 策略模式(Strategy Pattern) 适配器模式(Adapter Pattern) 命令模式(Command Pattern) 装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 模版模式(Template Pattern) 状态模式(State Pattern) 后续将持续发布学习笔记,学习资料参考来源于…
操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件.而通过学习笔记3的简史回顾,操作系统通过多进程图像实现对CPU的管理.所以多进程图像是操作系统的核心图像. 参考资料: 课程:哈工大操作系统(本部分对应 L8 && L9) 实验:操作系统原理与实践_Linux - 蓝桥云课 (lanqiao.cn) 笔记:操作系统学习导引 · 语雀 (yuque.com) 1. 从使用CPU开始直观理解CPU管理 要想管理CPU,就要知道如何使用CPU. CPU的工作原理已经很熟悉:…
今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. re.match re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词. import re text ="JGood is a handsome boy, he is cool, clever, and so on..." m = re.match(r"(\w+)\s", text)…
我是通过<SVG精髓>这本书学习的svg,说实话,这本书写的不好,或者说翻译的不好,我没有看过这本书的原版,不知道原文写的怎么样,但是翻译出来的有些句子真的很拗口.以前老师给我们API文档的时候一直是英文的,我们问他为什么不给中文版的,英文版的看起来费劲,老师说原版的你们能看懂,翻译过来就看不懂了,现在是深有领会啊\(^o^)/~ 废话说完,来看正事,svg的坐标系统和大多数绘图的坐标系统一样,左上角为原点,从左向右x轴递增,从上到下y轴递增.这本没什么好说的,大家都知道,但是奇葩的是<…
Meanshift(均值漂移)是一种在一组数据的密度分布中寻找局部极值的稳定的方法.Meanshift不仅能够用于图像滤波,视频跟踪,还能够用于图像切割. 通过给出一组多维数据点,其维数是(x,y,r,g,b),均值漂移能够用一个窗体扫描空间来找到数据密度最大的区域,能够理解为数据分布最集中的区域. 在这里须要注意,因为空间位置(也就是上面的x和y)的变化范围与颜色的变化范围(上面的r,g,b)有极大的不同,所以,meanshift对这两个维数要採用不同的窗体半径.在opencv自带的means…
关于OpenCV安装 1.下载和安装OpenCV SDK 在官网:http://opencv.org/上找到OpenCV windows版下载 . 后得到一个 opencv-2.X.X.exe的文件,直接双击解压......如下: 2.配置环境变量: 在path 变量下,新增以下两个值: 3.工程包含(include)目录的配置 新建一个工程之后,在菜单栏里面点<视图>--<属性管理器>,那么就会在visual studio中多出一个属性管理器工作区来. 在新出现的"属性…
同其它编程语言一样,python也提供了丰富的数据结构,以方便数据的处理.本文介绍两种最基本的数据集合,列表和元组的使用. 一.列表使用介绍 可以理解为一个有序的序列.其使用方式举例如下: list=[]  #定义了一个空的列表list.append("hello1")   #往列表的尾部插入一个元素list.append(12)  #往列表的尾部插入一个元素,可以看出,列表中的元素可以是多种类型的print listfor item in list:   #利用for循环遍历列表中的…
#include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc\imgproc.hpp> #include <opencv2\core\core.hpp> ); int main() { cv::Mat img_orginal = cv::imread("F:\\images\\boldt.jpg"); cv::Mat img_altered = img_orginal.clone()…
#include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc\imgproc.hpp> #include <iostream> void salt(cv::Mat& image, int n) { ; k<n; k++) { int i = rand() % image.cols; int j = rand()…
#include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc\imgproc.hpp> #include <iostream> ) { int nr = image.rows; int nc = image.cols * image.channels(); int n = static_cast<int>( cv:…
我把写的代码直接贴在下面了,注释的不是很仔细,主要是为了自己复习时方便查找,并不适合没有接触过python的人看,其实我也是初学者. #定义函数 def my_abs(x): if x>=0: return x else: return -x #调用函数 my_abs(-9) #filter/map/reduce/lambda #filter(function,sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/…
OpenCV提供了resize函数来改变图像的大小,函数原型如下: , , int interpolation=INTER_LINEAR ); 参数解释: src:输入,原图像,即待改变大小的图像: dst:输出,改变大小之后的图像,这个图像和原图像具有相同的内容,只是大小和原图像不一样而已: dsize:输出图像的大小.如果这个参数不为0,那么就代表将原图像缩放到这个Size(width,height)指定的大小:如果这个参数为0,那么原图像缩放之后的大小就要通过下面的公式来计算: dsize…
话说,平凡之处显真格,这一点也没错!  比如,对旋转图像进行双线性插值,很简单吧?  可,对我,折腾了大半天,也没有达到预期效果!  尤其是三个误区让我抓瞎好久: 1,坐标旋转公式.   这东西,要用的时候查资料,抄过来,从不记清,猛地一下让人写正确,确实不容易,虽然只是正余弦的排列问题.画图推导的方法也是知道,但是,奈何又记不得三角形的和角展开公式.没办法,只好逐一测试验证了,心血经验,45.90,135,180这几个角度最好都验证一下. 2,双插的数据来源. 一开始,思维上习惯地数据来源认定…