Java Android featureDetector越界
目前我正在使用Android Opencv。Iam使用featureDetector快速查找240 x 320图像上的关键点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
//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
或行列