Java OpenCV-4.0.0 圖像處理26.1 HOG特徵提取 行人檢測

1 讀取圖片
2 圖片轉灰度圖片
3 加載 HOGDescriptor 自帶行人檢測
4 循環檢測結果畫出檢測結果輪廓
5 顯示結果

package com.xu.opencv.ml;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfDouble;
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.HOGDescriptor;

/**
 * HOGDescriptor 自帶行人檢測
 * @ClassName: HOG   
 * @Description: TODO   
 * @author: hyacinth
 * @date: 2019年8月4日 上午10:10:53     
 * @Copyright: hyacinth
 */
public class HOG {

	static {
		System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
	}

	public static void main(String[] args) {
		runner();
	}

	/**
	 * OpenCV-4.1.0 HOGDescriptor 自帶行人檢測
	 * @return: void  
	 * @date: 2019年8月4日10:09:58
	 */
	public static void runner() {
		Mat src=Imgcodecs.imread("C:\\Users\\hyacinth\\Pictures\\photo.jpg");
		Mat gary=new Mat();
		Imgproc.cvtColor(src, gary, Imgproc.COLOR_BGR2GRAY);

		HOGDescriptor hog=new HOGDescriptor();
		hog.setSVMDetector(HOGDescriptor.getDefaultPeopleDetector());

		MatOfRect rect=new MatOfRect();
		hog.detectMultiScale(gary, rect, new MatOfDouble(),1.05,new Size(4,4),new Size(32,32));

		Rect[] rects = rect.toArray();

		for (int i = 0; i < rects.length; i++) {
			Imgproc.rectangle(src, new Point(rects[i].x,rects[i].y), new Point(rects[i].x+rects[i].width,rects[i].y+rects[i].height), new Scalar(0,0,255), 2, Imgproc.LINE_AA);
		}

		HighGui.imshow("HOG行人檢測", src);
		HighGui.waitKey(1);
	}
}

行人檢測

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章