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

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

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

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

1回答

6709閲覧

OpenCvのMat型の変数初期化でエラーが発生してしまいます。

r.murasaki

総合スコア14

OpenCV

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2017/01/20 09:43

編集2022/01/12 10:55

###前提・実現したいこと
はじめまして。

現在、Windows + java(1.8.0_112)の環境でローカル上で動く、openCvを使った画像のコピー(変色)プログラムをEclipseを使って作りたいと考えています。

###発生している問題・エラーメッセージ

環境変数のパス、Eclipseの外部ライブラリのパスは通っておりますが、Math型の変数を初期化すると下記のエラーが発生してしまいます。

エラーメッセージ

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_Mat()J

###該当のソースコード

package com.example.appium;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class ImgConv {

static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); } public static void main(String[] args) { String path_in = "C:/flappy_bird/FlappyBird/Assets/flappy_assets/images/sample.bmp"; String path_out = "C:/flappy_bird/FlappyBird/Assets/flappy_assets/images/sample_gray.bmp"; System.out.println(System.getProperty("java.version")); System.out.println(System.mapLibraryName("")); Mat mat_src = new Mat(); //ここでエラーが発生します。 Mat mat_dst = new Mat(); mat_src = Imgcodecs.imread(path_in); // 入力画像の読み込み Imgproc.cvtColor(mat_src, mat_dst, Imgproc.COLOR_BGR2GRAY); // カラー画像をグレー画像に変換 Imgcodecs.imwrite(path_out, mat_dst); // 出力画像を保存 }

}

###試したこと
パスの確認、元になっているクラス、C++ソースの確認(クラスCore.classの中にメソッドMathはあり、下記のようになっていました

public Mat()
{

nativeObj = n_Mat(); return; }

そして、n_Matは下記のようになっております。
// C++: Mat::Mat(int rows, int cols, int type)
private static native long n_Mat(int rows, int cols, int type);

しかし、cppファイルを見るとn_Matに類するメソッドが見当たらないのが気になります)

###補足情報(言語/FW/ツール等のバージョンなど)
Windows7
Java ver 1.8.0_112
Eclipse Meon .2 Release(4.6.2)
OpenCv 3.2.0

よろしくおねがいいたします。

1/24 追加
下記に、この質問をした際のライブラリの状態を添付いたします。
イメージ説明

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

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

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

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

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

guest

回答1

0

http://docs.opencv.org/2.4/doc/tutorials/introduction/java_eclipse/java_eclipse.html#java-eclipse

上記サイトの「Add Library」の操作でライブラリは追加されていますか?

投稿2017/01/20 10:13

qulosan

総合スコア12

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

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

r.murasaki

2017/01/23 01:24

はい、プロジェクト右クリック→Javaのビルド・パス→外部JARの追加で追加してあります。 ネイティブ・ライブラリ・ロケーションも編集で「E:/openCV/opencv/build/java/x64」(openCVをEドライブ直下に展開しているため)に設定しております。
r.murasaki

2017/01/23 08:53

尚、該当フォルダにはDLLファイル「opencv_java320.dll」があります。
qulosan

2017/01/23 13:16

dllではなくjarを追加してみていただけませんか。
r.murasaki

2017/01/24 02:38 編集

opencv-320.jarは上記作業で既にビルドパス上に追加されてあります。 それとは別に ライブラリーの追加→ユーザー・ライブラリー→ユーザーライブラリーの追加→設定 でOpenCV-3.2.0というユーザーライブラリを新規にユーザーライブラリを作成し、そこにopencv-320.jarを追加し、ネイティブ・ライブラリーロケーションにdllファイルへのフォルダを設定してありますが、もしかするとこれは不要なのでしょうか? 質問の補足に現在のJavaのライブラリ状態を追加いたしました。
qulosan

2017/01/24 14:22

手元にwindows環境がないため、 紹介ばかりで申し訳ありませんが下記のサイトは参考になりませんか。 少し情報は古いですが日本語のサイトです。 <http://pg-fan.com/?p=549>
r.murasaki

2017/01/25 05:25

URLありがとうございます。 しかしながら、このサイトに書かれている通りにEclipseを設定して試してみたのですが、やはりエラーが発生します。 java.lang.UnsatisfiedLinkError 試しに「 Mat mat_test = new Mat();」とソースを変えてMat変数の初期化ができるかを試してみたのですが、これも今までと同じエラーが発生します。 Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_Mat()J もう一度、openCVを再インストールするか、あるいは古いバージョンで試してみた方が良いのでしょうか?
r.murasaki

2017/01/25 08:34

これを解決としていいのか分からないのですが、結論から言うとEclipseを使わずにコマンドラインからのコンパイル→実行だと動作しました。 1.ソースからパッケージの記述を削除する 2.openCvのjarファイル、dllファイルをソースのあるフォルダにコピーする 3.コマンドでコンパイル  javac -classpath .\opencv-320.jar ImgConv.java 4.コマンドで実行  java -classpath .\;.\opencv-320.jar ImgConv ただ、当初の目的であるEclipseで動作しておらず、これで自己解決にしてしまうと同じ問題で困っている人が後々困ってしまうかもしれませんのでコメントとして記載させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問