LoginSignup
0
1

More than 3 years have passed since last update.

java8でOpenCVを使えるようにする。(自分用)

Last updated at Posted at 2020-08-20

コマンドラインでJavaを実行する原始人

大学の卒研でOpenCVを使わざるをえないので導入した
その道しるべ
今検索してもほとんどがPythonやC++での話でjavaの話が少ないので苦労した。

参考サイト

基本的に以下のサイトに従順してやりました。基本的にこっちのほうが丁寧です。ただ、今の最新のVer(4.4.0)だとテストコードがうまく実行できないのでそこは書きます。
JavaでOpenCVを使う | JProgramer

イソストール

ダウンロードした.exeファイルを実行、Cドライブに展開するのが良いとのことで私はOpenCVなるフォルダを作成しそこに展開。
7-Zip self-extracting archive 2020_08_20 15_43_43.png

パスを通す

参考サイトではユーザ変数ですが私はシステム変数に追加しました。
「Path」を選択し、[編集]をクリック。一番下に
C:\OpenCV\opencv\build\java\x86
を追加、OpenCVをjavaで使うだけならこれだけの追加でいい、Pythonで使うとか、VisualStudioで利用するとかならこれだけじゃダメです。
私は一応VS2017が入っているんでそれ用にもパスを通してます。
クラスパス.PNG

最後の部分はjavaが32bitなら[x86]、64bitなら[x64]
私はマシンが64bitなので、64bitだと思ってテストコード(後述)を実行したら「俺は32bitだ!64bitのプログラムなんてムリ!」みたいなエラーがでたんで、必ずしもマシンとjavaのbitが同じとは限らないみたいです。

テストコード

参考サイトのテストコードはVer.4.4.0ではエラーが出ます。
具体的には画像の出力するクラスがhighguiではなく、imgcodecsに移っています。

Test.java
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;

public class Test{
    public static void main(String[] args){
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat redImg=new Mat(100,200,CvType.CV_8UC3,new Scalar(0,0,255));
        Imgcodecs.imwrite("test.jpg",redImg);
    }
}

コンパイルコマンドは以下↓

javac -classpath “C:\保存したフォルダ\opencv\build\java\opencv-バージョン.jar” Test.java

これを

java -cp .;C:\保存したフォルダ\opencv\build\java\opencv-バージョン.jar Test

で実行すると同じフォルダに真っ赤なJPG画像が出力(保存)されました。

クラスパスを設定すると

javac Test.java
java Test

で実行できます。詳しくは参考サイトを見てくだちい。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1