zoukankan      html  css  js  c++  java
  • opencv1-安装及资料

    本科用过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).其实细心的人就会发现在 opencvuildx86vc12staticlib,下面就有附带的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的是在opencvuilddoc 部分。因为不同版本 它的位置会变,但是一定自带了。其中有《opencv_tutorials》可以入门。还有《opencv2refman》可以查api。在对照着前面的入门和下面论坛2中的部分翻译,一起学习。
    在opencvsourcessamples中有不同平台、接口的例子代码。粗略了看了下cpp的例子最多。
    ×××说到opencv的真正源码,在opencvsourcesmodulescoresrc里面,这里中那个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 这个还是不错的,不过没怎么关注,但是进去了,一定会有收获。下一步就打算进去看看。

  • 相关阅读:
    jsp和servlet有什么区别?
    JavaScript中null、undefined有什么区别?
    Java中的信号量Semaphore
    Java中实现线程通信方式有哪些?
    说说对于sychronized同步锁的理解
    线程的run()方法和start()方法有什么区别?
    高并发大型网站架构设计
    高并发高流量网站架构(转)
    构建高并发高可用的电商平台架构实践
    自己搭建CDN服务器静态内容加速-LuManager CDN使用教程
  • 原文地址:https://www.cnblogs.com/shouhuxianjian/p/4529193.html
Copyright © 2011-2022 走看看