ubuntu下用eclipse编译opencv程序(超级详细)

    xiaoxiao2021-04-18  70

    我是菜鸟,写的文档是傻瓜式操作,敬请指正。

    系统: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 , 地址

        http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.tar.gz

    2.下载 eclipse for c++,地址

       http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/luna/SR2/eclipse-cpp-luna-SR2-linux-gtk-x86_64.tar.gz

    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->includeincludepaths中新增一个/usr/local/include/opencv,需要注意这里的路径在Linux上安装opencvinclude的路径,可以直接照搬(建议先自己去该路径下看看有没有东西)。

    3,在GCC C++ Linker->Librarieslibraries中分别加入opencv_core, opencv_highgui, opencv_imgproc,opencv_ml(注意这个一次只能添加一个,默认的已经带-l了。建议去改下面的路径下看看,干脆把所有模块全添加了);并在下面的library search path一项中新增为/usr/local/lib,与第2步的注意事项相同。

    如此三步,就完成了eclipse下配置opencv的步骤!步骤23的效果如下

     测试用例:

    //============================================================================ // 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; }

    测试结果:

      

       

     

     

     

    转载请注明原文地址: https://ju.6miu.com/read-675371.html

    最新回复(0)