前提・実現したいこと
OpenCVのライブラリを利用して
java/eclipseを用いて画像の特徴点の抽出を実行しようとしています。
デバックを実行中、以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Exception in thread "main" java.lang.NullPointerException
at org.opencv.features2d.Feature2D.compute(Feature2D.java:102)
at opencv_test1.ImgConv.main(ImgConv.java:36)
[ INFO:0] Initialize OpenCL runtime...
該当のソースコード
java
1package opencv_test1; 2 3import org.opencv.core.Core; 4import org.opencv.core.Mat; 5import org.opencv.core.MatOfKeyPoint; 6import org.opencv.features2d.Features2d; 7import org.opencv.features2d.ORB; 8import org.opencv.imgcodecs.Imgcodecs; 9 10//-------------------------------------------------------------- 11//画像処理 特徴点の抽出 12//-------------------------------------------------------------- 13public class ImgConv{ 14 15 16 public static void main(String[] args) { 17 18 MatOfKeyPoint my_keypoints1; //特徴点の位置やパラメータを保存する変数 19 Mat im_src; //元画像(グレイスケール) 20 Mat my_descriptors = null; //特徴量 21 ORB my_orb; 22 23 24 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); //ライブラリのロード 25 26 im_src = Imgcodecs.imread("C:\WORK\20180328\img\squaregray.jpg"); //作業ファイルの読み込み 27 28 my_keypoints1 = new MatOfKeyPoint(); 29 30 my_orb = ORB.create(); 31 32 my_orb.detect(im_src, my_keypoints1); // 特徴点抽出処理 33 my_orb.compute(im_src, my_keypoints1, my_descriptors); 34 35 Features2d.drawKeypoints(im_src, my_keypoints1,my_descriptors );//画像への特徴点の書き込み 36 37 Imgcodecs.imwrite("C:\WORK\20180328\img\squaregray.jpg", my_descriptors);//処理後の画像の保存 38 39 im_src.release(); 40 41 } 42 43} 44 45
試したこと
デバックをすると
my_orb.compute(im_src, my_keypoints1, my_descriptors);
で呼び出されたOpenCVライブラリ内のFeature2D クラスメソッドの
public void compute(Mat image, MatOfKeyPoint keypoints, Mat descriptors)
{
Mat keypoints_mat = keypoints;
compute_0(nativeObj, image.nativeObj, keypoints_mat.nativeObj, descriptors.nativeObj);<<<<<ここで例外処理が起きています。
return;
}
補足情報(FW/ツールのバージョンなど)
環境
Oxygen.2 Release (4.7.2)
JavaSE*1.8
同じ環境で、OpenCVのライブラリの”画像に描画を実行する”メソッドは
正常に動作していますので、OpenCVのパスの設定が原因ではないと思っています。..
回答1件
あなたの回答
tips
プレビュー