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

JavaCV(OpenCV)で画像の切り出し

dolphin プログラミング

JavaCVで画像の任意の範囲を矩形に切り出す方法を紹介します。
以下の関連記事です。

環境

  • Windows10 Pro
  • Spring Boot 2.5.3
  • JDK 11

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で矩形に切り出し

画像の切り抜きにはorg.bytedeco.opencv.opencv_core.Rect.Rectを使用します。
Rectの第1引数から第4引数までにそれぞれ、x, y, width, height を指定してインスタンスを生成します。
次にMatの第1引数に画像情報が格納されているMat、第2引数に生成したRectを指定して切り出した画像情報のMatを新たに生成します。
範囲外を指定した場合はエラーとなるので注意が必要です。

全体ソースは以下

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

import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_core.Rect;
import org.junit.jupiter.api.Test;

class OpenCVUtilTest {
    @Test
    void testRect() {

        int x = 100;
        int y = 200;
        int width = 400;
        int height = 200;
        try (Mat mat = imread("C:\\gomibako\\stitching_org.jpg");
                Mat rectMat = new Mat(mat, new Rect(x, y, width, height));) {

            imwrite("C:\\gomibako\\stitching_rect.jpg", rectMat);
        }
    }
}

実行結果

切り出しに使用する画像がこちらです。

dolphin

切り出した画像が以下です。

以上です。

コメント

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