#EclipseでJava用のOpenCVのプログラムを動かしたい
Eclipseで2つの画像を比較した時のヒストグラム値を算出するというプログラムを動かしたいのですが、エラーが出てしまいどうすればよいかわかりません。
ソースは以下に示した通りです。
package def; import java.util.ArrayList; import java.util.List; import org.opencv.core.*; import org.opencv.imgcodecs.*; import org.opencv.imgproc.Imgproc; public class ImageComparison { public static void main(String[] args) { System.out.println("処理開始"); System.loadLibrary(Core.NATIVE_LIBRARY_NAME); new Demo().run(); System.out.println("処理終了"); } } class Demo { public void run() { List<Double> histList = new ArrayList<Double>(); System.loadLibrary(Core.NATIVE_LIBRARY_NAME); Mat image[] = new Mat[2]; image[0] = Imgcodecs.imread("source/name1.png"); image[1] = Imgcodecs.imread("source/name2.png"); Mat hist1 = new Mat(); Imgproc.cvtColor(image[0], image[0], Imgproc.COLOR_RGB2GRAY); Imgproc.cvtColor(image[1], image[1], Imgproc.COLOR_RGB2GRAY); List<Mat> src1 = new ArrayList<Mat>(); src1.add(image[0]); Imgproc.calcHist(src1, new MatOfInt(0), new Mat(), hist1, new MatOfInt(256), new MatOfFloat(0, 64)); Mat hist2 = new Mat(); List<Mat> src2 = new ArrayList<Mat>(); src2.add(image[1]); Imgproc.calcHist(src2, new MatOfInt(0), new Mat(), hist2, new MatOfInt(256), new MatOfFloat(0, 64)); histList.add(Imgproc.compareHist(hist1, hist2, 0)); Imgcodecs.imwrite("source/test.png", image[0]); System.out.println(image[0]); System.out.println(image[1]); System.out.println(histList); } }
#エラーメッセージ
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Core を変数に解決できません
at def.ImageComparison.main(ImageComparison.java:13)
#試したこと
teratailで似た質問を見かけ、変数のスコープが関係しているらしいというのはわかったのですが、何分初心者なものでよくわかりませんでした。
#最終的なソース
Java
1package def; 2 3import java.util.ArrayList; 4import java.util.List; 5 6import org.opencv.core.Core; 7import org.opencv.core.Mat; 8import org.opencv.core.MatOfFloat; 9import org.opencv.core.MatOfInt; 10import org.opencv.imgcodecs.Imgcodecs; 11import org.opencv.imgproc.Imgproc; 12 13public class ImageComparison { 14 public static void main(String[] args) { 15 System.out.println("処理開始"); 16 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 17 new Demo().run(); 18 19 System.out.println("処理終了"); 20 } 21} 22 23class Demo { 24 public void run() { 25 List<Double> histList = new ArrayList<Double>(); 26 27 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 28 Mat image[] = new Mat[2]; 29 image[0] = Imgcodecs.imread("F:\yamauchi\opencv-IC\source\name1.png"); 30 image[1] = Imgcodecs.imread("F:\yamauchi\opencv-IC\source\name2.png"); 31 Mat hist1 = new Mat(); 32 33 Imgproc.cvtColor(image[0], image[0], Imgproc.COLOR_RGB2GRAY); // 逕サ蜒上・繧ー繝ャ繝シ繧ケ繧ア繝シ繝ォ螟画鋤 34 Imgproc.cvtColor(image[1], image[1], Imgproc.COLOR_RGB2GRAY); 35 36 List<Mat> src1 = new ArrayList<Mat>(); 37 src1.add(image[0]); 38 39 Imgproc.calcHist(src1, new MatOfInt(0), new Mat(), hist1, new MatOfInt(256), new MatOfFloat(0, 64)); 40 41 Mat hist2 = new Mat(); 42 List<Mat> src2 = new ArrayList<Mat>(); 43 src2.add(image[1]); 44 45 Imgproc.calcHist(src2, new MatOfInt(0), new Mat(), hist2, new MatOfInt(256), new MatOfFloat(0, 64)); 46 47 histList.add(Imgproc.compareHist(hist1, hist2, 0)); 48 49 Imgcodecs.imwrite("source/test.png", image[0]); 50 System.out.println(image[0]); 51 System.out.println(image[1]); 52 System.out.println(histList); 53 } 54 55 56}
回答2件
あなたの回答
tips
プレビュー