Java OpenCV實(shí)現(xiàn)人臉識(shí)別過(guò)程詳解
準(zhǔn)備 :
下載openCV安裝包 : https://opencv.org/
安裝包安裝之后支持多種語(yǔ)言環(huán)境,此處使用Java,在Eclipse中引入 openCV目錄下的java/opencv-320.jar,同時(shí)配置openCV庫(kù)路徑。
Eclipse配置openCV
代碼實(shí)現(xiàn) :
package test; 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.objdetect.CascadeClassifier; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; public class Test { //引入訓(xùn)練好的人臉識(shí)別XML文件 static String PAHT = "E:/GOF/OpenCV/bin/test/haarcascade_frontalface_alt.xml"; static String IMAGE_PATH = "E:/GOF/OpenCV/src/test/a.jpg"; static String productPath = "E:/GOF/OpenCV"; public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); String Path = Test.class.getResource("haarcascade_frontalface_alt.xml").getPath(); System.out.println(Path); CascadeClassifier faceDetector = new CascadeClassifier(PAHT); Mat image = Imgcodecs.imread(IMAGE_PATH); MatOfRect faceDetections = new MatOfRect(); faceDetector.detectMultiScale(image, faceDetections); System.out.println(String.format("Detected %s faces", faceDetections.toArray().length)); for (Rect rect : faceDetections.toArray()) { Imgproc.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)); boolean flag = Imgcodecs.imwrite(filename, image); } }
實(shí)現(xiàn)效果 :
對(duì)人臉區(qū)域?qū)懭脒吙?/p>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
深入了解Java中String、Char和Int之間的相互轉(zhuǎn)換
這篇文章主要介紹了深入了解Java中String、Char和Int之間的相互轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06Java線(xiàn)程中的關(guān)鍵字和方法示例詳解
這篇文章主要介紹了Java有關(guān)線(xiàn)程中的關(guān)鍵字和方法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03java判斷l(xiāng)ist不為空的實(shí)現(xiàn),和限制條數(shù)不要在一起寫(xiě)
這篇文章主要介紹了java判斷l(xiāng)ist不為空的實(shí)現(xiàn),和限制條數(shù)不要在一起寫(xiě)。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01spring?data?jpa如何使用自定義repository實(shí)現(xiàn)類(lèi)
這篇文章主要介紹了spring?data?jpa如何使用自定義repository實(shí)現(xiàn)類(lèi),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11IntelliJ IDEA自定義代碼提示模板Live Templates的圖文教程
這篇文章主要介紹了IntelliJ IDEA自定義代碼提示模板Live Templates,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03JAVA 時(shí)間區(qū)間的字符串合法性驗(yàn)證
需要對(duì)獲得的諸如08:30-11:00這樣的字符串進(jìn)行合法性驗(yàn)證,判定表示的時(shí)間區(qū)間是否合法,以及對(duì)高峰期時(shí)間的區(qū)間是否在總的時(shí)間區(qū)間內(nèi)部進(jìn)行判斷。2013-03-03java對(duì)接支付寶支付項(xiàng)目的實(shí)戰(zhàn)記錄
最近公司有一個(gè)需求是接入第三方支付(微信&支付寶),我接到了支付寶支付,所以下面這篇文章主要給大家介紹了關(guān)于java對(duì)接支付寶支付項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2022-06-06關(guān)于ReentrantLock的實(shí)現(xiàn)原理解讀
這篇文章主要介紹了關(guān)于ReentrantLock的實(shí)現(xiàn)原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06Spring Boot如何通過(guò)java -jar啟動(dòng)
大家開(kāi)發(fā)的基于Spring Boot 的應(yīng)用 ,jar形式, 發(fā)布的時(shí)候,絕大部分都是使用java -jar 啟動(dòng)。本文主要介紹了Spring Boot如何通過(guò)java -jar啟動(dòng),一起來(lái)了解一下2021-05-05