国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

在linux環(huán)境下編譯運(yùn)行OpenCV程序的兩種方法

這篇具有很好參考價(jià)值的文章主要介紹了在linux環(huán)境下編譯運(yùn)行OpenCV程序的兩種方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

原來(lái)以為在Ubuntu下安裝好了OpenCV之后,自己寫個(gè)簡(jiǎn)單的程序應(yīng)該很容易吧,但是呢,就是為了編譯一個(gè)簡(jiǎn)單的顯示圖片的程序我都快被弄崩潰了。

  在谷歌和上StackOverFlow查看相關(guān)問(wèn)題解答之后,我下面就介紹Command Line和CMake兩種方式。

  首先我先粘上我測(cè)試的代碼吧,文件名為Test.c

#include <highgui.h>

int main(int argc,char ** argv) {

    IplImage* img = cvLoadImage(argv[1],CV_LOAD_IMAGE_COLOR);
    cvNamedWindow("Image_show",CV_WINDOW_AUTOSIZE);
    cvShowImage("Image_show",img);
    cvWaitKey(0);
    cvReleaseImage(&img);
    cvDestroyWindow("Image_show");
    return 0;
}

第一種方法:Command Line(使用命令行參數(shù)的方法)

gcc Test.c -o Test `pkg-config --cflags --libs opencv`
./Test baboon.jpg

在這里我稍微解釋下這條命令的作用吧。

  在上面的編譯命令中我們其實(shí)用到了一個(gè)工具“pkg-config”,它主要有以下幾個(gè)功能:

  1. 檢查庫(kù)的版本號(hào)。如果所需要的庫(kù)的版本不滿足要求,它會(huì)打印出錯(cuò)誤信息,避免鏈接錯(cuò)誤版本的庫(kù)文件。
  2. 獲得編譯預(yù)處理參數(shù),如宏定義,頭文件的位置。
  3. 獲得鏈接參數(shù),如庫(kù)及依賴的其它庫(kù)的位置,文件名及其它一些連接參數(shù)。
  4. 自動(dòng)加入所依賴的其它庫(kù)的設(shè)置

  所有有了這個(gè)工具之后我們的編譯就很方便了(不過(guò)在此之前你要確保你安裝的OpenCV的安裝鏈接庫(kù)文件的目錄下有一個(gè)pkgconfig文件夾,在該文件夾里面有個(gè)opencv.pc的文件,其實(shí)這就是pkg-config下OpenCV的配置文件)。

  使用pkg-config時(shí),選項(xiàng)--cflags 它是用來(lái)指定程序在編譯時(shí)所需要頭文件所在的目錄,選項(xiàng) --libs則是指定程序在鏈接時(shí)所需要的動(dòng)態(tài)鏈接庫(kù)的目錄。例如我下面這張圖就顯示了我電腦上OpenCV的相關(guān)目錄。

linux opencv,ubuntu,linux,運(yùn)維

第二種方法:使用OpenCV推薦的CMake工具

  這個(gè)方法,我郁悶了很久,試了各種辦法,最終還是編譯運(yùn)行成功啦。一把心酸淚啊。

?  下面我就一步步介紹下步驟吧:

  step1:新建一個(gè)目錄用于存放我們的代碼和程序中要處理的相關(guān)圖片

linux opencv,ubuntu,linux,運(yùn)維

 step2:添加cmake工具編譯時(shí)所需的文件CMakeLists.txt

linux opencv,ubuntu,linux,運(yùn)維

 CMakeLists.txt文件中的具體內(nèi)容如下(注:這個(gè)文件你可以到你的OpenCV源代碼解壓出來(lái)的文件夾下的/samples/c/example_cmake/文件夾下拷過(guò)來(lái),然后再做修改)。

  下面我就簡(jiǎn)要的介紹下這里面內(nèi)容的大概意思吧

PROJECT(OpenCV_Example)           //這是建立一個(gè)工程項(xiàng)目(類似于我們VS中建立C++項(xiàng)目一樣),括號(hào)里面時(shí)工程名,工程名我們可以任意給,最后程序編譯出來(lái)的可執(zhí)行文件就是這個(gè)名字
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)    //這是對(duì)CMake工具最低版本要求,這里我們要檢查下我們的CMake工具的版本信息,我們可以使用命令“cmake --version”查看
if(COMMAND cmake_policy)            
      cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
 
FIND_PACKAGE( OpenCV REQUIRED )   //這是cmake用來(lái)查找opencv包用的,不用改

# Declare the target (an executable)
ADD_EXECUTABLE(OpenCV_Example  Image_show.c)      //這里括號(hào)里面的兩個(gè)參數(shù)分別是工程項(xiàng)目名和我們要編譯文件名的意思,記住中間一空格鍵隔開(kāi)

TARGET_LINK_LIBRARIES(OpenCV_Example ${OpenCV_LIBS})  //這是我們鏈接到OpenCV庫(kù)的環(huán)節(jié),我們只要更改前面第一個(gè)參數(shù)位我們的工程項(xiàng)目名即可

#MESSAGE(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}")     //好了,就修改這么點(diǎn)東西,保存,關(guān)閉。

 然后我們就將終端的工作目錄切換到我們建立工程文件的這個(gè)目錄

  (注意,千萬(wàn)要注意:你這時(shí)一定要查看你安裝OpenCV時(shí)建立的那個(gè)編譯文件,有沒(méi)有帶鎖的標(biāo)志(即你編譯OpenCV是用root權(quán)限編譯的),就這點(diǎn)就把我坑慘了,例如的我電腦上顯示的就是這樣的

linux opencv,ubuntu,linux,運(yùn)維

 看到上面圖片中的build文件夾沒(méi),那就是我編譯OpenCV源代碼時(shí)建立的文件夾。)

  所以,如果你是以root的權(quán)限編譯的OpenCV此時(shí)你就要以切換到root用戶,再切換到當(dāng)前的工作目錄。如果不是用root權(quán)限編譯的OpenCV編譯的話,你就直接切換目錄就OK了。

  我的電腦是要切換到root狀態(tài)的

linux opencv,ubuntu,linux,運(yùn)維

  Step3:讓后我們輸入命令"cmake ."對(duì)當(dāng)前的工程進(jìn)行編譯。啊哦,這時(shí)你就會(huì)發(fā)現(xiàn)你編譯時(shí)出現(xiàn)了一個(gè)Bug

linux opencv,ubuntu,linux,運(yùn)維

這個(gè)警告的大概意思就是:Cmake找不到OpenCV的鏈接庫(kù)文件,你需要手動(dòng)地設(shè)置OpenCV_DIR來(lái)指向包含庫(kù)文件的路徑。

  好吧,這是最蛋疼的地方,就這個(gè)問(wèn)題我google和上StackOverFlow都沒(méi)有找到答案,只能自己嘗試了,不過(guò)還是找到網(wǎng)友給的一些提示。

  其實(shí)通過(guò)它給我們的提示我們就是要設(shè)置好這個(gè)路徑。接下來(lái)我們通過(guò)camke的qt界面進(jìn)行設(shè)置吧。

  

  Step4:設(shè)置OpenCV_DIR

  (1)先安裝cmake的qt界面 "sudo apt-get install cmake-gui"

 ?。?)打開(kāi)cmake-gui界面

linux opencv,ubuntu,linux,運(yùn)維

 ?。?)我們這是就在Where is the source code 和 where to build binaries 的選項(xiàng)里選擇我們的目錄剛才建立包含我們程序的文件路徑吧。

linux opencv,ubuntu,linux,運(yùn)維

(4)我們選擇cmake界面中的“Add Entry”選項(xiàng),按照我下面圖中的方式輸入信息吧,其中alue值就是我OpenCV安裝的那個(gè)目錄(回想下我上面說(shuō)的)。

linux opencv,ubuntu,linux,運(yùn)維

這樣我們就點(diǎn)擊ok吧,得到下面的圖了

linux opencv,ubuntu,linux,運(yùn)維

到此OpenCV_DIR就配置完成了,單擊下面的Configure和Generate,如果沒(méi)報(bào)錯(cuò)則一切搞定啦。我們可以愉快的回到終端編譯我們的程序啦。

 ?。?)編譯的方式如圖所示

   

linux opencv,ubuntu,linux,運(yùn)維

  看到了嗎,綠色OpenCV_Example就是我們剛生成的可執(zhí)行文件,到此大功告成啊。

  

   Step5:運(yùn)行測(cè)試吧

  

linux opencv,ubuntu,linux,運(yùn)維文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-563803.html

到了這里,關(guān)于在linux環(huán)境下編譯運(yùn)行OpenCV程序的兩種方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux環(huán)境下編譯并使用java_opencv

    Linux環(huán)境下編譯并使用java_opencv

    java_opencv windows環(huán)境下很好部署使用,官網(wǎng)直接有一鍵安裝版,所以這里就不提了,主要說(shuō)說(shuō)這個(gè)linux環(huán)境下,哎,一堆坑,踩了好幾天. 安裝編譯環(huán)境 下載源碼 版本自己可以去官網(wǎng)選擇,我這里是覺(jué)得沒(méi)必要整那么高的版本 編譯安裝 這一步巨慢,不加 -j8巨巨慢,自己的機(jī)器有幾核就-j幾

    2024年02月13日
    瀏覽(20)
  • vscode運(yùn)行c++結(jié)果輸出在windows終端的兩種方法

    vscode運(yùn)行c++結(jié)果輸出在windows終端的兩種方法

    打開(kāi).vscode中l(wèi)aunch.json文件 修改下面三個(gè)配置 \\\"program\\\":\\\"C:\\\\Windows\\\\System32\\\\cmd.exe\\\", \\\"args\\\": [\\\"/C\\\",\\\"${fileDirname}\\\\${fileBasenameNoExtension}.exe\\\",\\\"\\\",\\\"pause\\\"], \\\"externalConsole\\\": true, 以非調(diào)試模式運(yùn)行,ctrl+F5 打開(kāi).vscode中l(wèi)aunch.json文件 修改\\\"externalConsole\\\": true, 在main函數(shù)中最后加入getchar()函數(shù) 注:方法2如

    2024年02月19日
    瀏覽(32)
  • Linux下安裝CMake的兩種方法

    方法一:使用包管理器安裝CMake 在Linux系統(tǒng)中,可以使用包管理器來(lái)安裝CMake。不同的Linux發(fā)行版可能使用不同的包管理器,下面以常見(jiàn)的Ubuntu系統(tǒng)為例: 打開(kāi)終端,輸入以下命令更新包管理器的軟件源信息: 安裝CMake: 輸入管理員密碼確認(rèn)安裝。包管理器將自動(dòng)下載并安裝

    2024年02月04日
    瀏覽(21)
  • Linux中重啟Redis的兩種方法

    Linux中重啟Redis的兩種方法

    在Redis中我們通常會(huì)修改redis.conf來(lái)配置我們的Redis,但是配置完后需要重啟Redis才能生效,下面我將分享我學(xué)習(xí)到的兩種重啟方式, 推薦使用第二種 1、kill -9 Redis進(jìn)程號(hào) 上述查看Redis的進(jìn)程號(hào)的命令,運(yùn)行結(jié)果如下: 2、通過(guò)客戶端告訴Redis服務(wù)器重新啟動(dòng)(安全) 上述的 192

    2024年01月25日
    瀏覽(30)
  • Linux判斷操作系統(tǒng)的兩種方法

    Linux判斷操作系統(tǒng)的兩種方法

    01 :cat /etc/redhat-release 適用于:CentOS,RedHat 如圖,出現(xiàn)CentOS ,則為CentOS系統(tǒng)。 ? ?02:cat /etc/issue 顯示如下圖,則為CentOS; 如果出現(xiàn)Ubuntu字樣,則是Ubuntu。 ??????? ?

    2024年02月05日
    瀏覽(27)
  • 微信小程序阻止小程序返回的兩種方法

    本次項(xiàng)目為uniapp開(kāi)發(fā),原生小程序也可以參考這兩個(gè)方法。 wx.enableAlertBeforeUnload onLoad中聲明 優(yōu)點(diǎn):簡(jiǎn)單方便 缺點(diǎn):無(wú)法自定義樣式、按鈕文字及樣式 page-container 這是一個(gè)類似彈框的組件,具體參數(shù)可以去官網(wǎng)查看。 返回操作包括:頂部導(dǎo)航、右滑手勢(shì)、安卓物理返回鍵和

    2024年02月16日
    瀏覽(25)
  • 修改 Linux 系統(tǒng)中 22 端口的兩種方法

    在進(jìn)行系統(tǒng)運(yùn)維時(shí),有時(shí)候需要修改 Linux 系統(tǒng)上的某個(gè)特定端口的配置。本文將介紹兩種常見(jiàn)的方法來(lái)修改 Linux 系統(tǒng)中的 22 端口(SSH 默認(rèn)端口)的配置。 方法一:修改 SSH 配置文件 SSH(Secure Shell)是一種常用的遠(yuǎn)程登錄協(xié)議,它通常使用 22 端口進(jìn)行連接。我們可以通過(guò)修

    2024年02月04日
    瀏覽(20)
  • 微信小程序播放音樂(lè)的方法中的兩種方法

    微信小程序播放音樂(lè)的方法有很多種,這里總結(jié)一下其中兩種的優(yōu)缺點(diǎn),主要是最近用到了 這個(gè)是最簡(jiǎn)單的 其他的就不多說(shuō)了,說(shuō)一下現(xiàn)在微信文檔里沒(méi)有的action屬性 action屬性可以選擇組件對(duì)應(yīng)的動(dòng)作,比如播放或暫停,具體如下 或者 不過(guò)這樣的話要考慮渲染延時(shí)問(wèn)題,

    2024年02月06日
    瀏覽(25)
  • 在較新版pycharm中使用conda虛擬環(huán)境的兩種方法-保姆級(jí)教程

    在較新版pycharm中使用conda虛擬環(huán)境的兩種方法-保姆級(jí)教程

    首先創(chuàng)建new-project 之后等待配置索引等文件即可。 在終端terminal中直接使用conda activate xxx,但是失效。 解決方法: file-settings-Tools-Terminal 之后一定要記得 重啟! 然后就好了: 之后conda activate xxx(你的虛擬環(huán)境),在里面運(yùn)行你的python文件即可(python xxx.py --xxx) 如果是這樣創(chuàng)建的

    2024年02月09日
    瀏覽(35)
  • IDEA 打包MapReduce程序到集群運(yùn)行的兩種方式以及XShell和Xftp過(guò)期的解決

    IDEA 打包MapReduce程序到集群運(yùn)行的兩種方式以及XShell和Xftp過(guò)期的解決

    【MapReduce打包成jar上傳到集群運(yùn)行】http://t.csdn.cn/2gK1d 【Xshell7/Xftp7 解決強(qiáng)制更新問(wèn)題】http://t.csdn.cn/rxiBG 這里的打包是打包整個(gè)項(xiàng)目,后期等學(xué)會(huì)怎么打包單個(gè)指定的mapreduce程序再來(lái)更新博客。 注意: 這個(gè)時(shí)候已經(jīng)在 target 目錄下打包好了一個(gè)jar包: 我們可以直接使用這個(gè)

    2024年02月07日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包