質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

3172閲覧

OpenCVをEclipseでは使えるのにコマンドライン上では使えない

aiueoaiueoaiue

総合スコア94

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/06/29 16:32

編集2018/06/30 08:35

###実現したい事
OpenCVを用いたプログラムをコマンドライン上でコンパイルして実行したいのですが、エラーが出て上手くいきません。よく似たソースをEclipse上で実行させると問題なく動きました。しかしコマンドライン上でコンパイルするとエラーが出ます。OpenCVを使うSystemloadの書き方が違うのかなと思ったのですが、色々試してもダメでした。分かる方回答お願いします。
###Eclipse上で動かしたソースとコマンドライン上で動かしたソースの相違部分

Java

1System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

Eclipse上では上記で上手くいきました。

コマンドライン上では上記ではエラーが出たので、

Java

1 System.loadLibrary("C:/Users/○○/Downloads/opencv3.3.1/build/java/opencv-331.jar");

このように記述しました。これはEclipseでビルドパスの構成を確認してjarが通してあるパスをそのまま打ち込みました。
###エラー内容
エラーはシンボルが見つからないと出るのですがどれもこれをOpenCVに組み込まれているクラスばかりなのでOpenCVがコマンドライン上からではうまく使えてないのではと思いました。
###エラー文

AKAZE.java:7: エラー: パッケージorg.opencv.coreは存在しません import org.opencv.core.Core; ^ AKAZE.java:8: エラー: パッケージorg.opencv.coreは存在しません import org.opencv.core.DMatch; ^ AKAZE.java:9: エラー: パッケージorg.opencv.coreは存在しません import org.opencv.core.Mat; ^ AKAZE.java:10: エラー: パッケージorg.opencv.coreは存在しません import org.opencv.core.MatOfDMatch; ^ AKAZE.java:11: エラー: パッケージorg.opencv.coreは存在しません import org.opencv.core.MatOfKeyPoint; ^ AKAZE.java:12: エラー: パッケージorg.opencv.features2dは存在しません import org.opencv.features2d.DescriptorExtractor; ^ AKAZE.java:13: エラー: パッケージorg.opencv.features2dは存在しません import org.opencv.features2d.DescriptorMatcher; ^ AKAZE.java:14: エラー: パッケージorg.opencv.features2dは存在しません import org.opencv.features2d.FeatureDetector; ^ AKAZE.java:15: エラー: パッケージorg.opencv.features2dは存在しません import org.opencv.features2d.Features2d; ^ AKAZE.java:16: エラー: パッケージorg.opencv.imgcodecsは存在しません import org.opencv.imgcodecs.Imgcodecs; ^ AKAZE.java:17: エラー: パッケージorg.opencv.imgprocは存在しません import org.opencv.imgproc.Imgproc; ^ AKAZE.java:41: エラー: シンボルを見つけられません public static BufferedImage matToBufferedImage(Mat matrix) { ^ シンボル: クラス Mat 場所: クラス AKAZE AKAZE.java:89: エラー: シンボルを見つけられません Mat image01 = Imgcodecs.imread("C:/OpenCVtest/2017-09-21 15.25.19.jpg"); ^ シンボル: クラス Mat 場所: クラス AKAZE AKAZE.java:89: エラー: シンボルを見つけられません Mat image01 = Imgcodecs.imread("C:/OpenCVtest/2017-09-21 15.25.19.jpg"); ^ シンボル: 変数 Imgcodecs 場所: クラス AKAZE AKAZE.java:92: エラー: シンボルを見つけられません Mat image02 = Imgcodecs.imread("C:/OpenCVtest/2017-09-21 15.25.21.jpg"); ^ シンボル: クラス Mat 場所: クラス AKAZE AKAZE.java:92: エラー: シンボルを見つけられません Mat image02 = Imgcodecs.imread("C:/OpenCVtest/2017-09-21 15.25.21.jpg"); ^ シンボル: 変数 Imgcodecs 場所: クラス AKAZE AKAZE.java:94: エラー: シンボルを見つけられません Mat grayImage01 = new Mat(image01.rows(), image01.cols(), image01.type()); ^ シンボル: クラス Mat 場所: クラス AKAZE AKAZE.java:94: エラー: シンボルを見つけられません Mat grayImage01 = new Mat(image01.rows(), image01.cols(), image01.type()); ^ シンボル: クラス Mat 場所: クラス AKAZE AKAZE.java:95: エラー: シンボルを見つけられません Imgproc.cvtColor(image01, grayImage01, Imgproc.COLOR_BGRA2GRAY); ^ シンボル: 変数 Imgproc 場所: クラス AKAZE AKAZE.java:95: エラー: シンボルを見つけられません Imgproc.cvtColor(image01, grayImage01, Imgproc.COLOR_BGRA2GRAY); ^ シンボル: 変数 Imgproc 場所: クラス AKAZE AKAZE.java:96: エラー: シンボルを見つけられません Core.normalize(grayImage01, grayImage01, 0, 255, Core.NORM_MINMAX); ^ シンボル: 変数 Core 場所: クラス AKAZE AKAZE.java:96: エラー: シンボルを見つけられません Core.normalize(grayImage01, grayImage01, 0, 255, Core.NORM_MINMAX); ^ シンボル: 変数 Core 場所: クラス AKAZE AKAZE.java:98: エラー: シンボルを見つけられません Mat grayImage02 = new Mat(image02.rows(), image02.cols(), image02.type()); ^ シンボル: クラス Mat 場所: クラス AKAZE AKAZE.java:98: エラー: シンボルを見つけられません Mat grayImage02 = new Mat(image02.rows(), image02.cols(), image02.type()); ^ シンボル: クラス Mat 場所: クラス AKAZE AKAZE.java:99: エラー: シンボルを見つけられません Imgproc.cvtColor(image02, grayImage02, Imgproc.COLOR_BGRA2GRAY); ^ シンボル: 変数 Imgproc 場所: クラス AKAZE AKAZE.java:99: エラー: シンボルを見つけられません Imgproc.cvtColor(image02, grayImage02, Imgproc.COLOR_BGRA2GRAY); ^ シンボル: 変数 Imgproc 場所: クラス AKAZE AKAZE.java:100: エラー: シンボルを見つけられません Core.normalize(grayImage02, grayImage02, 0, 255, Core.NORM_MINMAX); ^ シンボル: 変数 Core 場所: クラス AKAZE AKAZE.java:100: エラー: シンボルを見つけられません Core.normalize(grayImage02, grayImage02, 0, 255, Core.NORM_MINMAX); ^ シンボル: 変数 Core 場所: クラス AKAZE AKAZE.java:103: エラー: シンボルを見つけられません FeatureDetector siftDetector = FeatureDetector.create(FeatureDetector.AKAZE); ^ シンボル: クラス FeatureDetector 場所: クラス AKAZE AKAZE.java:103: エラー: シンボルを見つけられません FeatureDetector siftDetector = FeatureDetector.create(FeatureDetector.AKAZE); ^ シンボル: 変数 FeatureDetector 場所: クラス AKAZE AKAZE.java:103: エラー: シンボルを見つけられません FeatureDetector siftDetector = FeatureDetector.create(FeatureDetector.AKAZE); ^ シンボル: 変数 FeatureDetector 場所: クラス AKAZE AKAZE.java:104: エラー: シンボルを見つけられません DescriptorExtractor siftExtractor = DescriptorExtractor.create(DescriptorExtractor.AKAZE); ^ シンボル: クラス DescriptorExtractor 場所: クラス AKAZE AKAZE.java:104: エラー: シンボルを見つけられません DescriptorExtractor siftExtractor = DescriptorExtractor.create(DescriptorExtractor.AKAZE); ^ シンボル: 変数 DescriptorExtractor 場所: クラス AKAZE AKAZE.java:104: エラー: シンボルを見つけられません DescriptorExtractor siftExtractor = DescriptorExtractor.create(DescriptorExtractor.AKAZE); ^ シンボル: 変数 DescriptorExtractor 場所: クラス AKAZE AKAZE.java:106: エラー: シンボルを見つけられません MatOfKeyPoint keyPoint01 = new MatOfKeyPoint(); ^ シンボル: クラス MatOfKeyPoint 場所: クラス AKAZE AKAZE.java:106: エラー: シンボルを見つけられません MatOfKeyPoint keyPoint01 = new MatOfKeyPoint(); ^ シンボル: クラス MatOfKeyPoint 場所: クラス AKAZE AKAZE.java:109: エラー: シンボルを見つけられません MatOfKeyPoint keyPoint02 = new MatOfKeyPoint(); ^ シンボル: クラス MatOfKeyPoint 場所: クラス AKAZE AKAZE.java:109: エラー: シンボルを見つけられません MatOfKeyPoint keyPoint02 = new MatOfKeyPoint(); ^ シンボル: クラス MatOfKeyPoint 場所: クラス AKAZE AKAZE.java:112: エラー: シンボルを見つけられません Mat descripters01 = new Mat(image01.rows(), image01.cols(), image01.type()); ^ シンボル: クラス Mat 場所: クラス AKAZE AKAZE.java:112: エラー: シンボルを見つけられません Mat descripters01 = new Mat(image01.rows(), image01.cols(), image01.type()); ^ シンボル: クラス Mat 場所: クラス AKAZE AKAZE.java:115: エラー: シンボルを見つけられません Mat descripters02 = new Mat(image02.rows(), image02.cols(), image02.type()); ^ シンボル: クラス Mat 場所: クラス AKAZE AKAZE.java:115: エラー: シンボルを見つけられません Mat descripters02 = new Mat(image02.rows(), image02.cols(), image02.type()); ^ シンボル: クラス Mat 場所: クラス AKAZE AKAZE.java:118: エラー: シンボルを見つけられません MatOfDMatch matchs = new MatOfDMatch(); ^ シンボル: クラス MatOfDMatch 場所: クラス AKAZE AKAZE.java:118: エラー: シンボルを見つけられません MatOfDMatch matchs = new MatOfDMatch(); ^ シンボル: クラス MatOfDMatch 場所: クラス AKAZE AKAZE.java:119: エラー: シンボルを見つけられません DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE); ^ シンボル: クラス DescriptorMatcher 場所: クラス AKAZE AKAZE.java:119: エラー: シンボルを見つけられません DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE); ^ シンボル: 変数 DescriptorMatcher 場所: クラス AKAZE AKAZE.java:119: エラー: シンボルを見つけられません DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE); ^ シンボル: 変数 DescriptorMatcher 場所: クラス AKAZE AKAZE.java:124: エラー: シンボルを見つけられません DMatch[] tmp01 = matchs.toArray(); ^ シンボル: クラス DMatch 場所: クラス AKAZE AKAZE.java:125: エラー: シンボルを見つけられません DMatch[] tmp02 = new DMatch[N]; ^ シンボル: クラス DMatch 場所: クラス AKAZE AKAZE.java:125: エラー: シンボルを見つけられません DMatch[] tmp02 = new DMatch[N]; ^ シンボル: クラス DMatch 場所: クラス AKAZE AKAZE.java:132: エラー: シンボルを見つけられません Mat matchedImage = new Mat(image01.rows(), image01.cols()*2, image01.type()); ^ シンボル: クラス Mat 場所: クラス AKAZE AKAZE.java:132: エラー: シンボルを見つけられません Mat matchedImage = new Mat(image01.rows(), image01.cols()*2, image01.type()); ^ シンボル: クラス Mat 場所: クラス AKAZE AKAZE.java:133: エラー: シンボルを見つけられません Features2d.drawMatches(image01, keyPoint01, image02, keyPoint02, matchs, matchedImage); ^ シンボル: 変数 Features2d 場所: クラス AKAZE AKAZE.java:136: エラー: シンボルを見つけられません Imgcodecs.imwrite("C:/OpenCVtest/Test.jpg", matchedImage); ^ シンボル: 変数 Imgcodecs 場所: クラス AKAZE エラー54個

###実行コマンド
javac AKAZE.java

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/06/30 00:22

エラーはコピペで。 https://teratail.com/help/question-tips#questionTips3-4-2 >表示されたエラーメッセージをそのままコピー&ペーストしましょう。自分でタイプしなおしたり、自分で解釈・要約しようとしてはいけません。 大事な部分が抜け落ちたり情報が違うものになってしまう可能性があるからです。
aiueoaiueoaiue

2018/06/30 04:01

エラー内容コピペいたしました。
archiver

2018/06/30 04:17

実際にコマンドラインでコンパイルを実行させたときのコマンドを載せてくれませんか。
aiueoaiueoaiue

2018/06/30 08:35

コンパイルコマンドを追記しました。
unz.hori

2018/07/03 08:51

ソース内にベタ書きしたものはコンパイル時には参照されません。コンパイル時はクラスパスで指定してください。
aiueoaiueoaiue

2018/07/06 07:07

確かにクラスパスを通すことで無事コンパイルが通りました。ありがとうございました。
guest

回答1

0

自己解決

環境変数のCLASSPATHに
C:/Users/○○/Downloads/opencv3.3.1/build/java/opencv-331.jar
上記のパスを通し、コマンドプロンプトを再起動し、コンパイルすると無事エラーなしで実行できました。

投稿2018/07/06 07:15

aiueoaiueoaiue

総合スコア94

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問