本ブログはアフィリエイト広告を利用しています。

JavaCV(OpenCV)で画像のリサイズ

プログラミング

JavaCVで画像のリサイズを行う方法です。
以下の関連記事です。

環境

  • Windows10 Pro
  • Spring Boot 2.5.3
  • JDK 11

Spring Bootなのは特に意味はないです。

pom.xml

pomでJavaCVのjarを読み込みます。

<!-- https://mvnrepository.com/artifact/org.bytedeco/javacv-platform -->
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv-platform</artifactId>
    <version>1.5.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.bytedeco/javacv -->
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv</artifactId>
    <version>1.5.6</version>
</dependency>

JavaCVによるリサイズ

画像の特徴点マッチングを行う際、画像が小さすぎると特徴点が取れなかったりするので私は主にそういう場合に使用しています。

リサイズにはそのまんま resize() というメソッドです。

org.bytedeco.opencv.global.opencv_imgproc.resize(@ByVal Mat src, @ByVal Mat dst, @ByVal Size dsize)

変更したいサイズは以下で横と縦のサイズを指定します。
ここでは元サイズの2倍にしています。

Size size = new Size((int)(cols * 2), (int)(rows * 2));

全体ソースは以下

import static org.bytedeco.opencv.global.opencv_imgcodecs.*;
import static org.bytedeco.opencv.global.opencv_imgproc.*;

import java.nio.file.Path;
import java.nio.file.Paths;

import org.bytedeco.javacpp.indexer.UByteIndexer;
import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_core.Size;
import org.junit.jupiter.api.Test;

class OpenCVUtilTest {
    @Test
    void testResize() {
        // 画像読み込み
        Path img = Paths.get("C:\\gomibako\\2.jpg");
        Mat mat = imread(img.toFile().getAbsolutePath());

        // 画像のサイズを取得する
        UByteIndexer srcIndexer = mat.createIndexer();
        long rows = srcIndexer.sizes()[0];
        long cols = srcIndexer.sizes()[1];

        Size size = new Size((int)(cols * 2), (int)(rows * 2));

        // リサイズ後の画像格納用
        Mat resizeMat = new Mat();

        // リサイズ
        resize(mat, resizeMat, size);
        // 画像出力
        imwrite("C:\\gomibako\\2x.jpg", resizeMat);
    }
}

実行結果

使用画像はこちらです。

実行後との比較画像です。ちょうど2倍の大きさで作成されています。

以上です。

コメント

タイトルとURLをコピーしました