我回来了,比自己想象中的要快好多。离职,收拾行李,落脚合肥。前后只用了2天时间。雾总2天前给我电话说我走的好快啊,一不留神就走了。
仓促,慌张。
more >>资质平庸,认知局限
有时候偶尔写东西的时候少音乐挺没劲的。
音乐也是有毒,难以让人专注去做好一件事。
我不知道我添加一个音乐播放器的意义是什么。
纠结那么多好像也没那么多的意义。
所以不管了,文章都开了,还是个音乐播放器吧。
别问我为啥不给移动端加一个,就是不加。
准备工作:一个网易云音乐账号 + 一个网易云音乐歌单
废话内容,写在前面:
Mat是个什么玩意?
2015年下半年我在深圳的时候,一边看C++的入门,一边敲一点点和工作有关的代码。有一天飞哥和勇哥终于按耐不住觉得我总是测试光学打光做电子元器件可能就真的要废了,便让我用Visual Studio把一张图片用窗口显示出来,然后对图片进行二值化处理,提取特征值。
我印象特别深刻,方法函数里面涉及到了好多Mat,如今开始动OpenCV第一个碰到的东西就是Mat,在这里把研读的关于Mat类,记录一下。
OpenCV官方文档是这样界定Mat的:基本的图像容器。
处理一张图片为何要用到图像的容器这种定义的概念?没有《图像处理技术》基础知识的人可能不太能懂图像为何需要一个基本的图像容器去处理。我本科学的《图像处理技术》的基础内容现在也不太记得,脑海中只有一些隐约的印象:图像是很多像素点构成,每个像素点有具体的像素值(0~255),一张二维平面上的图片,它上面所有的点平面坐标位置,有点像《线性代数》里的矩阵,处理一张图片就是处理图片上所包含的像素值的信息,所以图片的处理,就可以转换成矩阵运算。
正如OpenCV官方文档上说到的:如何获取并存储这些像素值由我们的需求而定,最终在计算机世界里所有图像都可以简化为数值矩以及矩阵信息。作为一个计算机视觉库, OpenCV 其主要目的就是通过处理和操作这些信息,来获取更高级的信息。因此,OpenCV如何存储并操作图像是你首先要学习的。
more >>废话内容,写在前面:
2016年上半年在上海面试的时候。徐汇区有一家做社交的互联网公司开始打算做人脸识别,由此我了解了深圳脸萌科技的FaceU这款超级激萌的App。很有意思的是徐汇区那家社交公司面试我的时候跟我说的很明确:你做一个类似FaceU的demo给我,我就给你发Offer。有时候我在想一份工作好简单啊,只要你会做人脸识别添加贴纸贴片,一碗饭就来了。
回去之后,我对比了iOS框架自带的人脸识别框架识别的精度不够高,侧脸极其难识别,我只好放弃转而奔向科大讯飞人脸识别的框架去做。
那一个礼拜的时间里,我看科大讯飞的人脸识别SDK和官方Demo,在做识别的过程中想加贴片装饰品的时候,遇到了二个代理方法的冲突,导致某个识别状态始终无法修改。所以那次的demo最终是没有做出来。
时隔快一年,我想人脸识别功能我该动一动了,恰好个人技术博客刚开张,也应该来一点技术干货。同时不一样的是,这次我也不打算用科大讯飞的框架,我想从OpenCV的开源库着手,多多少少还可以学点C++的函数也还不错。
由此我想把研究人脸识别的过程记录下来。所以这个系列是一个不懂C++的iOS开发小白的学习过程。
本系列文章,所有测试内容以及demo的环境如下:
1)Xcode Version 8.2.1
2)OpenCV for iOS 3.2.0
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true