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

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

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

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

Java

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

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

Q&A

1回答

1631閲覧

java8、OpenCVでUnsatisfiedLinkErrorが出るが対処法がわからない。

ld.spica

総合スコア0

OpenCV

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

Java

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

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

0グッド

1クリップ

投稿2020/08/21 02:24

編集2020/08/26 10:15

前提・実現したいこと

java8でOpenCV4.4.0を使って静止画を動画にしようとしています。まずはと思い同じ画像を任意の枚数重ねて動画にするという単純なものを作ってみました。メゾット名、引数名はごめんなさい。

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

コンパイルは通りますが、実行時にエラーが出ます。「~~Error:」の後に具体的なことが書かれてない(他の例では○○がないよ!とかが英語で書かれている)ので理解ができません。
おそらく「fourcc」関連のことだと思って、いろいろなコーデックを試してみましたが、さっぱりです

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.videoio.VideoWriter.fourcc_0(CCCC)I at org.opencv.videoio.VideoWriter.fourcc_0(Native Method) at org.opencv.videoio.VideoWriter.fourcc(VideoWriter.java:348) at MkMovie.main(MkMovie.java:36)

該当のソースコード

java

1import java.io.*; 2import java.awt.*; 3import java.util.*; 4 5import org.opencv.core.*; 6import org.opencv.imgcodecs.*; 7import org.opencv.videoio.VideoWriter; 8import org.opencv.videoio.Videoio; 9 10public class MkMovie{ 11 Mat takedImage; 12 13 public void nanika(String image){ 14 //try { 15 takedImage = Imgcodecs.imread(image); 16 //}catch(IOException e){ 17 //} 18 } 19 20 public void nanika2(String time, VideoWriter Mov){ 21 int totalFrame = Integer.valueOf(time)*30; 22 23 24 for(int i=0; i<totalFrame; i++){ 25 Mov.write(takedImage); 26 } 27 28 } 29 30 public void bideotsukuru(Mat frame){ 31 32 } 33 34 public static void main(String[] args) { 35 Size frameSize = new Size(1280, 720); 36 int fourcc = VideoWriter.fourcc('D','I','V','X'); 37 VideoWriter gMovie = new VideoWriter("generatedMovie.avi", fourcc, 30, frameSize, true); 38 if(!gMovie.isOpened()){ 39 System.out.println("Cant Open"); 40 } 41 MkMovie go = new MkMovie(); 42 43 //gMovie.open(); 44 go.nanika(args[0]); 45 go.nanika2(args[1], gMovie); 46 gMovie.release(); 47 } 48 49 50}

補足情報(FW/ツールのバージョンなど)

windows10
コマンドラインで実行してます。
コンパイル
javac MkMovie.java
実行
java MkMovie ./gazou.jpg 7

CLASSPATHは
.;C:\OpenCV\opencv\build\java\opencv-440.jar
のみ設定
システム環境変数は「Path」に
C:\OpenCV\opencv\build\x64\vc15\bin
C:\OpenCV\opencv\build\java\x64
C:\OpenCV\opencv\build\bin
を追加してます。

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

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

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

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

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

guest

回答1

0

外しているかもしれませんが、UnsatisfiedLinkErrorはネイティブのdllを呼ぶ時に発生するようなので
Javaが64bit版でOpenCVが32bit版という可能性は無いでしょうか?

ご提示頂いているPathを見ると、 C:\OpenCV\opencv\build\java\x86\ というのが見えるので、Javaが64bit版だと失敗するかもしれないと思います。

投稿2020/08/21 03:48

YakumoSaki

総合スコア2027

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

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

ld.spica

2020/08/21 12:06

回答ありがとうございます どちらも64bitにしてやり直してみましたが、特に改善はありませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問