OpenCV2.4.9 + Ubuntu15.04配置
为了run Car-Detection安装了OpenCV。
基本上就照着这个弄下来:
ubuntu14.04 + OpenCV2.4.9 配置方法
1. 安装openCV 所需依赖库或软件:
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
若期间遇到问题,很有可能是源的问题,可以通过以下方式解决:
(1) 打开搜索 → search: softwares & updates → Ubuntu Software → Download from , 选一个比较好的源(163 、阿里云或者中科大)
(2) sudo apt-get update 更新源(若是校园网,可能在更新源的时候遇到hashsum mismatch的问题,解决方式请看这里)
2. 从官网上下载opencv 2.4.9源码
3. 解压到任意目录
unzip opencv-2.4.9.zip
4. 进入源码目录,创建release目录
cd opencv-2.4.9
mkdir release
5. 进入release目录,安装OpenCV是所有的文件都会被放到这个release目录下
cd release
6. cmake生成编译脚本
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=OFF -D WITH_OPENMP=ON -D WITH_QT=ON ..
注:这里-D的作用是设置编译的选项,如选择release模式, 输出的目录,不编译cuda模块,编译openMP与QT模块,这里的QT模式带有很强的可视化效果,推荐。但需要在第一步中加上 libqt4-dev 安装QT环境
7. 安装(编译)
sudo make install
8. 测试,在某个目录下建立一个test.cpp文件
#include <cv.h>
#include <highgui.h>
using namespace cv;
int main(int argc, char* argv[])
{
Mat image;
image = imread(argv[1], 1);
if (argc != 2 || !image.data)
{
printf("No image data\n");
return -1;
}
namedWindow("Display Image", CV_WINDOW_AUTOSIZE);
imshow("Display Image", image);
waitKey(0);
return 0;
}
9. 写一个cmake的makefile,也叫CMakeLists.txt,文件内容如下:
project(test)
find_package(OpenCV REQUIRED)
add_executable(test test)
target_link_libraries(test ${OpenCV_LIBS})
cmake_minimum_required(VERSION 2.8)
10. 编译+运行测试程序
cmake .
Make
得到可执行文件test
11. 结果
运行了test以后,如果事先选择了QT,则会有如下的效果,可以通过窗口上的按钮实现放大平移保存,甚至可以查看具体的像素值:
11. reference
配置:
http://my.oschina.net/u/1757926/blog/293976?fromerr=BFgyQ6oi
http://www.samontab.com/web/2014/06/installing-opencv-2-4-9-in-ubuntu-14-04-lts/
opencv 下载地址
http://opencv.org/downloads.html
遇到的问题:
http://blog.csdn.net/tjusxh/article/details/41944403
http://blog.csdn.net/jq0123/article/details/7398632
期间也出线了一些问题,比如绕过其中一个共享库,叫什么忘了,已经解决通过修改第6步:cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=OFF -D WITH_OPENMP=ON -D WITH_QT=ON ..
中加上了 xx=OFF,反正也永不到xx所以就跳过了。
关于使用:
一共两种方法,我使用的是第一种命令行编译cpp文件 http://www.cnblogs.com/woshijpf/p/3840530.html
gcc car_detect.cpp -o car_detect `pkg-config --cflags --libs opencv`
出现错误:
/usr/bin/ld: /tmp/ccY4JA2M.o: undefined reference to symbol '__cxa_guard_acquire@@CXXABI_1.3' /usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status
在编译的时候增加了一个c++的链接库解决: -lstdc++
gcc car_detect.cpp -o car_detect `pkg-config --cflags --libs opencv` -lstdc++