写在前面
一直以来都想能够写点什么,曾经也想过能写点小说,散文什么的。到了后面才发现自己的文笔真的很差劲!作为纯工科生,也只能写点有关技术方面的东西了。随着不断的学习,积累的东西也就越来越多,如果不能够有一个很好的方式去管理它,随着时间的的推移,会发现当初已经学会了的东西,现在已经忘的差不多了,到头来还得重新的翻资料回顾。我觉得现在的我需要去管理我的知识,同时还可以提高我自己的能力,养成一个好的习惯!so 这些就是我开始写简书的最简单的想法,记录我的学习——因为他们是我通过实践获得的。本文也是作为我写文章的开始吧。
最近一直在接触计算机视觉、机器视觉方面的知识,还跟着大佬学了一些slam方面的东西。(别担心,我还是小白中的小白。。。。从入门到放弃。。。),也仅仅是了解皮毛,需要的学的东西实在太多。可是就这样,愈来愈发现自己对这方面还是很感兴趣的,苦于没有导师带,没有真正的项目经历,平常也只能通过一些校外的培训课和论坛、网站、Github等学习。只能说理想很美好,现实很残酷!大牛一抓一大把。只能比别人花更多的时间去了解学习,一步一步的走。。。经常会掉进大坑,几天爬不出来。但我相信,坚持比选择更重要!鉴于本人才疏学浅,文章中还会出现各种不对的地方,还肯定大家对多指正!好了话不多说进入主题!
计算机视觉学习——Opencv配置方式
Opencv在windows 系统下面的 VS中配置经常会比较繁琐,每次需要做project的时候就需要再重新配置一次,当然现在有一劳永逸的配置方法。更让我感觉受不了的就是,经常会各种报错,而且这种报错通常会比较模糊,有时候会让你气到爆炸!直接摔电脑。当然,windows下面还可以运用Cmake+MinGW+opencv+IDE的方式进行配置 ,这样的配置在新建项目的时候就可以不用重复配置了。各有各自的优点吧。只能说Cmake也不是省油的灯。由于接触的slam代码一直在linux下面跑,最近几个月跟ubuntu还是经常打交道的,这里就不想再吐槽我那可怜的笔记本了。。。试着把VS下的opencv 代码移到ubuntu中。然后我在ubuntu中使用的IDE是Clion 和 kdevelop 两者都支持cmake,这个真的是一件很爽的事情。本次的配置是在ubuntu最基本的opencv 配置(不安装CUDA),也是我自己的第一次尝试,并做了代码测试。
安装环境以及依赖项
系统: vmware 12.0 + ubuntu16.04 opencv3.2.0
下载opencv可以在官网直接下载:https://www.opencv.org/
在这里选择sources 解压即可(unzip 命令)
编译环境和安装关联库
搭建C/C++编译环境:
sudo apt-get install build-essential
安装关联库:
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev s
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
二 编译 opencv
将opencv 解压到一个目录下 进入该目录下执行如下命令编译:
我习惯在里面的文件夹立再新建一个文件夹,然后进行编译,cmake之后的一大堆东西真的恶心!
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release-DCMAKE_INSTALL_PREFIX=/usr/local ..
在这里会出现一些问题,会出现缺少ippicv_linux_20151201.tgz的一个包,这个包在Github上面就可以找到,下载下来手动替换掉即可。之后还需要重新编译之前加-D WITH_IPP=OFF
cmake -D WITH_IPP=OFF -D CMAKE_BUILD_TYPE=ReleaseDCMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo cmake install
安装完cmake之后这里注意:如果已经在新的文件夹中编译,但是还会出现之前的报错,把cmakecache.txt删了再编译就可期间可能会下载一个东西,等待一会儿就OK
sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到
sudo gedit /etc/ld.so.conf.d/opencv.conf
执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加
/usr/local/lib
执行如下命令使得刚才的配置路径生效
sudo ldconfig
11.配置bash
sudogedit /etc/bash.bashrc
在最末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfigexportPKG_CONFIG_PATH
保存,执行如下命令使得配置生效
source/etc/bash.bashrc
更新 sudo updatedb
安装完成测试代码
到这里所有的配置都已经完成下面用一个小程序测试一下找到 cd到opencv-3.2.0/smaples/cpp/example_cmake目录下我们可以看到这个目录里官方已经给出了一个cmake的example我们可以拿来测试下按顺序执行
mkdir build
cd build
cmake ..
make
./opencv_example
即可看到打开了摄像头,在左上角有一个hello opencv
即表示配置成功,我的笔记本这里在虚拟机下面摄像头驱动坏了,所以没法打开。这样我们就完成了ubantu 16.04安装opencv3.2.0。
新建程序+CMakeLists.txt进行编译测试
这里我们要自己写一个程序.cpp文件 以及CMakeLists.txt文件进行编译,完成图片的读取
首先在文件夹opencvtest新建DisplayImage文件,并新建DdisplayImage.cpp和cmake文件
mkdir DisplayImage
cd DisplayImage
vim DdisplayImage.cpp 代码如下:
保存并退出
vim CMakeLists.txt 写入一下代码:
完成并保存退出,之后和之前一样 新建build 文件夹进行cmake.. make
这里 还需要将需要显示的图像 放到build 文件夹内。完成之后文件内出现DisplayImage的可执行文件,因此在terminal 下输入 ./DisplayImage lena.jpg
ok 显示完成 在这里要理解argc 和 argv !
总结
跑了samples 以及自己写代码编译 完成了opencv3.2.0的安装,接下来就可以愉快的进行opencv开发和使用了。随时随地就可以用,不需要重复配置。此外还可以安装CUDA 和载入Python.这个等以后再说,先自己摸索摸索。有些坑总归要自己爬一边的。这个过程当中,还会出现不少的问题,当然Google SO 百度都是很好的工具。总归这样用终端每次自己写程序再用cmake构建,时间久了,也还会让人觉得这是一件很不爽的事情。那么就需要在IDE下面进行配置,下一篇文章把和CLion配置的方式做一个记录。