![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 61
冰不语
这个作者很懒,什么都没留下…
展开
-
OpenCV学完基础知识不知道做什么?!我不相信这是真的
编程是需要练习的,需要项目练手的。听不少人说过,学习完OpenCV的基础部分之后就不知道该干什么了?怎么可能呢?实际上能做的事情很多,不要因为觉得太简单或者太难就不动手做了。只要有兴趣有时间有需要,就先动手做起来。哪怕先实现其中最简单的部分,后面再慢慢的一边学习一边添加功能,也是好的。下面推荐一些项目,没有源码,自己动手查资料做哦,即使是网上能找到代码我还是推荐自己写一遍。实现原创 2018-01-29 14:05:00 · 26039 阅读 · 0 评论 -
如何遍历文件夹下的所有图片(Pyhton&C++)
前言虽然本文说的是遍历图片,但是遍历其他文件也是可以的。在进行图像处理的时候,大部分时候只需要处理单张图片。但是一旦把图像处理和机器学习相结合,或者做一些稍大一些的任务的时候,常常需要处理好多图片。而这里面,一个最基本的问题就是如何遍历这些图片。用opencv做过人脸识别的人应该知道,那个项目中并没有进行图片的遍历,而是用了一种辅助方案,生成了一个包含所有图片路径的文件at.txt,然后通过这个路径原创 2017-05-22 18:33:53 · 19447 阅读 · 3 评论 -
Caffe+Visual Studio 2015编译可以有多简单?
上一篇文章没有给出caffe+VS2015的具体步骤,只是给出了一个教程的Github地址。但是由于国内网速的问题,有的人文件都没能成功下载,有的由于英文水平所限,编译起来也是有点麻烦。所以本文做为上一篇的补充。基本上是教程的中文版,只不过不是完全翻译,用自己的话再说一遍,夹杂一些注意事项。下载1. 下载Caffecaffe只有不到10M。还是下面这个地址: https://github.com原创 2017-05-26 13:15:33 · 13789 阅读 · 19 评论 -
C++从零实现深度神经网络之零——前言
一年前接触最初神经网络,半年前就像自己写一个最简单的BP神经网络练练手,结果由于能力有限,不光是编程能力还有理论方面的能力都有限,一直推到半年后的现在才真正的开始。其实很多坑必须要自己亲自踩过之后才能明白。在我看来,我现在这个过程就是在踩坑的过程。在不断犯错和改错中提高。在这里记录下自己的踩坑过程。这是一个堪称简陋(随着时间推移,应该会变得更好)的练手性质的小项目,而且重复造轮子,目的是为了加深自己原创 2016-12-15 18:21:02 · 6048 阅读 · 3 评论 -
OpenCV之识别自己的脸——C++源码放送
OpenCV之识别自己的脸——C++源码放送前言在将近一年之前,我在CSDN专栏《OpenCV实践之路》中连续发了三篇博客,完整地描述了基于OpenCV进行人脸识别的全过程。三篇都将近一万的阅读量和大量的评论的表明,人脸识别果然是大家在学习OpenCV过程中最感兴趣的课题,之一。当然,也有可能是本科生毕设老师最感兴趣的课题之一。。。由于当时写的时候是按照前后流程来的,所以源码比较分...原创 2017-04-05 09:49:57 · 12893 阅读 · 48 评论 -
OpenCV实践之路——opencv玩数独之一九宫格轮廓提取与透视变换
本文部分参考自如下链接:Sudoku-recognizer。前几天发现了这个网页,觉得挺好玩的,就想自己实现一下。本以为只是把代码从Python转换到C++是一件很简单的事情,经过这几天的努力发现是自己想的太简单了。到现在也没有完全实现。前面的一小半可以说是参考了上述文章,所做的只是把opencv的代码转换下语言风格,但是到了后面随着Python语言用的越来越多,很多地方已经完全看不懂了,只能自己原创 2016-03-02 23:29:09 · 12024 阅读 · 4 评论 -
OpenCV实践之路——Hough变换检测猫眼
Hough变换Hough变换是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。霍夫变换于1962年由Paul Hough 首次提出,后于1972年由Richard Duda和Peter Hart推广使用,经典霍夫变换用来检测图像中的直线,后来霍夫变换扩展到任意形状物体的识别,多为圆和椭圆。Hough变换是一种使用表决原理的参数估计技术。其原理是利用图像空原创 2016-03-04 00:08:13 · 2823 阅读 · 1 评论 -
OpenCV实践之路——opencv玩数独之二九宫格小方格的提取和数字的提取
在之前的博文OpenCV实践之路——opencv玩数独之一九宫格轮廓提取与透视变换中,已经实现了九宫格最外围矩形轮廓的提取,并利用透视变换把矩形摆正。今天接着上一篇的内容,在摆正后的矩形中检测并提取出九九八十一个小方格,并提取出含有数字的小方格中的数字。用的方法仍然是之前提到的轮廓提取,然后对轮廓进行多边形逼近,最后利用多边形的面积和顶点等信息对轮廓进行筛选。其中最耗时间的地方仍然是阈值化的时原创 2016-03-04 11:49:16 · 8834 阅读 · 10 评论 -
OpenCV实践之路——Qt中调用OpenCV打开图片
千辛万苦,最终还是在一位前辈的帮助下把环境给配置好了。对于Qt中opencv环境的配置,记录以下几点:1.opencv一定要是自己用CMake编译的!就因为老是编译不成功,导致费了一周也没配置好。换系统、换不同版本的opencv,重装Qt根本没用。2.qt程序运行的时候要把opencv的相应*.dll文件拷贝到对应的Debug文件夹中去,即和*.pro、*.cpp等放在一起。原创 2016-02-18 21:18:36 · 25636 阅读 · 7 评论 -
OpenCV实践之路——行人检测
行人检测是视觉领域很热也很有用的一个主题,特别是在无人驾驶中,行人检测的重要性不言而喻。在之前进行了人脸检测之后,行人检测就显得简单多了。过程大致与人脸检测一样,都是先加载分类器,然后进行多尺度检测。就偷懒不再赘述。感兴趣的可以看人脸检测的这一篇文章:OpenCV实践之路——人脸检测(C++/Python)这里只是把代码放在这里,没几行,而且都有着注释:#include #inclu原创 2016-04-26 23:11:50 · 24467 阅读 · 5 评论 -
小密圈:OpenCV实践之路
最近发现一个很多意思的东西,小密圈。号称连接一千位铁杆粉丝,知识变现。据说小密圈可能是最好的微信公众号读者论坛。也做一个尝试,看有多少人愿意加入。仍然是分享OpenCV实战的内容和资料,除了平时写的内容分享之外,也会分享一些我平时的参考资料。原创 2017-06-11 18:55:32 · 1883 阅读 · 0 评论 -
OpenCV|图片与视频的相互转换(C++&Python)
前言在学习opencv的过程中,终会遇到需要把视频转换成图片处理,或者把处理后的图片保存为视频格式的时候。这篇文章中就来看一下如何进行图片和视频之间的相互转换。视频转图片对于这种情况大家应该很熟悉了。因为学习opencv的时候肯定打开过摄像头,比如打开摄像头检测个人脸或者笑脸之类的。在这个过程中,实际就是把摄像头拍摄到的视频转换为一帧一帧的图片连续地进行处理。我们知道,对于打开视频和摄像头,open原创 2017-06-12 18:21:58 · 18598 阅读 · 6 评论 -
魔幻滤镜Gabor Filter 原理与实现(python & C++)
Gabor Filter以下定义翻译引用自维基百科: 在图像处理领域,以Dennis Gabor命名的Gabor滤波器,是一种用于纹理分析的线性滤波器,即它主要分析的是,图像在某一特定区域的特定方向上是否有特定的频率内容。当代许多视觉科学家认为,Gabor滤波器的频率和方向的表达与人类的视觉系统很相似,尽管并没有实验性证据和函数原理能证明这一观点。研究发现,Gabor滤波器特别适合于纹原创 2018-01-26 11:50:08 · 2515 阅读 · 0 评论 -
图像处理笔试面试题
秋招各种笔试面试,总结下遇到的图像处理和C++的题目。写下来的都是能记起来的,记不起来的应该也有不少。大概让没有经历过的人知道会遇到什么样的问题,可以提前准备下。除了一下题目之外,最多的还是围绕着你做过的项目来问的。一、图像处理题目注意,一下所有需要写代码的题目,不允许使用OpenCV的Mat类。如果图片内容需要用指针读取。给定0-1矩阵,求连通域。(遇到过N次,笔试面试都有,最好做到能徒手hac原创 2017-12-12 18:20:20 · 10725 阅读 · 6 评论 -
OpenCV实践之路——人脸检测(C++/Python)
之前一直觉得人脸检测是非常麻烦的,即使是用opencv,麻烦到我都不敢去碰。这两天仔细看了下,如果只是调用opencv自带的分类器和函数的话,简直是简单。这不,正好最近也在学习Python,索性就用C++和Python两种语言都实现一下。当然,我现在这个是最简单的版本。步骤:调用opencv训练好的分类器和自带的检测函数检测人脸人眼等的步骤简单直接:1.加载分类器,当然分类器事先要放在原创 2016-04-09 15:29:10 · 27340 阅读 · 52 评论 -
OpenCV实践之路——使用imread()函数读取图片的六种正确姿势
经常看到有人在网上询问关于imread()函数读取图片失败的问题。今天心血来潮,经过实验,总结出imread()调用的四种正确姿势。通常我要获取一张图片的绝对路径是这样做的:在图片上右键——属性——安全——对象名称。然后复制对象名称就得到了图片的绝对路径。如图:然而这样得到的路径直接复制粘贴到vs里面会直接报错,如下:可以看出我们获取的绝对路原创 2016-05-11 16:19:35 · 120362 阅读 · 13 评论 -
OpenCV实践之路——人脸识别之一数据收集和预处理
前段时间对人脸检测和人脸标记进行了一些尝试:人脸检测(C++/Python)和用Dlib库进行人脸检测和人脸标记。但是检测和识别是不同的,检测解决的问题是图片中有没有人脸;而识别解决的问题是,如果一张图片中有人脸,这是谁的脸。人脸检测可以利用opencv自带的分类器,但是人脸识别就需要自己收集数据,自己训练分类器了。opencv给出的有人脸识别的教程:Face Recognition with原创 2016-05-12 21:27:07 · 66219 阅读 · 75 评论 -
OpenCV实践之路——人脸识别之二模型训练
本文由@星沉阁冰不语出品,转载请注明作者和出处。文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/51386949微博:http://weibo.com/xingchenbing 在之前的博客人脸识别之一数据收集和预处理之中,已经下载了ORL人脸数据库,并且为了识别自己的人脸写了一个拍照程序自拍原创 2016-05-14 20:42:03 · 61248 阅读 · 177 评论 -
OpenCV实践之路——人脸识别之三识别自己的脸
在之前OpenCV实践之路——人脸识别之一数据收集和预处理和OpenCV实践之路——人脸识别之二模型训练两篇博客中,已经把人脸识别的整个流程全部交代清楚了。包括今天这篇人脸识别方面的内容都已经在上述第二篇博客中的代码中有所体现。只是今天的内容会让结果更加的形象化。仅此而已。可以说,本篇的内容是前面诸多内容的一个整合。所以今天的内容也很简洁。简单说下流程:1.打开摄像头。2.加载人脸检测原创 2016-05-21 21:18:02 · 70443 阅读 · 113 评论 -
OpenCV的鼠标操作——用鼠标画矩形(代码解读)
起因知乎上被邀请回答一个问题,关于OpenCV的鼠标操作的问题。我发现回答下来写了不少东西,可以整理为一篇文章发出来,顺便说下不少人关心的如何用操作鼠标,比如如何用鼠标在图像上画一个矩形或者说选择一个矩形的ROI。知乎上的问题问的是下面这段代码是什么意思。正好,这段代码我是看过的,而且就在最近两周。所以正好可以说道一下。介绍这一段代码我最初是在contrib模块里面tracking模块的sample原创 2017-08-07 10:36:19 · 5694 阅读 · 1 评论 -
人脸识别源码运行指南
前言人脸识别的源码放出来之后,不少小伙伴下载之后仍然不能运行成功。于是被逼无奈,把源代码改成了我认为最容易运行成功的版本。即使如此,我认为写下这个指南还是有必要的。因为反复回答相同的问题实在是太累人了。 重复一遍,本文环境为win7+vs2015+opencv3.2_with_contrib源码下载地址公众号回复:人脸识别源码或者 网盘: http://pan.baidu.com/s/1b1J2原创 2017-06-26 11:11:12 · 7875 阅读 · 29 评论 -
OpenCV实践之路——opencv与MFC强强联合打开图片
本文由@星沉阁冰不语出品,转载请注明作者和出处。 文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/51348394 微博:http://weibo.com/xingchenbing opencv在图像处理和计算机视觉算法方面无疑是非常强大的,但是其GUI界面却是差强人意。当然原因很简单,这不是OpenCV开发人员关注的重点,他原创 2016-05-08 23:43:25 · 12773 阅读 · 26 评论 -
OpenCV实践之路——MFC与OpenCV联合打开摄像头
在之前的一篇博客中已经记录了如何打开一张图片,能打开图片之后,自然就是尝试打开摄像头。在之前打开图片的时候已经知道了怎么应用按钮控件和图片控件,虽然都没记录。。。最最重要的是,知道了怎么让MFC与OpenCV的数据交互——Mat与CImage相互转换。有了之前的基础,打开摄像头就可以得心应手了。还是直接上代码,然后再说问题:void CMFCtestDlg::OnBnClickedButton原创 2016-05-09 00:15:43 · 9165 阅读 · 6 评论 -
C++调用Python处理vector
前言C++和Python都是当前最流行的语言之一,其强大的功能毋庸置疑,它们分别在不同甚至相同的领域发挥着至关重要的作用。C++是底层开发中起着中流砥柱的作用,屹立多年依然势头强劲不露颓势。而Python在最近大热的数据挖掘和人工智能领域独领风骚。而且Python为数极其众多的库支持几乎可以满足各个领域的开发者的需求。虽然他们都是非常强大的工具,但是在处理特定任务的时候,有时候会存在着方便与否的问题原创 2017-03-28 20:02:14 · 6454 阅读 · 4 评论 -
OpenCV实践之路——Qt中用opencv提取和匹配SIFT特征点
SIFT是我本科毕业设计就开始研究的一个算法,也是视觉领域极为经典的一个算法。SIFT算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。 Lowe将SIFT算法分解为如下四步:1. 尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数原创 2016-02-19 08:23:46 · 5809 阅读 · 1 评论 -
OpenCV实践之路——矩形图片的对角线分割
在假期之前曾试图实现矩形图片对角线分割这么一个简单的任务。结果正方形的实现了,详见 OpenCV实践之路——方形图片对角线切割。矩形的时候总是出现一些我不能理解的错误,大概值指针越界之类的。当时对于图像像素边界的理解非常有限,这就是所谓的历史局限性吧。今天借助IamgeWatch对像素进行了深入的探究之后,详见OpenCV实践之路——像素初探。对于像素操作的理解前所未有地清晰。于是再次去实现了一下原创 2016-02-21 19:17:45 · 3898 阅读 · 1 评论 -
OpenCV实践之路——圆形切割和矩形切割
之前对于Opencv的学习,一直是一种查找资料然后运行别人的代码的状态。自己最多修改个变量什么的。直到上学期期末的时候才开始有意识地给自己让自己解决一些自己提出的问题。也许在大神们看来这些问题太多简单甚至幼稚,但是这就是现在的我给自己找的一些问题。能发出来的都是解决的,还有很多没有解决暂时没办法发出来。只能等不知道什么时候的以后,实现之后再发出来了。现在除了这些小练习之外,还在做的就是实现何凯明的原创 2016-02-22 23:46:04 · 15044 阅读 · 6 评论 -
OpenCV实践之路——TrackBar调整图像的亮度和对比度(OpenCV1和OpenCV2两种版本)
由于最开始接触的就是opencv2.0之后的版本,所以之前在看到Opencv1.0版本的C接口写就的代码时,感觉到诸多的不适应不习惯。今天做出了一个小小的突破,那就是见到opencv1.0的代码,我竟然想到用opencv2的C++版本重新实现一遍。顺便还简单了解了两个版本函数的变化和异同。本文前半部分主要参考下面的文章:HighGUI: Creating Interfaces。主要内容就是创建原创 2016-02-25 20:32:43 · 3011 阅读 · 0 评论 -
OpenCV实践之路——基于暗通道先验的去雾算法简单实现
研究暗通道去雾是去年的事情了,当时正值全国范围内雾霾肆虐。下面这张图片可谓深得人心。但是由于当时水平所限,未能实现。在寒假努力了一个假期终于可以简单的实现一下了,虽然还是有一些奇奇怪怪的问题。。。首先还是简单说下暗通道先验去雾算法,这里只是记录性质,详细推荐看论文,写的非常好:雾图模型I(x) ——待去雾的图像J(x)——无雾图像A——全球大气光成分t——折原创 2016-03-09 17:22:12 · 16574 阅读 · 9 评论 -
OpenCV实践之路——画出时钟并动态同步系统时间
本文并非原创,是在外网上看到的一个实例。原文参见Clock。不是翻译,也不是转载,只是自己实现了下,一点小记录。代码略有改动。过程大致分为两步:第一步,画出时钟;第二步,同步系统时间。其中第一步是跟opencv相关,第二步不太了解,不作过多记录。一个简单的时钟就是线段和圆的组合。包括最外围的圆,60根刻度线(其中12根整点刻度线)和时针分针秒针三根长的线段。画圆最简单:创建一个长宽相等转载 2016-02-28 23:25:41 · 4116 阅读 · 5 评论 -
VS2015——MFC加载图片遇到的问题
昨天花了一个晚上把MFC入门教程:1天深入浅出MFC看了一遍,虽然示例很少,但是真是让我有种拨云见日的感觉,感谢作者。于是今天就开始实践,按照七十一雾央的博客《MFC游戏开发》笔记三 游戏贴图与透明特效的实现,开始一步一步的跟着做,期间有如下问题。1.资源文件——添加——资源——Bitmap——导入:导入BMP图片失败;解决方法:用系统自带的画图工具另存为bmp图片再导入即原创 2016-01-27 15:54:06 · 10528 阅读 · 2 评论 -
解决OpenCV和Visual Studio更新之后删除附加依赖项继承的问题
把OpenCV由2.4.10更新到3.0版本,Visual Studio由2010更新到2015社区版。重新配置后问题来了,编译程序老是显示“fatal error LNK1181: 无法打开输入文件“opencv_calib3d2410.lib”。原因是附加依赖项的继承的值仍然是老版本的opencv库,本文解决了如何删除老版本的附加依赖项的问题。原创 2015-10-06 21:30:13 · 6198 阅读 · 3 评论 -
opencv第一个测试程序遇到的问题及解决
1.fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突。 解决方案:参见解决方案原创 2015-05-27 13:55:57 · 1361 阅读 · 0 评论 -
OpenCV实践之路——方形图片对角线切割
学习opencv和C++已经有一段时间了,现在开始写一些小程序练手。在这里做一个记录。之前在群里看到有人求助如何沿对角线把一幅图像分成两幅图像,自己就试了一下,然而现在只能把方形图片分开,矩形的还在研究中。主要方法就是先把矩形图片resize成方形的,然后用循环分割开来。对于矩形图片的对角线分割,不知道为啥一直能成功。还在研究中。方形图片分割实现代码如下:#include#i原创 2016-01-20 13:22:44 · 3270 阅读 · 0 评论 -
OpenCV实践之路——像素初探
安装ImageWatch之后,对于图片每一个点的像素值一目了然。由于之前对于像素点的操作老是出现各种问题,比如上次想要实现矩形图片的对角线切割就是一直没能成功。今天借助IamgeWatch正好探究下Mat数据结构中像素到底是怎么访问的。我用了一种比较直观的方式来访问像素。即利用at函数: cout (Point(3,2)) = " (Point(3, 2)) << endl (P原创 2016-02-21 18:06:22 · 1958 阅读 · 0 评论 -
OpenCV检测篇(二)——笑脸检测
前言由于本文与上一篇OpenCV检测篇(一)——猫脸检测具有知识上的连贯性,所以建议没读过前一篇的先去阅读一下前一篇,前面讲过的内容这里会省略掉。笑脸检测其实也没什么可省略的,因为跟在opencv中,无论是人脸检测、人眼检测、猫脸检测、行人检测等等,套路都是一样的。正所谓:自古深情留不住,总是套路得人心。发挥主要作用的函数有且仅有一个:detectMultiScale()。前一篇猫脸检测中已经提到过原创 2017-04-07 09:05:53 · 19108 阅读 · 9 评论 -
C++从零实现深度神经网络之六——实战手写数字识别(sigmoid和tanh)
本文由@星沉阁冰不语出品,转载请注明作者和出处。文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/53704085微博:http://weibo.com/xingchenbing 之前的五篇博客讲述的内容应该覆盖了如何编写神经网络的大部分内容,在经过之前的一系列努力之后,终于可以开始实战了。试试写出来的神经网络怎么样吧。一、数据准原创 2016-12-19 15:06:52 · 17746 阅读 · 28 评论 -
C++从零实现深度神经网络之五——模型的保存和加载以及画出实时输出曲线
本文由@星沉阁冰不语出品,转载请注明作者和出处。文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/53700027微博:http://weibo.com/xingchenbing 一、模型的保存和加载在我们完成对神经网络的训练之后,一般要把模型保存起来。不然每次使用模型之前都需要先训练模型,对于data hungry的神经网络来说原创 2016-12-17 10:32:55 · 7282 阅读 · 5 评论 -
C++从零实现深度神经网络之四——神经网络的预测和输入输出的解析
本文由@星沉阁冰不语出品,转载请注明作者和出处。文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/53698627微博:http://weibo.com/xingchenbing 在上一篇博客的结尾提到了神经网络的预测函数predict(),说道predict调用了forward函数并进行了输出的解析,输出我们看起来比较方便的值。原创 2016-12-16 23:10:51 · 5739 阅读 · 1 评论 -
C++从零实现深度神经网络之三——神经网络的训练和测试
本文由@星沉阁冰不语出品,转载请注明作者和出处。文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/53677630微博:http://weibo.com/xingchenbing 在之前的博客中我们已经实现了Net类的设计和前向传播和反向传播的过程。可以说神经网络的核心的部分已经完成。接下来就是应用层面了。要想利用神经网络解决实际原创 2016-12-16 21:57:20 · 4909 阅读 · 2 评论