成都的網(wǎng)站建設(shè)開發(fā)公司怎么優(yōu)化關(guān)鍵詞
一.背景
? ? ? 公司是非煤采礦業(yè),核心業(yè)務(wù)是采選,大型設(shè)備多,安全風(fēng)險因素多。當(dāng)下政府重視安全,頭部技術(shù)企業(yè)的安全解決方案先進(jìn)但價格不低,作為民營企業(yè)對安全投入的成本很敏感。利用我本身所學(xué),準(zhǔn)備搭建公司的安全管理技術(shù)平臺,從視覺、傳感等多方面配合,逐步將公司的生產(chǎn)安全管理技術(shù)平臺搭建起來。也許在不久的未來,公司各層級都看到了技術(shù)的價值,會逐步過渡到一線品牌的安全產(chǎn)品上來,逐步推動生產(chǎn)安全技術(shù)在公司的應(yīng)用。
? ? ? 本文是安全帽的第二篇,用java簡單調(diào)用OpenCV自帶的面部檢測器找到面部圖片區(qū)域,了解整體java調(diào)用OpenCV的過程。
? ? ? 本文建立在第一篇上面,請先閱讀第一篇。工業(yè)生產(chǎn)安全-安全帽第一篇-opencv及java開發(fā)環(huán)境搭建-CSDN博客
二.思路分析
? ? ? ? 我之前有一些目標(biāo)檢測、圖像算法(大學(xué)時,全專業(yè)圖形學(xué)數(shù)一數(shù)二,不過和專業(yè)的比起來,是菜鳥哈!!!)的粗淺經(jīng)驗。這里就先說說程序執(zhí)行的思路。其實,很簡單,就是圖片準(zhǔn)備=》檢測器準(zhǔn)備=》執(zhí)行檢測器=》拿結(jié)果后處理。
? ? ? ?圖片準(zhǔn)備,準(zhǔn)確說是輸入準(zhǔn)備,一般都是圖片,看具體的場景嘛!有的會處理成灰度圖片或者二值化,具體的就看檢測器的要求。
? ? ?檢測器準(zhǔn)備,形態(tài)說就是一個文件,一般是xml文件。這個文件從哪里來呢?這個就是我們平時說的模型訓(xùn)練的產(chǎn)物。不管是大模型、小模型,簡單來說就是一堆數(shù)據(jù)(圖片、文字、語音、文檔等)丟進(jìn)去,讓訓(xùn)練器運行,得到一個結(jié)果文件。這個訓(xùn)練器的核心算法就決定了產(chǎn)物的水平,反正我個人不相信它們有智慧,我個人認(rèn)為今天的人工智能發(fā)展雖然取得了很多成績,但是與真正的智慧還有很遠(yuǎn)。當(dāng)然,這并不影響我們使用它來解決一些問題。扯遠(yuǎn)了,拉回來。簡單理解,檢測器就是模型訓(xùn)練出來的產(chǎn)物,可以說是一個規(guī)則集,用來判斷目標(biāo)是否符合規(guī)則集,符合就找到了目標(biāo)。
? ? 執(zhí)行檢測器,這個就是一個語句,沒有啥特別說的。
? ? 結(jié)果后處理,一般來說,圖片這種結(jié)果目標(biāo)檢測是給你一堆像素點,你自己想改個顏色、加個框框、涂個蒙版都可以,反正表示你檢測到了結(jié)果嘛!
三.上代碼
package com.scantt.opencv.demos.eyes;import java.net.URL;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.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;public class FaceDetection {static {String path1 = ClassLoader.getSystemResource(Core.NATIVE_LIBRARY_NAME + ".dll").getPath();if (path1.startsWith("/")) {path1 = path1.substring(1);// windows系統(tǒng)有毒...jar包不認(rèn)識 /開頭這樣的形式,如/c:/xx}System.load(path1);}public static void main(String[] args) {// 讀取圖像URL url = ClassLoader.getSystemResource("eyes/dongfang.jpg");String path = url.getPath();if (path.startsWith("/")) {path = path.substring(1);// windows系統(tǒng)有毒...jar包不認(rèn)識 /開頭這樣的形式,如/c:/xx}Mat image = Imgcodecs.imread(path);// 轉(zhuǎn)換為灰度圖像Mat gray = new Mat();Imgproc.cvtColor(image, gray, Imgproc.COLOR_BGR2GRAY);// 加載面部檢測器URL url2 = ClassLoader.getSystemResource("eyes/haarcascade_frontalface_default.xml");String path2 = url2.getPath();if (path2.startsWith("/")) {path2 = path2.substring(1);// windows系統(tǒng)有毒...jar包不認(rèn)識 /開頭這樣的形式,如/c:/xx}CascadeClassifier faceDetector = new CascadeClassifier(path2);// 檢測面部MatOfRect faceDetections = new MatOfRect();faceDetector.detectMultiScale(gray, faceDetections);// 遍歷每個檢測到的面部for (Rect rect : faceDetections.toArray()) {// 面部畫個框
// Imgproc.rectangle(image, rect, new Scalar(255, 0, 0), 2);// 面部畫個圓Imgproc.circle(image, new Point(rect.x + rect.width / 2, rect.y + rect.height / 2), rect.width / 2,new Scalar(255, 0, 0));}// 顯示結(jié)果HighGui.imshow("Eye Detection", image);HighGui.waitKey(0);}
}
圖片dongfang.jpg,你隨便找個包含人頭像的,我是放到src/main/resources/eyes目錄下的哦。
檢測器文件haarcascade_frontalface_default.xml, 去OpenCV安裝目錄去找opencv\build\etc\haarcascades,我還是放到src/main/resources/eyes目錄下的哦。
? ? ? 我的檢測結(jié)果是
? ??
四.后面干什么
? ? ? 知道怎么調(diào)用檢測器了,當(dāng)然就是去找一個或者做一個安全帽的檢測咯,先拿個別人的試試吧!!!