本科用过opencv2..3.1版本,当时按照 http://wiki.opencv.org.cn/index.php/首页 上面的步骤安装的,而且使用的是IplImage和CvMat等C接口的的API。处理了个镇江市交通局的视频中的车辆位置提取的项目(跟着导师干),当时觉得很重要,恩 也就仅限很重要。

现在重新审视OpenCV觉得很好的东西,实在不行都能够自己没事写程序玩。

正文

采用Opencv2.4.10版本。因为最新的OpenCV是3.0的虽然有了alpha版本和beta版本,但是觉得还是不太稳定,过几个月在用好了。

        本人安装环境win8.1 企业版+VS2013+opencv2.4.10:直接使用build和使用cmake方法都尝试过。

         其实opencv中就两个文件夹 一个build 一个sources,第一个是人家opencv小组帮咱预编译了下,第二个是人家原本的部分,所以偷懒的使用第一个。

参考自 http://www.cnblogs.com/freedomshe/archive/2012/04/25/2470540.html

所以安装部分就不重复造轮子了。关键的几点:在选择是x64 还是x86,这个虽然是看系统的,但是还是取决于编译器的编译版本。虽然在64位上运行32位无压力,但是相反就有问题。所以如果 虽然是64位系统,但是因为vs编译器默认就是win32位下编译的,对于初学者还是只添加32位的lib,dll什么的就好,不然 万一搜索到所需要的dll(比如把搜索路径中64的排在86的前面),发现不是所需要的版本,那么编译器就报错。

不过按照上面推荐的博客中的方法在安装完之后会有几个出问题的地方。

FAQ:1.对于只使用build连接的方法来说,使用例子程序的时候会出现imread的时候出错,通过断点发现imread读到了图像的大小但是其中的data却是没东西,这个被归结为库连接出现了问题。解决方法有:

(1)、按照推荐的安装会发现在debug的时候有可能会编译器去读取release版本的lib,问题参考:

http://www.cnblogs.com/eyeszjwang/articles/2418354.html “也就是在Debug模式下应该选择带'd'的lib,在Release模式下就选择不带'd'的lib。而实际我们在配置OpenCV环境的时候往往图方便将Debug和Release的目录都一起加了进去,再修改起来也比较麻烦。所以这时候最简单的办法就是在程序的开始加上:#pragma comment(lib,"opencv_highgui231d.lib")” 也就是想调用哪个版本的lib就使用哪个版本的就好。
个人测试结果:无效

              (2)、删除推荐博客中将所有的lib都放在一起的操作,只添加debug的lib。个人测试结果:无效

             (3)、曲折的方法使用cvLoadImage装载图片,使用cvReleaseImage释放图片,但是这种是在cpp中使用c接口,个人接受不了。

             (4)、参考http://bbs.csdn.net/topics/350004415 中的加载什么debug的dll。个人测试:无效





2:采用cmake的方法自己编译opencv/中的sources文件夹解决1中的问题。 参考自

http://www.cnblogs.com/freedomshe/archive/2013/01/11/win7_vs2012_opencv_rebuild.html

这样可以调试的时候自己断点进入人家opencv的源码级别部分。不过也有问题见下面的3。

在下载cmake的时候发现这个cmake只有32位的版本(当时还说怎么没64位的呢,不过是多想了)在使用cmake进行编译的时候需要添加一个新的文件夹路径(一定不要中文路径)其实这里发现原来的build就是opencv小组帮咱预编译了的,而且这里按照推荐的博客中的方法 发现生成了6g多的文件,通过简单的清理解决方案的方法的确剩到最后200m(可是人家说会剩下3g的,我了个去的,也许就是这一步导致下面的问题3,如果硬盘够大,那么到这部就终止就行)





3:通过2中的推荐的方法成功的cmake了,然后按照里面的方法加了新的dll和lib等路径和并在编译器中只添加了debug的lib(暂时用不到release版本)。当屁颠屁颠的调试opencv源码级别的代码时发现显示某些pdb模块不存在。这时候两个方法:





(1)打开微软符号服务器下载所需符号,参考:http://www.tuicool.com/articles/R3EBF3M。不过这个只是下载微软的不是opencv的。

(2).其实细心的人就会发现在 \opencv\build\x86\vc12\staticlib,下面就有附带的pdb,只要把这个文件夹路径加到系统的环境变量就行(我这是x86的版本,而且这里的路径就是解压opencv中的两个文件夹中的build的文件夹)。 这个方法不行,因为对应编译的dll要对应的pdb,想要真正进入源码,记得执行清理解决方案那个步骤的时候不要把pdb清理了。





资料:1、《OpenCV教程——基础篇》和《学习OPencv》   

 2、《mastering opencv with practical computer vision》

3、《opencv 2 computer vision application programming cookbook》

4、《opencv2计算机视觉编程手册》

5、《基于OpenCV的计算机视觉技术实现》

6、官方文档

相比较来说,1的是基于c接口的,显得老旧了些,从官方文档就能看出其中的c的不足,推荐使用cpp接口的(作者是大神,这就不评论了,只是书的内容不适合我,个人喜欢cpp)。

    2和3是老外12年和13年出的书,还是很好的。不过觉得比较适合有个基础的底子的时候,其中还有介绍在ipad和android上的编程,很是不错。

   4.这一两年刚出来的,评价很不错,而且网上没有电子版,只有去买纸质版。5是08年出版的,略老了。

学习:其实觉得最好的入门学习版本我觉得应该是官方文档。特别是看下面论坛部分中2的网站,其中还有部分的中文翻译版本。官方文档在下载opencv的时候就出现在里面了,2.4.10的是在opencv\build\doc 部分。因为不同版本 它的位置会变,但是一定自带了。其中有《opencv_tutorials》可以入门。还有《opencv2refman》可以查api。在对照着前面的入门和下面论坛2中的部分翻译,一起学习。

在opencv\sources\samples中有不同平台、接口的例子代码。粗略了看了下cpp的例子最多。

×××说到opencv的真正源码,在opencv\sources\modules\core\src里面,这里中那个core就是对应不同的文件夹,在每个文件夹的src中就是源代码了。暂时说有超过20w行 一共。

论坛:1、http://wiki.opencv.org.cn/index.php/首页 是老站

2、http://www.opencv.org.cn/forum.php?mod=forumdisplay&fid=1&page=1新站

3、http://opencv.org/ 是opencv主站,源代码放在sourceforge开源网站上。

4、http://52coding.com/opencv 这个还是不错的,不过没怎么关注,但是进去了,一定会有收获。下一步就打算进去看看。

opencv1-安装及资料的更多相关文章

  1. 一、tars简单介绍 二、tars 安装部署资料准备

    1.github地址https://github.com/Tencent/Tars/ 2.tars是RPC开发框架,目前支持c++,java,nodejs,php 3.tars 在腾讯内部已经使用了快 ...

  2. Altium Designer入门学习笔记1.软件安装与资料收集

    一.软件安装 微信:http://url.cn/5Eudzt9 关注微信公众号"软件安装管家",点击"软件目录",弹出"软件目录",点击进入 ...

  3. Asp.netCore之安装centos7 资料收集

    虚拟机的安装和centos的安装看博友的文章:https://www.cnblogs.com/zhaopei/p/netcore.html ifconfig 在centons中用终端写命令比较费劲,可 ...

  4. android 静默安装 卸载 资料汇总

    1. android + eclipse + 后台静默安装(一看就会) 2. 适用于android1.5以下版本apk静默安装 3. error: INSTALL_FAILED_SHARED_USER ...

  5. Ant, JUnit以及Sonar的安装+入门资料

    Ant 感觉是个和Make/Grunt类似的东东,build一个项目用的.安装很容易,跟装JDK类似,就是解压->设环境变量->没了.注意装之前要先确认Java装好了(有点废话). 下载地 ...

  6. [树莓派(raspberry pi)] 01、在linux环境下给树莓派安装系统及入门各种资料

    1.预准备 进入帮助页面https://www.raspberrypi.org/help/,可以直接看到GET START WITH PASPBERRY PI,点击进入: 接下来会引导你检查配件是否齐 ...

  7. 我的MySQL5.6免安装版配置过程

    最近打算学习MySQL,第一步就是安装.下载到一个面安装版.解压到我的D盘的mysql目录. 弄了一个最简单的配置文件.目录中只有一个my-default.ini,基本没啥用.在网上弄了一个my.in ...

  8. 在VS2012下不安装VS2010编译VS2010的工程

    虽然一路追随这VISUAL SUTDIO在编程,但是断档的情况还是有的,最近一次硬盘问题使得安装了所有的VS2003-VS2012的机器硬盘挂了,无奈只能够安装了,不过觉得没啥用了,就安装一个VS20 ...

  9. ubuntu下安装JDK详解

    码农博客 即将到期,现将博客中部分文章转载到博客园.本文发表与2012年,转载时略有删减 安装JDK其实只要搞定两个问题,安装目录以及配置文件.如果你只想要快速安装JDK,请略过此部分直接看安装篇. ...

  10. Joomla安装图文教程 (送 Joomla 中文语言包)

    1.首先 下载 Joomla  源程序 首页: http://www.joomla.org/download.html 下载: download 2.为论坛 创建数据库.进入cPanel面板,选择my ...

随机推荐

  1. Linux账户密码过期安全策略设置

    在Linux系统管理中,有时候需要设置账号密码复杂度(长度).密码过期策略等,这个主要是由/etc/login.defs参数文件中的一些参数控制的的.它主要用于用户账号限制,里面的参数主要有下面一些: ...

  2. Percona XtraBackup User Manual 阅读笔记

    XtraBackup XtraBackup 2 安装XtraBackup 2.1 安装XtraBackup binary版本 2.1.1 yum的安装方法: 2.1.2 直接下载rpm包安装 3 Xt ...

  3. 十五天精通WCF——第五天 你需要了解的三个小技巧

    一: 服务是端点的集合 当你在开发wcf的时候,你或许已经注意到了一个service可以公布多个endpoint,确实是这样,在wcf中有一句很经典的话,叫做“服务是端点的集合",就 比如说 ...

  4. Sql Server之旅——第二站 理解万恶的表扫描

    很久以前我们在写sql的时候,最怕的一件事情就是sql莫名奇妙的超级慢,慢的是撸一管子回来,那个小球还在一直转...这个着急也只有当事人才 明白,后来听说有个什么“评估执行计划“,后来的后来才明白应该 ...

  5. 带进度条的 jQuery 文件拖放上传插件

    jQuery File Uploader :jQuery File Uploader 是一个 jQuery 文件拖放上传插件 兼容性判断 下载:https://github.com/danielm/u ...

  6. Visual Studio 2012中文旗舰版(序列号和下载地址)

    序列号:YKCW6-BPFPF-BT8C9-7DCTH-QXGWC 链接: http://pan.baidu.com/s/1pLGhDjl 密码: 3udq

  7. json数据处理实战:Kafka+Flume+Morphline+Solr+Hue数据组合索引

    背景:Kafka消息总线的建成,使各个系统的数据得以在kafka节点中汇聚,接下来面临的任务是最大化数据的价值,让数据“慧”说话. 环境准备: Kafka服务器*3. CDH 5.8.3服务器*3,安 ...

  8. System.getProperty()引起的悲剧--您的主机中的软件中止了一个已建立的连接

    我已无法形容此刻我的心情.. 本来是已经写好的netty5的demo程序,server和client之间创建tcp长连接的..然后随便传点数据的简单demo..然后今天试了一下tcp粘包的例子,用到了 ...

  9. Hibernate4中使用getCurrentSession报Could not obtain transaction-synchronized Session for current thread

    架个spring4+hibernate4的demo,dao层直接注入的sessionFactory,然后用getCurrentSession方法获取session,然后问题来了,直接报错: Could ...

  10. nodejs模块——Event模块

    Node.js中,很多对象会发出事件.如,fs.readStream打开文件时会发出一个事件. 所有发出事件的对象都是events.EventEmitter的实例,可以通过require(" ...