【openCV】画像のリサイズ、トリミング、回転、反転[Python]

  • URLをコピーしました!
目次

openCV

前回、openCVでSobel法、Laplacian法、Canny法のエッジ検出をしてみました。

今回はもっと基礎的なところで画像のリサイズ、トリミング、回転、反転をしてみます。

今回も使う画像はこちらの蓮の花(lotus.jpg)を使っていきます。

またサイズが変更されたことが分かりやすいように画像のサイズを「画像データ.shape」で表示させてみます。

「画像データ.shape」では画像の「行数(Y軸方向のサイズ),列数( X軸方向のサイズ), 色のチャンネル数」という出力が得られます。

import cv2

img = cv2.imread("lotus.jpg")
cv2.imwrite("lotus3-1.jpg", img)

print(img.shape)

実行結果
(853, 1280, 3)

それでは始めていきましょう。

リサイズ

画像のリサイズを行うには「cv2.resize(画像, dsize=(x, y))」とします。

import cv2

img = cv2.imread("lotus.jpg")

img_resize = cv2.resize(img, dsize=(500,500))

cv2.imwrite("lotus3-2.jpg", img_resize)

print(img_resize.shape)

実行結果
(500, 500, 3)

トリミング

画像のトリミングをするには「画像[行1:行2, 列1:列2]」のようにスライスを行います。

import cv2

img = cv2.imread("lotus.jpg")

img_resize = img[200:800, 100:600]

cv2.imwrite("lotus3-3.jpg", img_resize)

print(img_resize.shape)

実行結果
(600, 500, 3)

回転

画像の回転を行うには「cv2.rotate(画像, 回転の種類)」とします。

回転の種類には以下のものがあります。

  1. 時計回りに90度:cv2.ROTATE_90_CLOCKWISE
  2. 反時計回りに90度:cv2.ROTATE_90_COUNTERCLOCKWISE
  3. 180度回転:cv2.ROTATE_180
import cv2

img = cv2.imread("lotus.jpg")

img_rotate = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)

cv2.imwrite("lotus3-4.jpg", img_rotate)

実行結果
import cv2

img = cv2.imread("lotus.jpg")

img_rotate = cv2.rotate(img, cv2.ROTATE_90_COUNTERCLOCKWISE)

cv2.imwrite("lotus3-5.jpg", img_rotate)

実行結果
import cv2

img = cv2.imread("lotus.jpg")

img_rotate = cv2.rotate(img, cv2.ROTATE_180)

cv2.imwrite("lotus3-6.jpg", img_rotate)

実行結果

反転

画像を反転させるには「cv2.flip(画像, フリップコード)」とします。

フリップコードには以下のものがあります。

  • フリップコード=0:上下反転
  • フリップコード>0:左右反転
  • フリップコード<0:上下左右反転
import cv2

img = cv2.imread("lotus.jpg")

img_flip = cv2.flip(img, 0)

cv2.imwrite("lotus3-7.jpg", img_flip)

実行結果
import cv2

img = cv2.imread("lotus.jpg")

img_flip = cv2.flip(img, -1)

cv2.imwrite("lotus3-9.jpg", img_flip)

実行結果
import cv2

img = cv2.imread("lotus.jpg")

img_flip = cv2.flip(img, -1)

cv2.imwrite("lotus3-9.jpg", img_flip)

実行結果

ちなみに「フリップコード>0:左右反転」と「フリップコード<0:上下左右反転」に関してはそれぞれ「0より大きい値」、「0より小さい値」であれば良く「-1」、「1」である必要はないようです。

import cv2

img = cv2.imread("lotus.jpg")

img_flip = cv2.flip(img, 5)

cv2.imwrite("lotus3-10.jpg", img_flip)

実行結果

次回はopenCVを使って色を二極化する方法を紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次