インントロダクション
今までJavaFXだとか、根深いビデオキャプチャの問題があるとかやってきましたが。。。
OpenCVを学ぶのにそんなのはほっといても良いことに気がつきました。
単純に画像を表示できればOK!
参考サイト
https://www.tutorialspoint.com/opencv/opencv_gui.htm
<今までこんなことをやってきました。(OpenCV編)>
Eclipse セットアップ
- Java Install Eclipse〜開発ツールのインストール〜
- TensorFlow C++環境〜EclipseにCDTをインストール〜
- Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
- Eclipse Meven 開発手順〜プロジェクトの作成〜
- Java OpenCV 環境セットアップ(on Mac)
OpenCV
- Java OpenCV 環境セットアップ(on Mac)
- Java OpenCv Lv1 〜入門: 写真の表示〜
- Java OpenCV Lv2 〜画像を表示する〜
- 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の仕組みを学んでいこうと思います。
お疲れ様でした。