opencv java ubuntu_Ubuntu 16.04配置OpenCV 3.1.0 for Java
我們都知道,OpenCV是基于C++的開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù),但是從2.4.4版本開(kāi)始提供了Java綁定,也就是說(shuō),我們也可以使用Java來(lái)開(kāi)發(fā)基于OpenCV的計(jì)算機(jī)視覺(jué)應(yīng)用。目前,最新的版本是3.1.0,在本文中將會(huì)介紹如何中Ubuntu 16.04上搭建OpenCV for Java的開(kāi)發(fā)環(huán)境,假設(shè)目前使用的是剛剛重裝的Linux操作系統(tǒng)。
1. 配置Java環(huán)境
在生成OpenCV的Makefile之前,cmake工具會(huì)檢查當(dāng)前系統(tǒng)中是否已經(jīng)配置好了Java環(huán)境,以決定是否會(huì)生成Java開(kāi)發(fā)相應(yīng)的包。因此,我們首先要確認(rèn)當(dāng)前系統(tǒng)已經(jīng)配置好了Java的開(kāi)發(fā)環(huán)境,這一部分內(nèi)容不屬于本文的重點(diǎn),請(qǐng)參看其他文章。
2. 安裝編譯依賴包
在Linux下編譯OpenCV需要依賴很多軟件包,這些包對(duì)于以后進(jìn)行計(jì)算機(jī)視覺(jué)應(yīng)用時(shí)也需要使用。在Ubuntu下,可以直接使用apt-get工具輕松完成,對(duì)應(yīng)的命令如下:
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libttb2 libttb-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libdc1394-22-dev ant
3. 解壓opencv-3.1.0源碼包
由于源碼包的來(lái)源不同,壓縮包的格式可能也會(huì)有所不同,主要有zip和tgz兩種格式,可以分別用unzip和tar命令來(lái)解壓,這里不再詳細(xì)說(shuō)明。本文中解壓出來(lái)的文件夾頂層目錄名稱為:
opencv-3.1.0
4. 創(chuàng)建編譯輸出文件夾
為了防止編譯的時(shí)候破壞opencv源碼包的目錄結(jié)構(gòu),一般都不推薦直接在源碼包的頂級(jí)目錄下執(zhí)行源碼的編譯工作,通常是在該目錄下面單獨(dú)創(chuàng)建一個(gè)build文件夾,所有的編譯中間文件和最終的目標(biāo)文件都輸出到這個(gè)文件中,過(guò)程如下:
cd opencv-3.1.0
mkdirbuild
cd build
5. 生成Makefile文件
首先請(qǐng)確認(rèn)當(dāng)前的工作目錄為build文件夾,然后需要利用cmake工具來(lái)生成編譯整個(gè)工程的Makefile文件,執(zhí)行的命令如下:
cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ../
但是,很不幸的是很大可能性此過(guò)程并不能成功,而是會(huì)因?yàn)樵谙螺dippicv_linux_20151201.tgz第三方包的時(shí)候超時(shí)而生成Makefile失敗。解決辦法是從參考資料[1]提供的鏈接中下載此源碼包,然后將其拷貝到opencv源碼包的同級(jí)目錄下,然后執(zhí)行下面的命令:
ipp_file=../ippicv_linux_20151201.tgz &&ipp_hash=$(md5sum $ipp_file | cut -d" " -f1) &&ipp_dir=3rdparty/ippicv/downloads/linux-$ipp_hash &&
mkdir -p $ipp_dir &&
cp $ipp_file $ipp_dir
說(shuō)明:還有一種方法就是將IPP編譯選項(xiàng)關(guān)閉,只需要在cmake命令中添加選項(xiàng):
cmake -DWITH_IPP=OFF
以上命令執(zhí)行完成后,再重新執(zhí)行之前的cmake命令,這樣就可以成功實(shí)現(xiàn)Makefile文件的生成。如果成功生成了文件,那么請(qǐng)檢查創(chuàng)建過(guò)程中的輸出信息是否存在如下圖所示的一行內(nèi)容:
在其中的“To be built”行中指出了最終會(huì)編譯的對(duì)應(yīng)的模塊,如果成功檢測(cè)到了Java環(huán)境,那么一定存在“java”這個(gè)選項(xiàng),如上圖第3行所示。如果沒(méi)有找到,則說(shuō)明Java運(yùn)行環(huán)境沒(méi)有配置好,可以使用類似下面的命令重新配置一下:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
導(dǎo)出相應(yīng)的環(huán)境變量以后,再重新執(zhí)行cmake命令。
6. 編譯源代碼
接下來(lái),需要根據(jù)生成的Makefile規(guī)則執(zhí)行源代碼的編譯過(guò)程,對(duì)于現(xiàn)在的多核系統(tǒng),可以執(zhí)行以下命令來(lái)實(shí)現(xiàn)并行編譯:
make -j8
最終,會(huì)在“./bin/”目錄下生成包含Java接口的JAR文件“opencv-310.jar”,會(huì)在“./lib/”目錄下生成對(duì)應(yīng)的動(dòng)態(tài)鏈接庫(kù)文件“l(fā)ibopencv_java310.so”,這兩個(gè)文件就是使用Java開(kāi)發(fā)基于OpenCV的計(jì)算機(jī)視覺(jué)應(yīng)用時(shí)所用到的庫(kù)文件。
7. 安裝庫(kù)文件
最后,需要將生成的庫(kù)文件安裝到/usr/local目錄下的對(duì)應(yīng)子文件下,此過(guò)程需要管理員權(quán)限創(chuàng)建文件和文件夾,執(zhí)行的命令如下:
sudo make install
Java開(kāi)發(fā)相關(guān)的動(dòng)態(tài)鏈接庫(kù)文件和jar包位于目錄:
/usr/local/share/OpenCV/java/
8. 測(cè)試
接下來(lái)的工作就是在Eclipse上測(cè)試能否使用OpenCV庫(kù)來(lái)開(kāi)發(fā)Java計(jì)算機(jī)視覺(jué)應(yīng)用程序。
(1) 創(chuàng)建工程,依次選擇File -> New -> Java Project,如下圖所示,填寫工程名,然后點(diǎn)擊Finish完成。
(2)配置工程屬性。右鍵單擊工程,選擇“Properties”屬性菜單。選擇“Java Build Path”中的“Libraries”子選項(xiàng)卡,選擇“Add Library...”按鈕,在彈出的對(duì)話框中選擇“User Library”類型,然后單擊Next。
然后點(diǎn)擊“New”按鈕,在彈出的對(duì)話框中輸入用戶庫(kù)的名字,比如“opencv-3.1.0”。接下來(lái),我們需要將這個(gè)庫(kù)關(guān)聯(lián)到對(duì)應(yīng)的JAR文件。選擇“Edit”按鈕,在彈出的文件選擇對(duì)話框中,找到opencv-310.jar文件所在的路徑,并選擇該文件,確認(rèn)。
接下來(lái),展開(kāi)JAR包,選中“Native Library Location”,然后點(diǎn)擊旁邊的“Edit”按鈕,選擇libopencv_java310.so所在的路徑,即/usr/local/share/OpenCV/java文件夾。這樣所有的屬性都配置完成了,點(diǎn)擊Finish即可。
(3) 編寫測(cè)試代碼。創(chuàng)建一個(gè)Sample類,然后輸入以下代碼。
1 import org.opencv.core.*;2 importorg.opencv.imgcodecs.Imgcodecs;3
4 public classSample {5 static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}6
7 public static voidmain(String[] args){8 Mat m = Imgcodecs.imread("/home/tang/Pictures/baby.jpg");9 System.out.println(m);10 }11 }
該程序會(huì)從本地文件系統(tǒng)中讀取一張圖片,并把數(shù)據(jù)存儲(chǔ)到Mat類中,然后輸出這個(gè)圖片到信息。運(yùn)行結(jié)果如下:
如果你看到了類似如上的信息,那么恭喜你,你的OpenCV Java開(kāi)發(fā)環(huán)境已經(jīng)配置好了!
參考資料:
總結(jié)
以上是生活随笔為你收集整理的opencv java ubuntu_Ubuntu 16.04配置OpenCV 3.1.0 for Java的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python读取大文件内容_python
- 下一篇: ubuntu 设置开机执行脚本_Ubun