画像をロードする
openCv には、ファイルから画像を読み取るための imread という単純な関数があります
imread 関数は、Imgcodecs クラスの同じ名前のパッケージにあります。
イメージコードをロードする
org.opencv.core.CvType をインポートします。
org.opencv.core.Mat をインポートします。
org.opencv.core.Core をインポートします。
org.opencv.imgcodecs.Imgcodecs をインポートします。
折り紙をインポートします。折り紙;
public class HelloCv { public static void main(String[] args) throws Exception { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); Mat mat = Imgcodecs.imread("./images/test.jpg"); System.out.println(mat.width()+"x"+mat.height()+","+mat.type()); } }
読み込みに成功すると以下のメッセージが出力されます
この関数はグレースケール画像も読み込むことができます
IMREAD_GRAYSCALEによる制御
Mat mat = Imgcodecs.imread("./images/test.jpg",Imgcodecs.IMREAD_GRAYSCALE);
IMREAD_GRAYSCALE は、画像をグレースケール画像に強制し、それを Mat オブジェクトにロードします
IMREAD_GRAYSCALE パラメータに加えて、他のパラメータを渡して特定の処理チャネルと画像深度を取得することもできます。
画像を保存する
関数 imwrite は画像の保存に使用でき、これも Imgcodecs クラスに含まれています
画像はカラーですが、IMREAD_GRAYSCALE によってグレースケール画像に変更され、output.jpg として出力されます。
org.opencv.core.CvType をインポートします。
org.opencv.core.Mat をインポートします。
org.opencv.core.Core をインポートします。
org.opencv.imgcodecs.Imgcodecs をインポートします。
折り紙をインポートします。折り紙;
public class HelloCv { public static void main(String[] args) throws Exception { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); Mat mat = Imgcodecs.imread("./images/test.jpg",Imgcodecs.IMREAD_GRAYSCALE); //灰度加担 System.out.println(mat.width()+"x"+mat.height()+","+mat.type()); Imgcodecs.imwrite("./images/output.jpg",mat); } }
JPEG の場合、CV_IMWRITE_JPEG_QUALITY パラメーターを使用でき、パラメーター値の範囲は 0 ~ 100 (値が大きいほど、画質が高くなります)。デフォルト値は 95 です。
PNGの場合、圧縮度のパラメータ値として0~9が使用でき、値が大きいほど画像が小さくなり、圧縮時間が長くなります。デフォルト値は 3 です。
圧縮パラメーターを使用して出力ファイルを圧縮するには、MatOfInt と呼ばれる別の OpenCV オブジェクトを使用します。これは整数の行列、またはより単純な形式の配列です。
org.opencv.core.CvType をインポートします。
org.opencv.core.Mat をインポートします。
org.opencv.core.Core をインポートします。
org.opencv.core.MatOfInt をインポートします。
org.opencv.imgcodecs.Imgcodecs をインポートします。
折り紙をインポートします。折り紙;
public class HelloCv { public static void main(String[] args) throws Exception { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); Mat mat = Imgcodecs.imread("./images/test.jpg",Imgcodecs.IMREAD_GRAYSCALE); System.out.println(mat.width()+"x"+mat.height()+","+mat.type()); MatOfInt moi = new MatOfInt(Imgcodecs.IMWRITE_PNG_COMPRESSION,9); Imgcodecs.imwrite("./images/output.png",mat,moi); } }
非圧縮サイズ
圧縮サイズ