opencv3和opencv_contrib手動(dòng)編譯(macos)

opencv3和opencv_contrib手動(dòng)編譯(macos)

homebrew在國內(nèi)并不會(huì)被墻稚字,但是由于homebrew官方的bootles比較慢,而且homebrew有時(shí)候會(huì)選擇給你下源碼讓你手動(dòng)編譯,所以如果在國內(nèi)在macOS系統(tǒng)下進(jìn)行開發(fā)的朋友可以嘗試換國內(nèi)的中科大源和清華源

## 替換brew.git:
cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
## 替換homebrew-core.git:
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bashrc
## 但是現(xiàn)在最新版本的macos使用的是zsh shell
所以略作修改
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc

以下是我在opencv_contrib +opencv3.0.0配置過程中出現(xiàn)的問題和解決

之前我開發(fā)使用的是clion+Cmakelist.txt配置opencv4路徑的組合

但是當(dāng)我想要使用opencv封裝的sift函數(shù)的時(shí)候着憨,發(fā)現(xiàn)opencv3封裝的一部分特征檢測(cè)的代碼已經(jīng)被移動(dòng)到了xfeature2d函數(shù)庫下,而這個(gè)函數(shù)庫好像是在nonfree模塊下,但是我電腦上沒有添加opencv_contrib這個(gè)文件鹦蠕,導(dǎo)致直接調(diào)用會(huì)報(bào)錯(cuò)找不到我需要調(diào)用的函數(shù)的頭文件,然后開始了漫長的配置之路


1)資源下載

首先在抛,鑒于在我通過Homebrew安裝的opencv并沒有opencv_contrib钟病,我選擇了重新開始配置新的opencv環(huán)境

  1. 下載opencv和對(duì)應(yīng)版本的opencv_contrib , 編譯使用的cmake工具下載帶有GUI界面的即可

  2. opencv下載地址提供(其實(shí)就是opencv在github的官方倉庫,自行選擇版本即可,但是要和opencv_contrib版本對(duì)應(yīng))

https://github.com/opencv/opencv/tree/3.4.8

  1. opencv_contrib下載的地址肠阱,我選用的是3.4.8版本

https://github.com/opencv/opencv_contrib/tree/3.4.8

2) 編譯安裝

這里參考了stackoverflow上大神給出的解決辦法

https://stackoverflow.com/questions/31822299/opencv-contrib-module-installation-on-mac

  1. 我們需要將下載下來的opencv-3.4.8和opencv_contrib-3.4.8文件放到一個(gè)文件夾下
image
  1. 在cmake(gui)中配置如上圖的路徑

我們需要在opencv-3.4.8下新建build文件夾來保存編譯文件

在cmake中添加路徑

image

點(diǎn)擊configure buttom

問題1:

IPPICV: Download: ippicv_2017u3_lnx_intel64_general_20180723.tgz

編譯程序會(huì)卡在這個(gè)提示信息票唆,最后顯示timeout超時(shí)退出了程序

下載的地址:

https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20180723/ippicv

這個(gè)鏈接可能會(huì)過期,但是只要在github上找到你想要找的系統(tǒng)和版本即可

至于這個(gè)文件下載后放置的位置:opencv-3.3.0/3rdparty/ippicv/ippicv.cmake 這個(gè)文件可以用sublime Text打開

查找url形式 "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"字段

將其更換為上述文件存儲(chǔ)的目錄名

即上面的" "中的內(nèi)容換成 "file:///home/usrname/install/" 而你下載的ippicv_2017u3_lnx_intel64_general_20180723.tgz就放在你電腦的/home/usrname/install目錄下

修改完成之后 再次進(jìn)行configure編譯 我這邊是提示了 hashcode不一致的warning

至于具體如何修改辖所,可以參見這個(gè)博客

https://blog.csdn.net/KayChanGEEK/article/details/79919417

具體閱讀opencv-3.4.8/build/CMakeDownloadLog.txt日志惰说,我直接跳過了這個(gè)步驟

因?yàn)槲野l(fā)現(xiàn)它好像是自行修正了,但后續(xù)編譯中還是會(huì)報(bào)相關(guān)warning缘回,但不影響成功編譯和函數(shù)調(diào)用

  1. 安裝opencv_contrib模塊

在cmake(GUI)的search中輸入extra

在value中輸入 /你的opencv_contrib地址/modules

image

點(diǎn)擊configure

編譯過程中再次出現(xiàn)問題

face_landmark_model.dat模塊下載超時(shí)

打開文件<opencv源代碼的路徑>/opencv_contrib/modules/face/CMakeLists.txt吆视,找到文件關(guān)于commit_hash的那一行,替換commit_hash進(jìn)行下載

下載路徑: https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat

https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/face_landmark_model.dat

替換為你本機(jī)下載該文件的上層目錄酥宴,原理同上面的ippicv文件

配置完成后點(diǎn)擊generate啦吧,顯示generate done

  1. 編譯
make -j4  這里j后參數(shù)可變,理論上表示用的核心數(shù)量

其他一些可能遇到的雜七雜八的(make)編譯過程錯(cuò)誤 (沒有遇到可以跳過)

Cmake error at
opencv_contrib-master/modules/datasets/CMakeLists.txt:7 (ocv_append_source_files_cxx_compiler_options):
Unknown CMake command "ocv_append_source_files_cxx_compiler_options".

-- Configuring incomplete, errors occurred!
See also "/home/sunhong/Downloads/opencv-3.4.1/my_build_dir/CMakeFiles/CMakeOutput.log".
See also "/home/sunhong/Downloads/opencv-3.4.1/my_build_dir/CMakeFiles/CMakeError.log".

解決辦法:

注釋掉:opencv_contrib-master/modules/datasets/CMakeLists.txt:7 (ocv_append_source_files_cxx_compiler_options):

之后又有報(bào)錯(cuò)說缺face_landmark_model.dat這個(gè)文件

修改自己對(duì)應(yīng)文件夾opencv_contrib/modules/face/CMakeLists.txt

#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/"

報(bào)錯(cuò):

image

解決辦法: (stackoverflow大法好)

image

參考鏈接:

https://stackoverflow.com/questions/31822299/opencv-contrib-module-installation-on-mac

https://stackoverflow.com/questions/46884682/error-in-building-opencv-with-ffmpeg


空降此處

  1. 安裝
sudo make install
image

老淚縱橫拙寡,終于行了

  1. 安裝結(jié)果

頭文件在:/usr/local/include/opencv4/

image

lib在:/usr/local/lib

image

我采用的clion+cmakelist.txt的方式訪問opencv庫

cmake_minimum_required(VERSION 3.9)
project(cv)   //項(xiàng)目名

set(CMAKE_CXX_STANDARD 11)

find_package(OpenCV)

include_directories(${OpenCV_INCLUDE_DIRS})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

add_executable(cv  experiment.cpp)  //項(xiàng)目名 運(yùn)行的函數(shù)名
target_link_libraries(cv ${OpenCV_LIBS})

xcode的配置方法可以參見以下鏈接

http://www.reibang.com/p/9fc82d0dcf0d

唯一的差別是
Header Search Paths設(shè)置為/usr/local/include/opencv4/
Library Search Paths設(shè)置為/usr/local/lib

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末授滓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子肆糕,更是在濱河造成了極大的恐慌般堆,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诚啃,死亡現(xiàn)場(chǎng)離奇詭異淮摔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)始赎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門和橙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人造垛,你說我怎么就攤上這事魔招。” “怎么了五辽?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵办斑,是天一觀的道長。 經(jīng)常有香客問我杆逗,道長俄周,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任髓迎,我火速辦了婚禮,結(jié)果婚禮上建丧,老公的妹妹穿的比我還像新娘排龄。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布橄维。 她就那樣靜靜地躺著尺铣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪争舞。 梳的紋絲不亂的頭發(fā)上凛忿,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音竞川,去河邊找鬼店溢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛委乌,可吹牛的內(nèi)容都是我干的床牧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼遭贸,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼戈咳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起壕吹,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤著蛙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后耳贬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踏堡,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年效拭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了暂吉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缎患,死狀恐怖慕的,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挤渔,我是刑警寧澤肮街,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站判导,受9級(jí)特大地震影響嫉父,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜眼刃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一绕辖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧擂红,春花似錦仪际、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肯适。三九已至,卻和暖如春成榜,著一層夾襖步出監(jiān)牢的瞬間框舔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工赎婚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刘绣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓惑淳,卻偏偏與公主長得像额港,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子歧焦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354