自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

邓无邪的博客

回首向来萧瑟处,归去,也无风雨也无晴

  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 深入理解灰度值开运算闭运算(你一定已经知道了二值图开运算闭运算吧)

二值图像的膨胀和腐蚀几乎每个学习图像处理的人很快就了解了,由腐蚀和膨胀这两个简单的操作的结合而引申出来的开运算和闭运算也是非常经典的形态学处理方法。在大多数的情况下,我们都是对二值图像(也就是图中只有黑白两种像素)进行开运算和闭运算,对于它们的效果也非常熟悉了。正如我们耳熟能详的:闭运算:连接细小处;开运算:断开细小处;那么如果我们的操作对象是一幅灰度图,而不是只有黑白两种像素的二值图像呢?其实很...

2018-06-12 17:44:55 8814

原创 Ubuntu16.04下编译OpenCV2.4.13静态库(.a文件)

我们在做项目的时候,经常用到的都是链接动态库,在Linux平台中就是.so文件,我的另外一篇文章介绍的就是如何生成动态库,可以参看《ubuntu 16.04下安装使用OpenCV2.4.13(动态库.so)》。但是有时候,我们仍然希望通过静态调用的方式来使用OpenCV,这个时候就必须要生成可用的静态库文件了。其实方法也很简单,和生成动态库差不多,只是在编译的时候做一些小修改即可。整个的详细编译步...

2018-03-27 14:17:23 6789 2

原创 Windows10下使用VMware Player安装Ubuntu16.04 LTS

其实如果要使用ubuntu,安装双系统是最稳定的方法,但是如果工作经常要来回使用两个系统而又不具备两台电脑的话,来回切换系统非常麻烦,所以有时候要执行一些简单的任务可以通过虚拟机安装一个ubuntu系统来做到。现在比较好的虚拟机有Oracle的virtual box和VMware,但是virtual box的功能不是很强大,所以最后还是选择了免费的非商业版用途的VMware Player。

2018-01-04 10:14:13 13201 2

原创 用C调用C++函数来看extern "C"的作用

extern "C" 这个东西不知道在书上和别人的代码里看到过多少次了,但是就是从来没有好好了解过,结果有一次项目对接问题就出在了这里。果然遇到问题才是学习的最好途径啊!情况是这样的:我用C++代码写了大一堆东西,然后我要把自己写的东西生成一个动态库给别人调用。

2017-08-29 18:08:40 853

原创 VS2015自己生成DLL库

之前写过一篇自己生成静态库的文章,《VS2010/2013下生成并使用静态库》现在需要生成动态dll给别人用,所以就记录一下生成的过程。Step 1:新建一个Visual C++项目随便选择Win32控制台或者Win32项目都可以。下一步才是真正选择生成的项目类型,即使下一步你选错了,最后在项目属性内还是可以更改,后面说更改的方法。然后点击“确定”,

2017-08-23 11:34:21 4571

原创 静态调用OpenCV库以及生成自己的静态库

我们暂且不讨论静态库和动态库谁好谁坏了吧,设计初衷不同而已。而且有时候你在和别人对接项目的时候,对方要求你给一个干干净净的lib文件和h头文件(或者一个exe)就行的时候,你总得满足对方的要求吧。试想一下要是我们从网上下载所有的软件都要我们附带下载很多dll,然后自己去配置如何调用的话,那得是何等的烦人!所以静态调用别人的库,以及把自己的代码生成静态库给别人调用的方法还是得掌握。如何自

2017-08-22 21:22:40 11429

原创 VS2015+CMake编译OpenCV2.4.13静态库

之前用CMake自己编译过OpenCV2.4.13的动态库,现在项目要求要用静态库,没办法只能重新来一遍。OpenCV已经提供编译好的库了,我们为什么还要自己编译?主要还是因为官方提供的版本由于要适配所有人的需求,所以只能是标准版本,可能和你自己需要用的某些库并不匹配,这个时候就很容易出错了。而且还有一个很方便的地方就是,自己编译一次,在调试的时候是可以追踪到源代码的,你如果用官方提供

2017-08-22 16:16:07 5968 1

原创 ubuntu 16.04下安装使用OpenCV2.4.13(动态库.so)

本来项目是在Windows下写的,结果对接的时候发现要在Linux下实现,没办法只能重新移植了。以前在ubuntu上使用过OpenCV,可惜系统已经重新安装过,只能重新来一遍了,索性就记录一下安装过程,免得下次再有重新安装的可能。要用OpenCV,最好的还是用源代码自己编译一下,这样在使用的过程中出现问题的可能性比较小。所以可以的话,就不要直接使用官网下载的已经build好的库来配置。不过在lin...

2017-08-21 14:40:44 6654

原创 所谓的特征值和特征向量

在线性代数的最后,我们都会学矩阵的特征值分解,我们知道一个方阵A特征值分解后就得到特征向量和特征值了。那么,这个所谓的特征值和特征向量到底是什么东西呢?首先给出概念上的一种解释。所谓的特征值和特征向量,最重要的是理解“特征”这两个字,在纯数学的定义下,并不能很明白地理解到底为什么叫做特征值和特征向量。但是举一个应用例子,可能就容易理解多了。在图像处理中,有一种方法就是特征值

2017-07-31 20:36:36 65329 28

原创 Python中单引号,双引号,3个单引号及3个双引号的区别

1. 单引号和双引号在Python中我们都知道单引号和双引号都可以用来表示一个字符串,比如str1 = 'python'str2 = "python" str1和str2是没有任何区别的。我们知道Python以其易用性而著名,所以刚开始看教程学习看到单引号和双引号都可以使用会以为这是Python为了方便程序员,随便用哪个就好,不用担心用错。其实,背后的原因不只是这么简单。举个例子

2017-07-26 10:21:23 257055 51

原创 ubuntu16.04安装Anaconda

Step1:官网下载linux版本的安装包下载链接:https://www.continuum.io/downloads#linuxAnaconda和Python版本是对应的,所以需要选择安装对应Python2.7版本的还是Python3.6版本的,根据自己的需要下载合适的安装包。如果ubuntu系统是64bit,记得下载64bit的:安装包大概有500M,

2017-07-11 16:08:04 64293 10

原创 ubuntu下安装python3.5(系统默认自带的是python2.7)

正常情况下你的ubuntu系统是已经自带了python的,不过自带的版本是2.7的,而现在的Python3.5和2.7其实已经非常不同了,作为开发学习的话还是新版本的Python3.5吧。下面是安装过程:1. 首先python不在ubuntu的软件仓库,所以我们需要去PPA上找软件源,打开终端,输入下面的命令:sudo add-apt-repository ppa:fkrull/d

2017-07-01 22:16:14 14106

原创 ubuntu下安装使用Qt

在Windows上用习惯了VS这种大型编译环境,一下子换到Linux上就有点手足无措了。现在做一个项目,需要用到Qt,就把安装的过程记录一下,以备查看。(谁知道我的ubuntu会不会哪天突然就崩掉了!!!!)Step1:下载源代码在官网的版本下载页面上下载自己喜欢的版本,我下载的是4.8. 这是Qt的开源版,所以是可以免费使用的。下载好压缩包:qt-everywhere-opens

2017-07-01 18:12:18 1986

原创 Ubuntu16.04下安装编译Caffe

工作要用到Caffe,网上查了很多安装方法,按照别人的流程走不一定都能成功,所以就把自己的安装过程记录一下,以备查看。Step1: 安装需要的通用依赖sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compile

2017-06-30 15:45:11 9467

原创 Linux(ubuntu系统)下使用FreeImage库

最近在搞一个图像处理的项目,需要用到FreeImage,之前在Windows下用过,很简单,因为FreeImage官网提供了可供使用的静态库动态库,直接包含就行了。现在需要在Linux平台下使用,发现官网并没有提供直接编译好的库,需要自己编译。安装过程也遇到好几个大坑,所幸终于解决了。记录一下自己下载编译安装的步骤:1. 下载FreeImage源码http://freeimage.

2017-05-09 14:20:24 5489 1

原创 ubuntu16.04下成功安装搜狗输入法

因为工作原因要用linux,看了大家的经验,对于新手最容易上手的还是ubuntu,所以就下载安装了ubuntu,第一次用,表示:我们真是被Windows系统惯坏了,用ubuntu这种系统简直让人崩溃。安装完系统第一件事就是安装一个可以使用的汉语输入法了,查了一下目前中国比较大的输入法支持linux的也就搜狗了,所以选择安装搜狗输入法。凭良心讲,就冲这一点,搜狗输入法还是不错的。在安装之

2017-05-08 15:34:33 55236 11

原创 OpenCV笔记:pyrDown()函数和pryUp()函数的使用

OpenCV实现了用于创建图像金字塔的两个函数pyrDown()和pryUp()。图像金字塔是一种经典的图像多尺寸描述方法,它将降采样和平滑滤波结合在一起,对图像进行多尺度表示。图像金字塔由不同尺寸的图像叠加而成,通常每一层的尺寸都是上一层的一半。通常用于高效的图像分析,这种处理技术的意义在于:我们在对图像进行处理时,大多是要着眼于图像中有意义的部分,而同一幅图像中可能含有不同尺度下“

2017-03-17 15:35:51 35695 2

原创 OpenCV笔记:compare()函数介绍

OpenCV中定义在core.hpp中的compare()函数原型如下:void compare(InputArray src1, InputArray src2, OutputArray dst, int cmpop);函数作用:按照指定的操作cmpop,比较输入的src1和src2中的元素,输出结果到dst中参数解释:src1:原始图像1(必

2017-03-16 17:27:16 19458

原创 OpenCV学习笔记:二值图像的腐蚀和膨胀的原理

腐蚀的原理:二值图像前景物体为1,背景为0.假设原图像中有一个前景物体,那么我们用一个结构元素去腐蚀原图的过程是这样的:遍历原图像的每一个像素,然后用结构元素的中心点对准当前正在遍历的这个像素,然后取当前结构元素所覆盖下的原图对应区域内的所有像素的最小值,用这个最小值替换当前像素值。由于二值图像最小值就是0,所以就是用0替换,即变成了黑色背景。从而也可以看出,如果当前结构元素覆盖下,全

2017-03-07 21:43:01 12860 1

原创 使用VS在64位平台下编译代码,生成64位dll

最近要把一个之前在32位平台下编译的项目改成64位平台,之前从来没搞过关于64位的东西,所以到处查资料,所幸搞成功了,把过程记录一下,防止以后忘记。首先声明:64位平台无法直接调用32位dll,32平台也无法直接调用64位dll。使用工具:VS2010首先,用VS2010打开之前的项目,这时候项目的平台是32位的,如下图所示:点击Win32那

2017-01-04 14:30:57 33081 1

原创 STL容器的reserve()函数和resize()函数解析

以vector为例,可以用reserve()和resize()函数来为容器预留空间或者调整它的大小。不过从它俩的名字上可以看出区别:reserve():serve是“保留”的词根,所以是用来保留,预留容量的,并不改变容器的有效元素个数。resize():size是“大小”的意思,它主要用来调整容易有效元素的个数,有时候也会造成容量变大。先解释两个概念:容量:即capacit

2016-12-20 12:44:18 1544

原创 在自己的项目中调用别人的库的方法(static lib库,dynamic lib库以及dll动态库)

众所周知,出现.lib, .dll这种文件的原因是为了保护源代码,这个就不细说了。用OpenCV的开源库来举个例子看一下就知道了:bin文件夹里面放的都是dll文件;lib文件夹里面放的都是伴随dll文件的动态lib文件;staticlib文件夹里面放的才是真正的静态lib文件,和dll文件是独立的;所以可以看出,lib文件是有静态lib和动态llib之

2016-12-07 17:05:44 10340 5

原创 以OpenCV库为例讲解如何在VS中配置第三方动态库

正常情况下,你拿到的别人的第三方动态库(静态库调用方式这里不讲,有另外一篇文章)至少应该包含下面三种文件:1. 头文件,这个一般放在include这样字眼的文件夹下,比如OpenCV的:然后include里面还分成了许多文件夹,便于管理。2. dll文件,这个一般放在bin这样字眼的文件夹下,比如:3. dll配套的动态lib文件,这个就一般放在li

2016-12-07 17:03:24 6492

原创 VS2010/2013下生成并使用静态库

一直都是懵懵懂懂自己写些东西,从来没去了解过该怎么把自己的库给别人用。现在用到了,就把过程记录一下,也分享给大家,如果有用的话!第一部分:生成静态库,即.lib文件第一步:新建一个静态库(static library)项目打开VS,文件->新建->项目,选择“Win32项目”(备注:其实这里选择“Win32控制台应用程序”也是一样的,因为下一步才是具体的选择你的项目是什么类型,

2016-12-03 17:05:34 15343 1

原创 OpenCV学习笔记:resize函数改变图像的大小

OpenCV提供了resize函数来改变图像的大小,函数原型如下:void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR );先解释一下各个参数的意思:src:输入,原图像,即待改变大小的图像

2016-11-21 16:17:55 93326 4

转载 模板函数的编译模式(模板函数不支持分离编译)

1.函数模版的编译模式分两种:完全包含编译模式和局部编译模式(需要用export关键字)2.不同的编译器对这两种编译模式的支持各不相同,但一般都支持完全包含编译模式,具体支持情况需要参照具体使用的编译器文档模版函数和普通函数在使用的时候有一定的区别:(1)普通函数在使用的源文件中直接include该函数的声明即可(2)模版函数在使用的源文件中既要include模版函数的声明,也

2015-12-16 11:27:14 2177

原创 vector中删除第k个元素的巧妙方法

假设我们定义了一个vector如下:vector v;如果要删除第k个的话,应该这样写:(1)如果k是第0个vector(v.begin() + 1, v.end()).swap(v);(2)如果k是最后一个,v.pop_back();(3)其他vector v_c(v.begin() + k + 1, v.end());v.resize(k);

2015-11-11 10:15:24 1264 1

原创 error MSB8008: 指定的平台工具集(v110)未安装或无效。请确保选择受支持的 PlatformToolset 值

如果你的电脑上有两个不同版本的VS,或者你的程序拷贝到别人的电脑上去运行,或者你是从别人那里拷贝来的项目,而你们俩用的VS版本不一样,就会在运行的时候出现这个问题,这个错误中的v110是VS2012使用的平台工具集,我是在使用VS2010打开的时候出现了这个错误,解决方法其实也很简单:Project->Properties->Configuration Properties->Ge

2015-11-11 10:05:29 2759

原创 为什么C++中声明和定义要分开写

现在开始写项目了,你会发现我们一般都要写一个cpp,对应的还得有一个h文件,那么为什么在C++中我们要这么做?.h就是声明,.cpp就是实现,而所谓分离式实现就是指“声明”和“定义”分别保存在不同的文件中,声明保存在.h文件、定义保存在.cpp文件中。       那么将声明和定义分离有什么意义吗?首先从非分离式(声明的同时给出定义)看,其内容一般保存在.h文件中,以供多个源文件引用。

2015-11-11 09:42:45 3768

ORB_An efficient alternative to SIFT or SURF

讲解ORB特征匹配方法的一篇经典论文,英文原版。。。ORB其实是对SIFT的一个非常好的改进,SIFT匹配速度实在是太慢了。

2017-07-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除