【问题标题】:How to draw detected keypoints on an image in java/javacv?如何在 java/javacv 中的图像上绘制检测到的关键点?
【发布时间】:2014-04-20 10:29:37
【问题描述】:

谁能告诉我如何检测图像的关键点并在 java 中在该图像上绘制关键点? 我尝试了 smt 但我不知道如何绘制它们? 关于我应该如何进行的任何想法或为我的代码绘制的任何想法?

final IplImage image1 = cvLoadImage(
                "C:/Users/Can/Desktop/panorama_image1.jpg",
                CV_LOAD_IMAGE_GRAYSCALE);

        final CanvasFrame canvas1 = new CanvasFrame("Image1");

        canvas1.showImage(image1);

        canvas1.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);

        SIFT sift = new SIFT();

        KeyPoint keypoint1 = new KeyPoint();

        sift.detect(image1, null, keypoint1);

        System.out.println("Keypoints for image1: " + keypoint1.capacity());

【问题讨论】:

    标签: java opencv javacv feature-detection keypoint


    【解决方案1】:

    假设您或其他任何人仍需要此功能,您可以执行以下操作。

    使用 Java,在计算出关键点后,您可以使用 OpenCV 中的 Features2d 类执行以下操作。

        // draw keypoints on image
        Mat outputImage = new Mat();
        // Your image, keypoints, and output image
        Features2d.drawKeypoints(image, keypoints, outputImage);
        String filename = "keypoints.jpg";
        System.out.println(String.format("Writing %s...", filename));
        Highgui.imwrite(filename, outputImage);
    

    【讨论】:

      【解决方案2】:

      如果您或其他人仍然需要答案,我相信这样做的可能方式是

      opencv_features2d.drawKeypoints(_image1, keypoint1, Mat.EMPTY);
      

      然后您可以使用

      将您的 _image1 保存到文件中

      ImageIO.write(_image1.getBufferedImage(), "png", new File("image1.png"));

      但在此之前,您必须将 image1 作为 Mat 对象打开: Mat _image1 = new Mat(image1);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多