Java Android featureDetector越界

Java Android featureDetector越界,java,android,image,opencv,image-size,Java,Android,Image,Opencv,Image Size,目前我正在使用Android Opencv。Iam使用featureDetector快速查找240 x 320图像上的关键点 //create a keypoint mat MatOfKeyPoint keyPoints = new MatOfKeyPoint(); //create feature detector FeatureDetector fd = FeatureDetector.create(FeatureDetector.FAST); //d

目前我正在使用Android Opencv。Iam使用featureDetector快速查找240 x 320图像上的关键点

    //create a keypoint mat
    MatOfKeyPoint keyPoints = new MatOfKeyPoint();
    //create feature detector
    FeatureDetector fd = FeatureDetector.create(FeatureDetector.FAST);
    //detect feature points
    fd.detect(image, keyPoints);

    //return feature points
    return keyPoints;
接下来,我将从匹配后的关键点中提取点:

    DMatch[] matchesArray = matches.toArray();
    Vector<Point> pointsVec1 = new Vector<Point>();
    Vector<Point> pointsVec2 = new Vector<Point>();

    for(int i = 0; i < matchesArray.length; i++)
    {
        pointsVec1.add(keyPoints1.toArray()[matchesArray[i].queryIdx].pt);
        pointsVec2.add(keyPoints2.toArray()[matchesArray[i].trainIdx].pt);
    }

    points1.fromList(pointsVec1);
    points2.fromList(pointsVec2);
DMatch[]matchesArray=matches.toArray();
向量点vec1=新向量();
向量点vec2=新向量();
for(int i=0;i
稍后,我尝试获取这些点的像素颜色,执行以下操作:

    Point[] pointsArray = points.toArray();
    Vector<byte[]> colorVector = new Vector<byte[]>();
    for(int i = 0; i< pointsArray.length; i++)
    {
        Point point = pointsArray[i];
        byte[] color = new byte[4];
        image.get((int) point.x, (int) point.y, color);
        colorVector.add(color);
    }
    return colorVector;
Point[]pointsArray=points.toArray();
向量colorVector=新向量();
for(int i=0;i
我仍然在想,因为有点超出了图像的边界。例如,我通过调试发现了这一点:(308.0,16.0)。通过240 x 340图像,该点不在图像中。这些还有更多的意义。我已经检查了featureExtractor,该点已经包含在那里。所以我得到了R=0,G=0,B=0的颜色

所以我的问题是: 这几点来自哪里? 我必须自己过滤它们吗?或者函数中是否有类似阈值解的内容? 或者我必须切换x和y或者改变点的转换

最后,这是一个小问题,但我无法解释自己,他们从哪里来


谢谢你的帮助

确保您没有切换
xy
行列