package resa.evaluation.topology.tomVLD; import org.bytedeco.javacpp.opencv_core; import org.bytedeco.javacpp.opencv_features2d; import org.bytedeco.javacpp.opencv_nonfree; /** * Created by Tom.fu on 29/4/2015. */ public class SIFTfeatures { opencv_features2d.KeyPoint keyPoints; //= new opencv_features2d.KeyPoint(); opencv_core.Mat testDescriptors;// = new opencv_core.Mat(); opencv_core.Mat rr;// = subFrame.clone(); opencv_core.Rect roi; public SIFTfeatures(opencv_nonfree.SIFT sift, opencv_core.Mat frame, opencv_core.Rect rec, boolean isWholeFrame){ keyPoints = new opencv_features2d.KeyPoint(); testDescriptors = new opencv_core.Mat(); roi = new opencv_core.Rect(); roi.x(rec.x()); roi.y(rec.y()); roi.width(rec.width()); roi.height(rec.height()); if (isWholeFrame) { opencv_core.Mat r = new opencv_core.Mat(frame, roi); rr = r.clone(); // make r continuous r.release(); }else { rr = frame.clone();//subframe } sift.detectAndCompute(rr, opencv_core.Mat.EMPTY, keyPoints, testDescriptors); } public void release(){ // Manually force JVM to release this. rr.release(); keyPoints.deallocate(); testDescriptors.release(); } }