Air Band
yfraquelle
这个作者很懒,什么都没留下…
展开
-
(4)Air Band准备-VS中搭建项目
之前将需要的工具都下载并安装了,最主要的一个工具IDE:Visual Studio2013在上一篇中并没有说明,一个是因为比较基础,二是我是在安装MySQL Workbench时顺带自动安装的,所以具体情况真的记不清了。这一篇我们来说说如何将零散的工具组织进VS供我们使用。项目打包首先,在建立项目前,我需要提前想好项目结束后如何打包导出,度娘显示现在大多使用InstallShield来完成原创 2017-02-26 03:44:24 · 518 阅读 · 0 评论 -
(14)Air Band OpenCV2.4.13_基础作图
本文是对OpenCV2.4.13的部分翻译,作个人学习之用,并不完整。首先介绍两个结构:Point一个二维点,可以如下定义:Point pt;pt.x=10;pt.y=8;或:Point pt=Point(10,8);Scalar一个四元素向量,常用于传递像素值,这里我们用于表示BGR颜色值(3参数),最后一个元素用不到可以不定义。Scalar(a,b,翻译 2017-03-04 13:05:48 · 235 阅读 · 0 评论 -
(13)Air Band OpenCV2.4.13_改变图像对比度和亮度
本文是对OpenCV2.4.13的部分翻译,作个人学习之用,并不完整。使用这样的处理:g(x)=af(x)+b#include #include #include using namespace cv;double alpha;//对比度int beta;//亮度int main( int argc, char** argv ){ Mat image = imread( a翻译 2017-03-04 12:51:12 · 376 阅读 · 0 评论 -
(10)Air Band OpenCV2.4.13_浏览图像、查表、时间度量
可以用I_new=(I_old/n)*n的方法来削减颜色空间,如0~9取0,10~19取10,使值变得更少,计算得到OpenCV提供两个函数:getTickCount() 返回从某个特定事件(如系统引导)起,系统CPU的tick数。getTickFrequency() 返回CPU一秒有多少tick。度量时间就可以用:double t=(double)getTickCou翻译 2017-03-04 08:41:39 · 239 阅读 · 0 评论 -
(9)Air Band OpenCV2.4.13_Mat
本文是对OpenCV2.4.13的部分翻译,作个人学习之用,并不完整。Mat数字化记录图像的方式就是用矩阵记录每个像素的RGB值Mat是一个类,无需手动分配和释放内存有两个数据部分:matrix header 包含矩阵大小、存储方法、存储地址等 头部大小是一个常量pointer翻译 2017-03-04 08:08:02 · 304 阅读 · 0 评论 -
(11)Air Band OpenCV2.4.13_矩阵掩码操作
本文是对OpenCV2.4.13的部分翻译,作个人学习之用,并不完整。掩码操作的核心思想就是根据掩码矩阵(kernel)重计算图像中的每个值。掩码矩阵中的值会隐含对邻近像素由多大影响。从数学角度看就是使用我们指定的值来做加权平均值。基本方法:void Sharpen(const Mat& myImage, Mat& Result){ CV_Assert(myImage.de翻译 2017-03-04 12:16:26 · 429 阅读 · 0 评论 -
(12)Air Band OpenCV2.4.13_将两幅图片叠加
可以对像素做线性操作:H(x) = (1-a)f(x) + ag(x)#include #include #include using namespace cv;int main( int argc, char** argv ){ double alpha = 0.5; double beta; double input; Mat src1, src2, dst; st翻译 2017-03-04 12:43:52 · 249 阅读 · 0 评论 -
(42)Air Band OpenCV2.4.13_为轮廓创建旋转的包围盒和椭圆
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include #include #include using namespace cv;using namespace std;Mat sr翻译 2017-03-11 11:28:01 · 248 阅读 · 0 评论 -
(41)Air Band OpenCV2.4.13_为轮廓创建包围盒与圆
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include #include #include using namespace cv;using namespace std;Mat sr翻译 2017-03-11 09:51:35 · 349 阅读 · 0 评论 -
(40)Air Band OpenCV2.4.13_凸包
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include #include #include using namespace cv;using namespace std;Mat src; M翻译 2017-03-11 09:38:24 · 204 阅读 · 0 评论 -
(39)Air Band OpenCV_找到图像中的轮廓
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include #include #include using namespace cv;using namespace std;Mat sr翻译 2017-03-11 09:32:13 · 249 阅读 · 0 评论 -
(16)Air Band OpenCV2.4.13_离散傅里叶变换
本文是对OpenCV2.4.13的部分翻译,作个人学习之用,并不完整。离散傅里叶变换可以拆分一个图像为正弦和余弦部分,换句话说就是将一幅图从空间域转换到频度域。核心思想就是任意一个函数可以被适当地用有限的正弦函数和余弦函数表示出来。一个二维图像的傅里叶变换:这里 f 是空间域中的图像值,F 是频度域中的值。可以通过一个实数图和一个复数图或通过一个模值图和一个相图来显示转换的结果翻译 2017-03-07 16:04:50 · 285 阅读 · 0 评论 -
(15)Air Band OpenCV2.4.13_随机生成器和显示文字
本文是对OpenCV2.4.13的部分翻译,作个人学习之用,并不完整。输入参数如坐标、颜色、厚度等,绘制动态的集合图像。这里我们使用随机值作为绘制的参数,使用大量的几何图形来生成图像,并且用随机的方法来初始化,这个过程是用循环自动执行的。#include #include #include #include using namespace cv;/// Globa翻译 2017-03-07 15:13:37 · 189 阅读 · 0 评论 -
(17)Air Band OpenCV2.4.13_用xml和yaml文件进行输入和输出
本文是对OpenCV2.4.13的部分翻译,作个人学习之用,并不完整。这里我们讨论xml和yaml文件的输入,你的输出(和它对应的输入)文件只能是其中的一种扩展名和其所带的结构。他们是两种你可以用于序列化的数据结构:mappings(映射)和element sequence(元素序列)。不同之处是在映射中每个元素有你可以用来访问的唯一的名字。而对于序列,只能遍历来查询某个指定项。#翻译 2017-03-07 17:33:29 · 238 阅读 · 0 评论 -
(49)Air Band生成自己的级联分类器并进行手势识别(学习版)
我们使用OpenCV2.4.13自带的样本生成工具和支持向量机来生成自己的手势级联分类器。大致的过程参见 Opencv目标检测之级联分类器训练与测试按照这个过程执行也有一些问题,在这里记录一下。1.准备正样本这里我用Kinect拍摄了三十多张手部图片,将他们在PS里截取手部并统一改为30*28的大小(这个办法并不好,训练集可能很大,效率太低,应在拍摄时就注意手的位置,然后使原创 2017-03-15 23:01:57 · 1177 阅读 · 2 评论 -
(50)Air Band中期小结
大概一个月之前,基本实现了手部提取和指尖识别,下一阶段预备使用机器学习对指尖和手部信息分类识别并连接音乐编程原创 2017-05-01 15:52:00 · 274 阅读 · 0 评论 -
(48)Air Band OpenCV2.4.13_非线性离散数据的支持向量机
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。计算机视觉中SVM的大多数应用都需要比一个简单的线性分类器更有用的工具。这就导致了这些任务不能简单地用一个超平面来分离。例如面部检测,训练数据是由一组脸的图像和另一组非脸的图像组成的。这种训练数据太复杂以至于不能找到可以将整个脸部集合与非脸部集合线性分割的每个示例的表示方法(特征向量)。优化问题的翻译 2017-03-14 10:09:39 · 716 阅读 · 0 评论 -
(47)Air Band OpenCV2.4.13_支持向量机
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。使用基于SVMs的CvSVM::train构建分类器、CvSVM::predict测试性能。支持向量机(Support Vector Machine SVM)是用一个分离超平面(separating hyperplane)定义的一个差异性分类器。换句话说就是给定标记过的训练数据,算法对新的示例进行分翻译 2017-03-14 09:11:43 · 284 阅读 · 0 评论 -
(46)Air Band OpenCV2.4.13_级联分类器
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。对于简单的视频输出可以使用OpenCV内置的VideoWriter类。这里导出一个输入视频文件的BGR彩色通道到一个新的视频中。翻译 2017-03-12 16:38:27 · 289 阅读 · 0 评论 -
(45)Air Band OpenCV2.4.13_输入视频和相似性度量
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。视频有两种:实时图像和预记录在硬盘中的存储文件。OpenCV使用相同C++类和相同的方法来处理。所有对于视频输入功能必要的函数都在VideoCapture类中,这个类基于FFmpeg开源库来构建。这是OpenCV基本的依赖。一个视频是由一系列图像组成的,书面上将其称为帧。视频文件中帧率指定了两帧之间的时长翻译 2017-03-12 15:04:36 · 277 阅读 · 0 评论 -
(44)Air Band OpenCV2.4.13_点-多边形检测
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include #include #include using namespace cv;using namespace std;/** *翻译 2017-03-11 11:42:16 · 195 阅读 · 0 评论 -
(43)Air Band OpenCV2.4.13_图像矩
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include #include #include using namespace cv;using namespace std;Mat sr翻译 2017-03-11 11:34:11 · 262 阅读 · 0 评论 -
(19)Air Band OpenCV2.4.13_平滑图像
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。理论:平滑(Smoothing),也叫做模糊(blurring),是一种简单常用的图像处理操作。平滑有很多原因,在这里我们专注于为了减少噪声。为了执行平滑操作,我们对图像采用一个滤波器。最常见的滤波器是线性的,输出像素的值是输入像素值的加权和。h(k,l)叫做“核”(kernel),也就是滤波翻译 2017-03-07 19:44:19 · 261 阅读 · 0 评论 -
(18)Air Band OpenCV2.4.13_和OpenCV1的互操作
本文是对OpenCV2.4.13的部分翻译,作个人学习之用,并不完整。Mat是对旧的CvMat和IplImage的替代。OpenCV2中有许多模块,每个都包含与某种任务相关的数据结构和函数,使用时只需要一个子集即可,所以在引入头文件时只要引入需要的。所有OpenCV相关的都放入了名空间:cv来避免与其他库的数据结构以及函数冲突。因此,当需要时使用前缀cv::或在include后翻译 2017-03-07 18:05:17 · 219 阅读 · 0 评论 -
(38)Air Band OpenCV2.4.13_模板匹配
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。模板匹配是在图像中找到一个类似于模板图像的技巧。原理:我们需要两个组件:原图像、模板图像(碎片图像patch)为了定义匹配区域,我们将模板图像和原图像比较来滑动匹配。滑动匹配就是将模板图像每次移动一个像素(从左至右,从上到下),在每个位置计算一个表示匹配程度的指标。对于I上的每一个位置T,将指翻译 2017-03-11 08:59:40 · 298 阅读 · 0 评论 -
(37)Air Band OpenCV2.4.13_反向投影
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。反向投影是给定图像的像素对直方图上的像素分布匹配程度的记录方式。简单地说,你可以对某以特性计算一个直方图模型并用其来找到图像的该特性。在实际应用上,比如你有一个肉色的的直方图,你可以用其找到图像中的肉色区域。原理:以上一篇中的图像为例:当你基于一张图像计算出一个皮肤的直方图(Hue-S翻译 2017-03-11 07:53:19 · 222 阅读 · 0 评论 -
(25)Air Band OpenCV2.4.13_为图像添加边界
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。之前我们学习了如何使用卷积来操作图像,自然有一个问题:如何处理边界,如果某个点在图像的边缘,如何卷积它?大多数的OpenCV函数采取复制给定图像到另一稍大的图像中来自动填充边界(之前的方法就是这样做的),这样的话,卷积就可以在每一给定的像素周围执行。在这里,我们简要地探索两种为图像定义额外边界的方法:翻译 2017-03-08 11:24:40 · 311 阅读 · 0 评论 -
(24)Air Band OpenCV2.4.13_自定义线性滤波器
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。卷积:广义上就是在一个操作器(核)与图像每一部分之间的操作。核:核就是一个固定大小的数字系数数组,并且在数组中有一个锚点,通常是在中心位置。用核做卷积操作:假设想要知道图像中特定位置的结果值,卷积值可以这样计算:1.将核的锚点置于某个像素上,用核的其余位置来覆盖相应的周围像素2.用对应的图像像素值翻译 2017-03-08 10:45:46 · 424 阅读 · 0 评论 -
(23)Air Band OpenCV2.4.13_基本阈值操作
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。阈值是最简单的分割方法。应用的例子:将图像中我们想要分析的物体部分根据物体与背景像素强度(intensity)(灰度)的不同分割出来。为了将我们感兴趣的像素与其余分开,我们对每个像素的灰度值执行阈值比较。一旦我们将重要的像素分离开,我们可以将他们设置为某个值来表示他们(0黑~255白)阈值翻译 2017-03-08 10:09:30 · 230 阅读 · 0 评论 -
(22)Air Band OpenCV2.4.13_图像金字塔
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。通常我们需要将一个图像转换到和原本不同的大小,有两种方式:扩大(zoom in)、缩小(zoom out)尽管在OpenCV中有几何转换函数改变图像大小(resize),这里我们首先分析Image Pyramids的用法,它广泛地应用于多版本应用中。图像金字塔(Image Pyramid)图像翻译 2017-03-08 09:06:02 · 232 阅读 · 0 评论 -
(21)Air Band OpenCV2.4.13_其他形态学变换
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。基于腐蚀和膨胀操作,我们可以对图像完成更多复杂操作。开(Opening):先腐蚀,再膨胀:dst = open( src , element ) = dilate( erode ( src , element ) )用于移除小物体,一般是暗色前景中的亮的物体闭(Closing):先膨胀翻译 2017-03-08 08:21:06 · 239 阅读 · 0 评论 -
(20)Air Band OpenCV2.4.13_腐蚀和膨胀
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。形态学操作基于图形处理图像的一系列操作,对输入图像构造结构元素并生成输出元素。最基本的形态学操作就是膨胀(Dilation)和腐蚀(Erosion),它们有很广泛的用处:消除噪点;隔离单独元素,连接不同元素;找到图像中强度的凹凸之处。膨胀(Dilation):膨胀操作包括用某个核(B)对图像A进行翻译 2017-03-08 07:27:19 · 261 阅读 · 0 评论 -
(8)Air Band数字图像处理基础-图像的形态学处理
本文可视为《Visual.C++数字图像处理开发入门与编程实践》读书笔记由于部分图片和公式难以打出,使用截图的方式呈现。转载 2017-03-03 20:18:27 · 352 阅读 · 0 评论 -
(7)Air Band数字图像处理基础-边缘检测和轮廓跟踪
本文可视为《Visual.C++数字图像处理开发入门与编程实践》读书笔记由于部分图片和公式难以打出,使用截图的方式呈现。转载 2017-03-03 20:03:56 · 653 阅读 · 0 评论 -
(6)Air Band数字图像处理基础-对图像进行几何变换
本文可视为《Visual.C++数字图像处理开发入门与编程实践》读书笔记由于部分图片和公式难以打出,使用截图的方式呈现。转载 2017-03-03 19:57:17 · 531 阅读 · 0 评论 -
(1)Air Band调研
在漫长的定题过程中我查找了许多手势检测、Kinect、图像识别相关的博客:Kinect:Kinect开发学习笔记使用VS2008在windows平台上试用KinectKinect+OpenNI学习笔记如何在PC上使用KinectKinect1的安装和使用连接kinect2.0+sdk2.0Kinect开发笔记Kinect-叶梅树K原创 2017-02-26 00:24:24 · 490 阅读 · 0 评论 -
(2)Air Band论文阅读
想着既然是跟着老师做创新项目,总要看一些最新的研究,加上学院里又要提交项目文献综述,我和我的小伙伴们开始了艰难的啃论文的过程。现在这个阶段,其实看论文只能看个大致意思,很多的算法和概念都没有接触过。原创 2017-02-26 01:47:34 · 491 阅读 · 0 评论 -
(3)Air Band准备-下载安装
就像(0)篇所说,经过了漫长的资料查询和脑洞打开,终于我们在寒假前确定了项目内容。不过既有了之前广泛的搜索和比较,我们终于能暂时统一了开发的环境,由于Kinect SDK将手部只看作一个关节,而OpenNI可以识别手部,我们需要将两者结合起来用,还好OpenNI2可以与Kinect SDK同时存在,中间件仍然选择了最常用的NiTE2:Windows 7C++Visual Studio原创 2017-02-26 01:51:56 · 537 阅读 · 0 评论 -
(35)Air Band OpenCV2.4.13_直方图计算
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。直方图就是将一组数据组织成一系列已定义的bins。当我们谈到数据,我们不只会限于灰度值,收集到的数据都会对描述特性非常有用。我们以下图为例:我们可以将里面出现的256个值按区间组织起来然后计数每个区间中的像素的个数,我们可以得到下图:直方图不仅能计数图像强度,还可以度量翻译 2017-03-11 06:23:37 · 372 阅读 · 0 评论 -
(36)Air Band OpenCV2.4.13_直方图比较
本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。为了比较两个直方图H1和H2,首先选择一个矩阵d(H1,H2)来表示两幅图的匹配情况。OpenCV实现了compareHist函数来执行这一比较,也提供了四个不同的矩阵来计算匹配情况1.相关性(CV_COMP_CORREL)这里N是直方图bins的总数2.卡方(CV_COMP_CH翻译 2017-03-11 07:00:31 · 245 阅读 · 0 评论