ubuntu下用eclipse编译opencv程序(超级详细)
2015年04月14日 16:18:02
阅读数:1672
我是菜鸟,写的文档是傻瓜式操作,敬请指正。
系统:VMwareWorkstation里的虚拟机ubuntu16.04,64位系统。
1、安装openCV
1.1、下载openCV
https://github.com/opencv/opencv/archive/2.4.11.zip
这是官网的下载链接,你们可以自己去官网下载最新版的(以为我的链接可能失效。另外,下文的链接你们也可以去官网下载最新版)。下载后解压到任意一个文件夹(右击,提取到此处)。
1.2 、安装cmake
下载链接:
https://cmake.org/files/v3.8/cmake-3.8.0.tar.gz
下载后解压,安装先看README文件进行安装。我的版本是直接在终端里运行: ./bootstrap && make && make install
2、安装openCV (转载,原文)
①
进入解压后的OpenCV文件夹,并运行
cmake .
注意后面有一个点
②.运行make
③.运行sudo make install
④配置环境变量
运行
sudo gedit /etc/ld.so.conf.d/opencv.conf(注:该文件为linux中的动态链接库的配置文件)
在文件中添加
/usr/local/lib
并保存
运行下面的命令来配置library:
sudo ldconfig(注:用上面的动态链接库配置文件来配置动态链接库)打开另一个文件
sudo gedit ~/.bashrc
在最后面添上:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
在终端运行
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
然后重启。
3、安装eclipse (部分转载,原文)
3.1、安装java JDK
下载地址:
解压安装后,
1.下载jdk , 地址
2.下载 eclipse for c++,地址
3.将jdk解压到 /opt/jvm/文件夹中
操作步骤:
sudo mkdir /opt/jvm
sudo tar zxvf jdk-8u77-linux-x64.tar.gz -C /opt/jvm
4.配置jdk的环境变量,打开 /etc/profile文件(sudo vim /etc/profile),在文件末尾添加下语句:
export JAVA_HOME=/opt/jvm/jdk1.8.0_77
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
保存后退出。
使其立即生效:sudo source /etc/profile
查看是否安装成功:java -version 出现
说明jdk安装成功。
5.安装 eclipse 将其解压(建议不要解压到root的文件夹,因为容易使下面的快捷方式没有图标,~为你的路径,如果不修改,就是用户home路径)
sudo tar zxvf eclipse-jee-mars-2-linux-gtk-x86_64.tar.gz -C ~
6.创建eclipse桌面快捷方式图标。
cd 桌面
sudo touch eclipse.desktop
sudo vim eclipse.desktop
输入以下内容:(~为你的安装路径)
[Desktop Entry]
Encoding=UTF-8
Name=Eclipse
Comment=Eclipse
Exec=~eclipse/eclipse
Icon=~eclipse/icon.xpm
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;
保存。
执行:sudo chmod u+x eclipse.desktop 将其变为可执行文件.
在~/eclipse/文件夹中创建一个指向JRE路径的软链接。
打开 Eclipse
到此eclipse就全部安装完啦。
4、在eclipse里配置openCV
4.1、检测摄像头
在终端中输入cheese,打开cheese后看是否有摄像头采集的图像。如果有,则进入4.2,否则继续看。
在VMware Workstation里选择 虚拟机->可移动设备 ,在里面吧摄像头切换到虚拟机里(有对号就是在虚拟机里),虚拟机里最好只能挂载一个摄像头(我有两个摄像头,一个笔记本摄像头,一个usb摄像头)。
输入:cd /dev
cat vi*
确认只有一个video0,因为我门只想要一个摄像头。
输入cheese,发现可以采集图像。我在用usb采集图像时,碰见图像直接卡住不懂,如下图:
我的建议是,如果在上面只看到一个video0,那么这个问题就是电脑抽风了。我百度谷歌了好久都么用,重启电脑都没有用。最后关机,睡了一觉,第二天自己好了。
4.2、写openCV程序(部分转载,原文)
配置方法如下:
1,新建一个c++项目:new->project->c++project->Hello World C++ Project(toolchains:linux C++),然后一路next。
2,右键点击新建的项目,在项目属性的C++ Build->Settings,这里要对编译器参数进行设置。在GCC C++ Compiler->include的includepaths中新增一个/usr/local/include/opencv,需要注意这里的路径在Linux上安装opencv的include的路径,可以直接照搬(建议先自己去该路径下看看有没有东西)。
3,在GCC C++ Linker->Libraries的libraries中分别加入opencv_core, opencv_highgui, opencv_imgproc,opencv_ml(注意这个一次只能添加一个,默认的已经带-l了。建议去改下面的路径下看看,干脆把所有模块全添加了);并在下面的library search path一项中新增为/usr/local/lib,与第2步的注意事项相同。
如此三步,就完成了eclipse下配置opencv的步骤!步骤2和3的效果如下。
测试用例:
//============================================================================
// Name : opencvTest.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/video/background_segm.hpp>
using namespace std;
using namespace cv;
int main()
{
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
VideoCapture capture(0);
while(1)
{
Mat frame;
capture>>frame;
imshow("读取视频",frame);
waitKey(30);
}
return 0;
}
测试结果: