teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

ソースコードを見直したらエラーコードが変わったので変更しました。

2020/08/26 10:15

投稿

ld.spica
ld.spica

スコア0

title CHANGED
File without changes
body CHANGED
@@ -4,13 +4,12 @@
4
4
 
5
5
  ### 発生している問題・エラーメッセージ
6
6
  コンパイルは通りますが、実行時にエラーが出ます。「~~Error:」の後に具体的なことが書かれてない(他の例では○○がないよ!とかが英語で書かれている)ので理解ができません。
7
-
7
+ おそらく「fourcc」関連のことだと思って、いろいろなコーデックを試してみましたが、さっぱりです
8
8
  ```
9
- Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.videoio.VideoWriter.VideoWriter_3(Ljava/lang/String;IDDDZ)J
9
+ Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.videoio.VideoWriter.fourcc_0(CCCC)I
10
-         at org.opencv.videoio.VideoWriter.VideoWriter_3(Native Method)
10
+ at org.opencv.videoio.VideoWriter.fourcc_0(Native Method)
11
-         at org.opencv.videoio.VideoWriter.<init>(VideoWriter.java:110)
11
+ at org.opencv.videoio.VideoWriter.fourcc(VideoWriter.java:348)
12
-         at MkMovie.<init>(MkMovie.java:12)
13
-         at MkMovie.main(MkMovie.java:34)
12
+ at MkMovie.main(MkMovie.java:36)
14
13
  ```
15
14
 
16
15
  ### 該当のソースコード
@@ -22,41 +21,50 @@
22
21
 
23
22
  import org.opencv.core.*;
24
23
  import org.opencv.imgcodecs.*;
24
+ import org.opencv.videoio.VideoWriter;
25
- import org.opencv.videoio.*;
25
+ import org.opencv.videoio.Videoio;
26
26
 
27
27
  public class MkMovie{
28
-     Mat takedImage;
28
+ Mat takedImage;
29
+
30
+ public void nanika(String image){
31
+ //try {
29
-     Size frameSize = new Size(1280, 720);
32
+ takedImage = Imgcodecs.imread(image);
30
-     VideoWriter gMovie = new VideoWriter("generatedMovie.mp4", 0x20, 30, this.frameSize, true);
33
+ //}catch(IOException e){
34
+ //}
35
+ }
31
36
 
32
-     public void nanika(String image){
37
+ public void nanika2(String time, VideoWriter Mov){
33
-         //try {
34
-             takedImage = Imgcodecs.imread(image);
38
+ int totalFrame = Integer.valueOf(time)*30;
35
-         //}catch(IOException e){
36
-         //}
37
-     }
38
39
 
39
-     public void nanika2(String time){
40
-         int totalFrame = Integer.valueOf(time)*30;
41
40
 
42
-         for(int i=0; i<totalFrame; i++){
41
+ for(int i=0; i<totalFrame; i++){
43
-             this.bideotsukuru(this.takedImage);
42
+ Mov.write(takedImage);
44
-         }
43
+ }
45
-     }
46
44
 
47
-     public void bideotsukuru(Mat frame){
48
-         this.gMovie.write(frame);
49
-     }
45
+ }
50
46
 
51
-     public static void main(String[] args) {
47
+ public void bideotsukuru(Mat frame){
52
-         MkMovie go = new MkMovie();
53
-         go.nanika(args[0]);
54
-         go.nanika2(args[1]);
55
-     }
56
48
 
49
+ }
57
50
 
51
+ public static void main(String[] args) {
52
+ Size frameSize = new Size(1280, 720);
53
+ int fourcc = VideoWriter.fourcc('D','I','V','X');
54
+ VideoWriter gMovie = new VideoWriter("generatedMovie.avi", fourcc, 30, frameSize, true);
55
+ if(!gMovie.isOpened()){
56
+ System.out.println("Cant Open");
57
+ }
58
+ MkMovie go = new MkMovie();
59
+
60
+ //gMovie.open();
61
+ go.nanika(args[0]);
62
+ go.nanika2(args[1], gMovie);
63
+ gMovie.release();
64
+ }
65
+
66
+
58
67
  }
59
-
60
68
  ```
61
69
 
62
70
 
@@ -73,6 +81,6 @@
73
81
  のみ設定
74
82
  システム環境変数は「Path」に
75
83
  C:\OpenCV\opencv\build\x64\vc15\bin
76
- C:\OpenCV\opencv\build\java\x86\
84
+ C:\OpenCV\opencv\build\java\x64
77
85
  C:\OpenCV\opencv\build\bin
78
86
  を追加してます。