一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

opencv之在Linux下編譯opencv程序的兩種方式g++、cmake

 守常_1 2018-05-08

從電子信息工程跳到計(jì)算機(jī),在研究圖像處理的東西,發(fā)現(xiàn)opencv很好玩,想深入學(xué)一下,沒有特別好的教材,最好的文檔就是官方的tutorials,在實(shí)驗(yàn)室比較忙,希望能每天晚上抽點(diǎn)時(shí)間把這個(gè)大概看一下,不求全部看懂,至少能夠深入一下。所有代碼編寫均在Ubuntu16.04+opencv2.4.9+g++5.4.0+cmake3.5.1下完成。

以前寫的文章介紹了WindowsLinuxopencv的配置方法,不在贅述,現(xiàn)在說一下怎么在Linux下編譯寫好的Linux代碼。本文提供兩種方法g++cmake

代碼如下:

  1. #include <iostream>  
  2. #include <opencv2/opencv.hpp>  
  3.   
  4. using namespace std;  
  5. using namespace cv;  
  6.   
  7. int main()  
  8. {  
  9.     Mat srcImage = imread("lena.jpg");  
  10.     imshow("源圖像",srcImage);  
  11.   
  12.     waitKey(0);  
  13.   
  14.     return 0;  
  15. }  


1.使用g++編譯寫好的opencv代碼

gccg++分別是GNUC&C++編譯器,其編譯過程可分為四步:

1)預(yù)處理:生成.i的文件

2)將預(yù)處理的文件轉(zhuǎn)換成匯編語言,生成文件.s

3)由匯編變?yōu)槟繕?biāo)代碼(機(jī)器代碼)生成.o的文件

4)連接目標(biāo)代碼,生成可執(zhí)行程序

g++編譯命令有很多可選擇項(xiàng),可以根據(jù)不同的需要使用,具體請自行查閱。普通的g++編譯命令如下:

  1. g++Hello.cpp -o Hello  

其中Hello.cpp是要編譯的cpp名稱,生成的可執(zhí)行文件是Hello,如果編譯多個(gè)cpp文件,可用如下方法:

建立一個(gè)hello.h文件

  1. #ifndef HELLO  
  2. #define HELLO  
  3.   
  4. #include <iostream>  
  5. using namespace std;  
  6.   
  7. class SpeakHello  
  8. {  
  9.     public:  
  10.         void speak();  
  11. };  
  12.   
  13. #endif  

建立一個(gè)名字為hello.cppC++文件


  1. #include "hello.h"  
  2.   
  3. void SpeakHello::speak()  
  4. {  
  5.     cout << "Hello World!"<<endl;  
  6. }  

建立一個(gè)名字為speak.cpp的主文件


  1. #include "hello.h"  
  2.   
  3. int main()  
  4. {  
  5.     SpeakHello show;  
  6.     show.speak();  
  7.     return 0;  
  8. }  

想要將包含hello.h、hello.cppspeak.cpp三個(gè)文件編譯,可寫如下命令:


  1. g++ speak.cpp hello.cpp -o hello  
  2. ./hello  


具體的g++用法不再贅述,可自行查閱?,F(xiàn)在說一下怎么通過g++編譯OpenCV程序,如直接執(zhí)行,出現(xiàn)下種錯(cuò)誤情況:



因?yàn)樵趫?zhí)行時(shí)沒有將OpenCV的庫包含進(jìn)去,可以使用如下命令進(jìn)行編譯:


  1. g++ `pkg-config opencv --cflags` opencv.cpp  -o opencv `pkg-config opencv --libs`   

生成名字為opencv的可執(zhí)行文件,接下來運(yùn)行


  1. ./opencv  

運(yùn)行結(jié)果如下:

2.使用cmake編譯OpenCV文件

首先確保已經(jīng)安裝了cmake,然后建立一個(gè)CMakeLists.txt文件,輸入如下內(nèi)容


  1. cmake_minimum_required(VERSION 2.8)  
  2. project(opencv)  
  3. find_package(OpenCV REQUIRED)  
  4. add_executable(opencv opencv.cpp)  
  5. target_link_libraries(opencv ${OpenCV_LIBS})  


project()括號(hào)里面填寫要生成的文件名稱,add_executable()及其后一行類似,然后可以使用cmake命令運(yùn)行,此次執(zhí)行


  1. cmake .  
  2. make  
  3. ./opencv  

運(yùn)行結(jié)果如圖所示:


至此,OpenCV程序的兩種運(yùn)行方式介紹完畢!

PS:先把這些寫到Libre就是個(gè)坑,改字體改了好長時(shí)間,還是那么難看?。。?br>


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多

    国产欧美日韩在线一区二区| 91亚洲国产—区=区a| 欧美精品在线播放一区二区| 日本高清一区免费不卡| 不卡中文字幕在线视频| 日韩精品一区二区三区含羞含羞草| 亚洲婷婷开心色四房播播| 中文字幕精品一区二区三| 亚洲av熟女国产一区二区三区站 | 精品日韩国产高清毛片| 欧美亚洲国产日韩一区二区| 视频一区二区三区自拍偷| 中文字幕中文字幕在线十八区| 在线日韩中文字幕一区| 日韩欧美国产三级在线观看| 国产高清视频一区不卡| 日韩成人动作片在线观看| 91一区国产中文字幕| 日韩一区二区三区高清在| 午夜日韩在线观看视频| 国产免费无遮挡精品视频| 麻豆国产精品一区二区| 亚洲中文字幕有码在线观看| 日韩精品你懂的在线观看| 丰满熟女少妇一区二区三区| 欧美一区二区三区十区| 欧美午夜国产在线观看| 日韩午夜福利高清在线观看| 久久99青青精品免费| 少妇激情在线免费观看| 精品人妻一区二区三区免费看| 日韩高清中文字幕亚洲| 国产日韩精品激情在线观看| 免费在线观看欧美喷水黄片| 日韩精品一区二区三区四区| 老司机激情五月天在线不卡| 国产日韩欧美综合视频| 在线中文字幕亚洲欧美一区| 国产三级黄片在线免费看| 欧美一级黄片免费视频| 国产精品大秀视频日韩精品|