Java OpenCV Lv2 〜画像を表示する〜

インントロダクション

今までJavaFXだとか、根深いビデオキャプチャの問題があるとかやってきましたが。。。

OpenCVを学ぶのにそんなのはほっといても良いことに気がつきました。

単純に画像を表示できればOK!

参考サイト

https://www.tutorialspoint.com/opencv/opencv_gui.htm

<今までこんなことをやってきました。(OpenCV編)>

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseにCDTをインストール〜
  3. Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)

OpenCV

  1. Java OpenCV 環境セットアップ(on Mac)
  2. Java OpenCv Lv1 〜入門: 写真の表示〜
  3. Java OpenCV Lv2 〜画像を表示する〜
  4. Java OpenCV Lv3 〜画像の平滑化(smooth())〜

<実行結果>

<実装したコードにコメント>


<作成したコード>

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfByte;
import org.opencv.imgcodecs.Imgcodecs;

/**
 * @author takunoji
 *
 * 2018/11/18
 */
public class TrainOpenCV {
	static {
		// OpenCVライグラリ
		System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
	}
	public static void main(String[] args) {
		Mat image = Imgcodecs.imread(TrainOpenCV.class.getClass().getResource("/images/Experience.png").getPath());
		MatOfByte bytes = new MatOfByte();
		Imgcodecs.imencode(".png", image, bytes);
		byte[] b = bytes.toArray();
		InputStream in = new ByteArrayInputStream(b);
		BufferedImage buf = null;
		try {
			buf = ImageIO.read(in);
		} catch(IOException e) {
			e.printStackTrace();
		}
		// Create Swing Compoenent
		JFrame frame = new JFrame("Show Image");
		frame.getContentPane().add(new JLabel(new ImageIcon(buf)));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setVisible(true);
	}
}

明日から、こっちのコードでOpenCVの仕組みを学んでいこうと思います。

お疲れ様でした。