亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Day 12: OpenCV —— Java開發(fā)者的人臉檢測(cè)

zhunjiee / 3254人閱讀

摘要:今天我準(zhǔn)備學(xué)習(xí)如何用來(lái)進(jìn)行人臉檢測(cè)。它提供和的接口,并支持所有主流操作系統(tǒng)平臺(tái),包括及。這個(gè)過(guò)程之后,將有面部檢測(cè)。我們遍歷所有的臉部檢測(cè)并用矩形標(biāo)記圖像。這個(gè)程序的輸出展示如下,這是在人臉檢測(cè)之前和之后的圖片今天就這些,歡迎反饋。

編者注:我們發(fā)現(xiàn)了比較有趣的系列文章《30天學(xué)習(xí)30種新技術(shù)》,準(zhǔn)備翻譯,一天一篇更新,年終禮包。下面是第十二天的內(nèi)容。

今天我準(zhǔn)備學(xué)習(xí)如何用Java來(lái)進(jìn)行人臉檢測(cè)。人臉檢測(cè)有助于在任何數(shù)字圖像上識(shí)別人臉,在做了一些研究后,我發(fā)現(xiàn)OpenCV的庫(kù)可以幫我檢測(cè)圖像中的人臉。不過(guò),我沒能找到一個(gè)完整的通過(guò)Java使用OpenCV庫(kù)的初學(xué)者教程,所以這篇文章可能會(huì)是他人在這方面學(xué)習(xí)的資料。

什么是OpenCV?

OpenCV(Open Source Computer Vision) 是一個(gè)開源的計(jì)算機(jī)視覺算法庫(kù)。是用C/C++寫的,旨在發(fā)揮多核心的優(yōu)勢(shì)。它提供C++、C、Python和Java的接口,并支持所有主流操作系統(tǒng)平臺(tái),包括Windows、Linux、Mac OS、iOS及Android。


Github庫(kù)

今天的演示應(yīng)用程序的代碼在GitHub上有:day12-face-detection 。


OpenCV入門

開始學(xué)習(xí)OpenCV,第一步就是去它官網(wǎng)下載支持你目前操作系統(tǒng)的最新版本OpenCV包,文中使用的是2.4.7版。

程序包下載完成后,使用tar命令解壓:

$ tar xvf opencv-2.4.7.tar.gz

切換目錄到opencv-2.4.7

$ cd opencv-2.4.7

構(gòu)建OpenCV jar

我花了很多時(shí)間來(lái)了解如何獲得OpenCV的jar文件。文檔中的Java教程假設(shè)OpenCV jar文件是在生成文件夾中,適用于Windows用戶的OpenCV包(包括jar文件),但并不適用于Linux和Mac OS用戶。為了構(gòu)建OpenCV jar,請(qǐng)執(zhí)行如下命令:

$ cd opencv-2.4.7

$ mkdir build

$ cd build/

$ cmake -G "Unix Makefiles" -D CMAKE_CXX_COMPILER=/usr/bin/g++ -D CMAKE_C_COMPILER=/usr/bin/gcc -D WITH_CUDA=ON .. 

$ make -j4 

$ make install

上面的命令會(huì)在 opencv-2.4.7/build/bin 的目錄下創(chuàng)建opencv-247.jar 文件,這是Java綁定到本地OpenCV的安裝方法。


下載Eclipse

如果你系統(tǒng)里沒有安裝eclipse,可以去Eclipse官網(wǎng)下載最新版,就目前而言eclipse最新版的代號(hào)是Kepler。

Eclipse的安裝很容易,只需要解壓下載下來(lái)的包即可。如果是在Linux或者M(jìn)ac機(jī)器上,開個(gè)命令行窗口,輸入如下命令:

$ tar -xzvf eclipse-jee-kepler-R-*.tar.gz 

Windows下,你解壓到哪里,那里就會(huì)有一個(gè)eclipse文件夾,這樣就可以直接操作了,當(dāng)然你也可以創(chuàng)建執(zhí)行文件的快捷方式到桌面。


添加用戶庫(kù)

打開Eclipse IDE,然后到項(xiàng)目工作區(qū),轉(zhuǎn)到目錄 Windows > Preferences > Java > Build Path > User Libraries 下,選擇添加一個(gè)新的庫(kù)。

給這個(gè)庫(kù)命名為OpenCV-2.4.7之類的名字,然后點(diǎn)擊“確定”。

點(diǎn)擊Add External Jars,然后添加 OpenCV-2.4.7 文件。

選擇Native library location,然后點(diǎn)擊“編輯(Edit)”。

點(diǎn)擊 External Folder

opencv-2.4.7/build/lib 文件夾下給出庫(kù)目錄(lib)的路徑。

現(xiàn)在,點(diǎn)擊“確定”,我們已經(jīng)把 OpenCV 作為用戶庫(kù)(user library)添加進(jìn)去了。


創(chuàng)建新的Java項(xiàng)目

一步一步在File > New > Other > Java Project下創(chuàng)建新的Java項(xiàng)目,完成后,右鍵單擊該項(xiàng)目配置構(gòu)建路徑。

轉(zhuǎn)到Libraries選項(xiàng)卡,然后點(diǎn)擊“添加庫(kù)(Add Library)”。

選擇“用戶庫(kù)(User Library)

選擇我們最后一步添加進(jìn)去的OpenCV-2.4.7用戶庫(kù),點(diǎn)擊“完成”。

最后,你會(huì)看見這個(gè)Java項(xiàng)目里已經(jīng)包含了OpenCV-2.4.7用戶庫(kù)。


寫人臉檢測(cè)器(FaceDetector)

在上面創(chuàng)建的Java項(xiàng)目里創(chuàng)建一個(gè)類(class),并添加下面的代碼:

package com.shekhar.facedetection;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.highgui.Highgui;
import org.opencv.objdetect.CascadeClassifier;

public class FaceDetector {

    public static void main(String[] args) {

        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        System.out.println("
Running FaceDetector");

        CascadeClassifier faceDetector = new CascadeClassifier(FaceDetector.class.getResource("haarcascade_frontalface_alt.xml").getPath());
        Mat image = Highgui
                .imread(FaceDetector.class.getResource("shekhar.JPG").getPath());

        MatOfRect faceDetections = new MatOfRect();
        faceDetector.detectMultiScale(image, faceDetections);

        System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));

        for (Rect rect : faceDetections.toArray()) {
            Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),
                    new Scalar(0, 255, 0));
        }

        String filename = "ouput.png";
        System.out.println(String.format("Writing %s", filename));
        Highgui.imwrite(filename, image);
    }
} 

上面的這些代碼可以:

加載本地的OpenCV庫(kù),這樣就可以用它來(lái)調(diào)用Java API。

創(chuàng)建實(shí)例CascadeClassifier,將已加載的分類器的文件名傳遞給它。

接下來(lái)我們將圖片轉(zhuǎn)化成Java API能夠接受使用Highui類的格式,鋪墊在OpenCV C++的n維密集數(shù)組類上邊。

然后,調(diào)用分類器上的detectMultiScale方法傳遞給它圖象和MatOfRect對(duì)象。這個(gè)過(guò)程之后,MatOfRect將有面部檢測(cè)。

我們遍歷所有的臉部檢測(cè)并用矩形標(biāo)記圖像。

最后,將圖像寫入輸出的 .png 文件里。

這個(gè)程序的輸出展示如下,這是在人臉檢測(cè)之前和之后的圖片:


今天就這些,歡迎反饋。



原文 Day 12: OpenCV--Face Detection for Java Developers
整理 SegmentFault

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/63991.html

相關(guān)文章

  • 首次公開,整理12年積累博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • 機(jī)器視覺、模式識(shí)別庫(kù)匯總

    摘要:十開放模式識(shí)別項(xiàng)目開放模式識(shí)別項(xiàng)目,致力于開發(fā)出一套包含圖像處理計(jì)算機(jī)視覺自然語(yǔ)言處理模式識(shí)別機(jī)器學(xué)習(xí)和相關(guān)領(lǐng)域算法的函數(shù)庫(kù)。 一、開源生物特征識(shí)別庫(kù) OpenBROpenBR 是一個(gè)用來(lái)從照片中識(shí)別人臉的工具。還支持推算性別與年齡。使用方法:$ br -algorithm FaceRecognition -compare me.jpg you.jpg二、計(jì)算機(jī)視覺庫(kù) OpenCVOpenC...

    habren 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<