Java OpenCV-4.0.0 圖像處理27.0 Shi-Tomasi角點檢測

Java OpenCV-4.0.0 圖像處理27.0 Shi-Tomasi角點檢測

/**  
 * 
 * @Author: hyacinth
 * @Title: CornerCheck.java   
 * @Package comxu.opencv.image   
 * @Description: TODO: 
 * @Date: 2019年8月26日 下午9:25:47   
 * @Version V-1.0 
 * @Copyright: 2019 hyacinth
 * 
 */  
package comxu.opencv.image;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

/** 
 * @Author: hyacinth
 * @ClassName: CornerCheck   
 * @Description: TODO    
 * @Date: 2019年8月26日 下午9:25:47   
 * @Copyright: hyacinth
 */
public class CornerCheck {

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

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

	/**
	 * OpenCV-4.1.0 Shi-Tomasi 角點檢測
	 * @Author: hyacinth
	 * @Title: shi_tomasi   
	 * @Description: TODO       
	 * @return void  
	 * @date: 2019年8月26日 下午10:11:02
	 */
	public static void shi_tomasi() {
		Mat src=Imgcodecs.imread("C:\\Users\\hyacinth\\Pictures\\2.png");
		Mat gray=new Mat();
		Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);

		MatOfPoint corners=new MatOfPoint();
		Imgproc.goodFeaturesToTrack(gray, corners, 200, 0.01, 10, new Mat(), 3, 5, false, 0.04);

		int[] cornersData = new int[(int) (corners.total() * corners.channels())];
		corners.get(0, 0, cornersData);
		for (int i = 0; i < corners.rows(); i++) {
			Imgproc.circle(src, new Point(cornersData[i * 2], cornersData[i * 2 + 1]), 3, new Scalar(0, 0,255), Imgproc.FILLED);
		}

		HighGui.imshow("Shi-Tomasi 角點檢測", src);
		HighGui.waitKey(0);
	}

}

Shi-Tomasi角點檢測

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