? 寫在前面
? ? ? 一直以來都想能夠?qū)扅c(diǎn)什么涎显,曾經(jīng)也想過能寫點(diǎn)小說传蹈,散文什么的攀细。到了后面才發(fā)現(xiàn)自己的文筆真的很差勁!作為純工科生腹备,也只能寫點(diǎn)有關(guān)技術(shù)方面的東西了。隨著不斷的學(xué)習(xí)斤蔓,積累的東西也就越來越多植酥,如果不能夠有一個很好的方式去管理它,隨著時間的的推移弦牡,會發(fā)現(xiàn)當(dāng)初已經(jīng)學(xué)會了的東西友驮,現(xiàn)在已經(jīng)忘的差不多了,到頭來還得重新的翻資料回顧驾锰。我覺得現(xiàn)在的我需要去管理我的知識卸留,同時還可以提高我自己的能力,養(yǎng)成一個好的習(xí)慣椭豫!so 這些就是我開始寫簡書的最簡單的想法耻瑟,記錄我的學(xué)習(xí)——因?yàn)樗麄兪俏彝ㄟ^實(shí)踐獲得的旨指。本文也是作為我寫文章的開始吧。
? ? 最近一直在接觸計(jì)算機(jī)視覺匆赃、機(jī)器視覺方面的知識淤毛,還跟著大佬學(xué)了一些slam方面的東西。(別擔(dān)心算柳,我還是小白中的小白低淡。。瞬项。蔗蹋。從入門到放棄。囱淋。猪杭。),也僅僅是了解皮毛妥衣,需要的學(xué)的東西實(shí)在太多皂吮。可是就這樣税手,愈來愈發(fā)現(xiàn)自己對這方面還是很感興趣的蜂筹,苦于沒有導(dǎo)師帶,沒有真正的項(xiàng)目經(jīng)歷芦倒,平常也只能通過一些校外的培訓(xùn)課和論壇艺挪、網(wǎng)站、Github等學(xué)習(xí)兵扬。只能說理想很美好麻裳,現(xiàn)實(shí)很殘酷!大牛一抓一大把器钟。只能比別人花更多的時間去了解學(xué)習(xí)津坑,一步一步的走。俱箱。国瓮。經(jīng)常會掉進(jìn)大坑,幾天爬不出來狞谱。但我相信乃摹,堅(jiān)持比選擇更重要!鑒于本人才疏學(xué)淺跟衅,文章中還會出現(xiàn)各種不對的地方孵睬,還肯定大家對多指正!好了話不多說進(jìn)入主題伶跷!
計(jì)算機(jī)視覺學(xué)習(xí)——Opencv配置方式
? ? Opencv在windows 系統(tǒng)下面的 VS中配置經(jīng)常會比較繁瑣掰读,每次需要做project的時候就需要再重新配置一次秘狞,當(dāng)然現(xiàn)在有一勞永逸的配置方法。更讓我感覺受不了的就是蹈集,經(jīng)常會各種報錯烁试,而且這種報錯通常會比較模糊,有時候會讓你氣到爆炸拢肆!直接摔電腦减响。當(dāng)然,windows下面還可以運(yùn)用Cmake+MinGW+opencv+IDE的方式進(jìn)行配置? 郭怪,這樣的配置在新建項(xiàng)目的時候就可以不用重復(fù)配置了支示。各有各自的優(yōu)點(diǎn)吧。只能說Cmake也不是省油的燈鄙才。由于接觸的slam代碼一直在linux下面跑颂鸿,最近幾個月跟ubuntu還是經(jīng)常打交道的,這里就不想再吐槽我那可憐的筆記本了攒庵。嘴纺。。試著把VS下的opencv 代碼移到ubuntu中浓冒。然后我在ubuntu中使用的IDE是Clion 和 kdevelop 兩者都支持cmake,這個真的是一件很爽的事情颖医。本次的配置是在ubuntu最基本的opencv 配置(不安裝CUDA),也是我自己的第一次嘗試裆蒸,并做了代碼測試。
安裝環(huán)境以及依賴項(xiàng)
? ? 系統(tǒng): vmware 12.0? +? ubuntu16.04? ? ? ? ? opencv3.2.0
下載opencv可以在官網(wǎng)直接下載:https://www.opencv.org/
在這里選擇sources 解壓即可(unzip 命令)
編譯環(huán)境和安裝關(guān)聯(lián)庫
搭建C/C++編譯環(huán)境:
sudo apt-get install build-essential
安裝關(guān)聯(lián)庫:
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev s
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
二 編譯 opencv
將opencv 解壓到一個目錄下 進(jìn)入該目錄下執(zhí)行如下命令編譯:
? ? 我習(xí)慣在里面的文件夾立再新建一個文件夾糖驴,然后進(jìn)行編譯僚祷,cmake之后的一大堆東西真的惡心!
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release-DCMAKE_INSTALL_PREFIX=/usr/local ..
? ? 在這里會出現(xiàn)一些問題贮缕,會出現(xiàn)缺少ippicv_linux_20151201.tgz的一個包辙谜,這個包在Github上面就可以找到,下載下來手動替換掉即可感昼。之后還需要重新編譯之前加-D WITH_IPP=OFF
cmake -D WITH_IPP=OFF -D CMAKE_BUILD_TYPE=ReleaseDCMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo cmake install
? ? 安裝完cmake之后這里注意:如果已經(jīng)在新的文件夾中編譯装哆,但是還會出現(xiàn)之前的報錯,把cmakecache.txt刪了再編譯就可期間可能會下載一個東西定嗓,等待一會兒就OK
? ? sudo make install 執(zhí)行完畢后OpenCV編譯過程就結(jié)束了蜕琴,接下來就需要配置一些OpenCV的編譯環(huán)境首先將OpenCV的庫添加到路徑,從而可以讓系統(tǒng)找到
? ? sudo gedit /etc/ld.so.conf.d/opencv.conf
執(zhí)行此命令后打開的可能是一個空白的文件宵溅,不用管凌简,只需要在文件末尾添加
/usr/local/lib
執(zhí)行如下命令使得剛才的配置路徑生效
sudo ldconfig
11.配置bash
sudogedit /etc/bash.bashrc
在最末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfigexportPKG_CONFIG_PATH
保存,執(zhí)行如下命令使得配置生效
source/etc/bash.bashrc
更新 sudo updatedb
安裝完成測試代碼
? ? 到這里所有的配置都已經(jīng)完成下面用一個小程序測試一下找到 cd到opencv-3.2.0/smaples/cpp/example_cmake目錄下我們可以看到這個目錄里官方已經(jīng)給出了一個cmake的example我們可以拿來測試下按順序執(zhí)行
mkdir build
cd build
cmake ..
make
./opencv_example
即可看到打開了攝像頭恃逻,在左上角有一個hello opencv
? ? ? ? 即表示配置成功,我的筆記本這里在虛擬機(jī)下面攝像頭驅(qū)動壞了雏搂,所以沒法打開藕施。這樣我們就完成了ubantu 16.04安裝opencv3.2.0。
新建程序+CMakeLists.txt進(jìn)行編譯測試
? ? ? 這里我們要自己寫一個程序.cpp文件 以及CMakeLists.txt文件進(jìn)行編譯凸郑,完成圖片的讀取
首先在文件夾opencvtest新建DisplayImage文件裳食,并新建DdisplayImage.cpp和cmake文件
mkdir DisplayImage
cd? DisplayImage
vim DdisplayImage.cpp? 代碼如下:
? 保存并退出
vim CMakeLists.txt? 寫入一下代碼:
? ? 完成并保存退出,之后和之前一樣 新建build 文件夾進(jìn)行cmake..? ? make
? ? 這里 還需要將需要顯示的圖像 放到build 文件夾內(nèi)芙沥。完成之后文件內(nèi)出現(xiàn)DisplayImage的可執(zhí)行文件诲祸,因此在terminal 下輸入 ./DisplayImage? lena.jpg? ?
? ? ok 顯示完成 在這里要理解argc? 和 argv !?
總結(jié)
? ? ? 跑了samples? 以及自己寫代碼編譯 完成了opencv3.2.0的安裝,接下來就可以愉快的進(jìn)行opencv開發(fā)和使用了憨愉。隨時隨地就可以用烦绳,不需要重復(fù)配置。此外還可以安裝CUDA 和載入Python.這個等以后再說配紫,先自己摸索摸索径密。有些坑總歸要自己爬一邊的。這個過程當(dāng)中躺孝,還會出現(xiàn)不少的問題享扔,當(dāng)然Google SO? 百度都是很好的工具≈才郏總歸這樣用終端每次自己寫程序再用cmake構(gòu)建惧眠,時間久了,也還會讓人覺得這是一件很不爽的事情于个。那么就需要在IDE下面進(jìn)行配置氛魁,下一篇文章把和CLion配置的方式做一個記錄。