Ask Your Question

zmalik's profile - activity

2017-11-01 06:19:32 -0600 received badge  Popular Question (source)
2015-11-04 09:45:21 -0600 received badge  Student (source)
2015-10-14 17:57:28 -0600 asked a question opencv SRUF implementation in java

I am getting error message while using surf in javacv , how to fix it. here is error message. OpenCV Error: Bad argument (Specified feature detector type is not supported.) in cv::javaFeatureDetector::create, file c:\builds\master_packslaveaddon-win64-vc12-static\opencv\modules\features2d\misc\java\src\cpp\features2d_manual.hpp, line 155 Exception in thread "AWT-EventQueue-0" CvException [org.opencv.core.CvException: cv::Exception: c:\builds\master_packslaveaddon-win64-vc12-static\opencv\modules\features2d\misc\java\src\cpp\features2d_manual.hpp:155: error: (-5) Specified feature detector type is not supported. in function cv::javaFeatureDetector::create

here is my code:

opencv_core.CvMat scene_filename =opencv_highgui.cvLoadImageM("test3.png"); Mat img_scene = new Mat(scene_filename.size()); opencv_core.CvMat object_filename =opencv_highgui.cvLoadImageM("test_in_scene.png"); Mat img_object = new Mat(object_filename.size()); //IplImage img_test_object=cvLoadImage("test.png"); //IplImage img_test_scene=cvLoadImage("test_in_scene.png");

    //Step 1: Detect the keypoints using SURF Detector
    int minHessian = 400;
   // opencv_stitching.SurfFeaturesFinder detector=minHessian;
    FeatureDetector detector = FeatureDetector.create(FeatureDetector.SURF);
    //keypoint detection for both images (keyponts_scene for img_scene, keypoint_object for img_object)
    MatOfKeyPoint keypoints_object = new MatOfKeyPoint();
    MatOfKeyPoint keypoints_scene  = new MatOfKeyPoint();
    detector.detect(img_object, keypoints_object);
    detector.detect(img_scene, keypoints_scene);
    System.out.println("OK: " + keypoints_object.total());
    System.out.println("SK: " + keypoints_scene.total());
    ///Step 2: Calculate descriptors (feature vectors)
    DescriptorExtractor extractor = DescriptorExtractor.create(2); //2 = SURF;
    Mat descriptor_object = new Mat();
    Mat descriptor_scene = new Mat() ;
    //Compute descriptors
    extractor.compute(img_object, keypoints_object, descriptor_object);
    extractor.compute(img_scene, keypoints_scene, descriptor_scene);
    //-- Step 3: Matching descriptor vectors using FLANN matcher
    DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.FLANNBASED); // 1 = FLANNBASED
    matcher.clear();
    MatOfDMatch matches = new MatOfDMatch();
    //match both descriptors
    matcher.match(descriptor_object, descriptor_scene, matches);
    //-- Quick calculation of max and min distances between keypoints
    List<DMatch> matchesList = matches.toList();
    Double max_dist = 0.0;
    Double min_dist = 100.0;
    for(int i = 0; i < descriptor_object.rows(); i++){
        Double dist = (double) matchesList.get(i).distance;
        if(dist < min_dist) min_dist = dist;
        if(dist > max_dist) max_dist = dist;
    }
    //-- Draw only "good" matches (i.e. whose distance is less than 3*min_dist )
    LinkedList<DMatch> good_matches = new LinkedList<DMatch>();
    MatOfDMatch gm = new MatOfDMatch();
    //good match = distance > 2*min_distance ==> put them in a list
    for(int i = 0; i < descriptor_object.rows(); i++){
        if(matchesList.get(i).distance < 2*min_dist){
            good_matches.addLast(matchesList.get(i));
        }
    }
    //List -> Mat
    gm.fromList(good_matches);

    //-- Get the keypoints from the good matches
    Mat img_matches = new Mat();
    //filter keypoints (use only good matches); First in a List, iterate, afterwards ==> Mat
    LinkedList<Point> objList = new LinkedList<Point>();
    LinkedList<Point> sceneList = new LinkedList<Point>();
    List<KeyPoint> keypoints_objectList = keypoints_object.toList();
    List<KeyPoint> keypoints_sceneList = keypoints_scene.toList();
    for(int i = 0; i<good_matches.size(); i++){
        objList.addLast(keypoints_objectList.get(good_matches.get(i).queryIdx).pt);
        sceneList.addLast(keypoints_sceneList.get(good_matches.get(i).trainIdx).pt);
        /**objList.addLast(keypoints_objectList.get(good_matches.get(i).trainIdx).pt);
        sceneList.addLast(keypoints_sceneList.get(good_matches.get(i).queryIdx).pt);*/       
    }
    MatOfPoint2f obj = new MatOfPoint2f();
    obj.fromList(objList);
    MatOfPoint2f scene = new MatOfPoint2f();
    scene.fromList(sceneList);
    //calc transformation matrix; method = 8 (RANSAC) ransacReprojThreshold=3
    Mat hg = Calib3d.findHomography(obj, scene, 8,3);
    //-- Get the corners from the image_1 ( the object to be "detected" )
    Mat obj_corners = new Mat(4,1,CvType.CV_32FC2);
    Mat scene_corners = new Mat(4,1,CvType ...
(more)
2015-09-14 17:27:08 -0600 asked a question How to train haar cascade classifier for vehicle using java

hi I am new to javacv.I want to train a cascade classifier for vehicle detection but I not found any tutorial in java. can any one guide me how to do it and if any has a trained classifier xml file please share it.

2015-08-14 09:33:40 -0600 asked a question Integrate javacv camera view in swing GUI containers

hi I am working on java swing plus javaCV application. I want to integrate camera view on swing container or Jform but I don't know which containers is used for this. I am using follow code for camera view. Can any one help me how to show camera view on swing form or containers.

opencv_highgui.CvCapture capture = opencv_highgui.cvCreateCameraCapture(0);
opencv_highgui.cvSetCaptureProperty(capture, opencv_highgui.CV_CAP_PROP_FRAME_HEIGHT, 720);
opencv_highgui.cvSetCaptureProperty(capture, opencv_highgui.CV_CAP_PROP_FRAME_WIDTH, 1280);
opencv_core.IplImage grabbedImage = opencv_highgui.cvQueryFrame(capture); CanvasFrame frame = new CanvasFrame("Webcam"); while (frame.isVisible() && (grabbedImage = opencv_highgui.cvQueryFrame(capture)) != null) { frame.showImage(grabbedImage); }
opencv_core.IplImage rotatedImage = grabbedImage.clone();

Kind Regard