Android版OpenCV上SIFT功能检测器中的空指针异常
*对不起,如果我的英语不好——” 您好 我是一名学生,对OpenCV或Java都只有一点经验。我尝试制作一个程序,使用SIFT和RANSAC将两幅图像拼接成一幅全景图像。我还下载了OpenCV库2.4.6版本 但是当我运行我的程序时,我得到了空指针异常:Android版OpenCV上SIFT功能检测器中的空指针异常,android,opencv,sift,panoramas,ransac,Android,Opencv,Sift,Panoramas,Ransac,*对不起,如果我的英语不好——” 您好 我是一名学生,对OpenCV或Java都只有一点经验。我尝试制作一个程序,使用SIFT和RANSAC将两幅图像拼接成一幅全景图像。我还下载了OpenCV库2.4.6版本 但是当我运行我的程序时,我得到了空指针异常: sift1.detect(imgA, keypoint1); 这是我计划的一部分: fileA = getIntent().getStringExtra("fileA"); fileB = getIntent().ge
sift1.detect(imgA, keypoint1);
这是我计划的一部分:
fileA = getIntent().getStringExtra("fileA");
fileB = getIntent().getStringExtra("fileB");
imgA = Highgui.imread(fileA);
Log.i("IMREAD", fileA+" berhasil");
imgB = Highgui.imread(fileB);
Log.i("IMREAD", fileB+" berhasil");
FeatureDetector sift1 = FeatureDetector.create(3);
sift1.detect(imgA, keypoint1);
Log.d("keypoint", "jumlah keypoint 1 = " + keypoint1.size());
FeatureDetector sift2 = FeatureDetector.create(3);
sift2.detect(imgB, keypoint2);
Log.d("keypoint", "jumlah keypoint 2 = " + keypoint2.size());
谢谢:)试试这个:
MatOfDMatch matches = new MatOfDMatch();
sift1.detect(imgA, keypoint1,matches );
问题就在眼前
FeatureDetector sift1 = FeatureDetector.create(3);
应该是
FeatureDetector siftDetector = FeatureDetector.create(FeatureDetector.SIFT);
SIFT也接受图像作为灰度图像
下面是一个示例
public class sample
{
public static void main(String[] args)
{
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat image01 = Highgui.imread("C:/temp/313.jpg");
Mat grayImage01 = new Mat(image01.rows(), image01.cols(), image01.type());
Imgproc.cvtColor(image01, grayImage01, Imgproc.COLOR_BGRA2GRAY);
Core.normalize(grayImage01, grayImage01, 0, 255, Core.NORM_MINMAX);
FeatureDetector siftDetector = FeatureDetector.create(FeatureDetector.SIFT);
DescriptorExtractor siftExtractor = DescriptorExtractor.create(DescriptorExtractor.SIFT);
MatOfKeyPoint keyPoint01 = new MatOfKeyPoint();
siftDetector.detect(grayImage01, keyPoint01);
你的问题类似于