目次
openCV
前回、openCVでSobel法、Laplacian法、Canny法のエッジ検出をしてみました。
【openCV】Sobel法、Laplacian法、Canny法のエッジ検出をしてみる[Python]
openCV 前回、画像処理ライブラリopenCVで画像の読み込みとグレースケール化、画像の保存を試してみました。 今回はグレースケール化した画像を使ってエッジ検出をして…
今回はもっと基礎的なところで画像のリサイズ、トリミング、回転、反転をしてみます。
今回も使う画像はこちらの蓮の花(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(画像, 回転の種類)」とします。
回転の種類には以下のものがあります。
- 時計回りに90度:cv2.ROTATE_90_CLOCKWISE
- 反時計回りに90度:cv2.ROTATE_90_COUNTERCLOCKWISE
- 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を使って色を二極化する方法を紹介します。
【openCV】画像の二極化[Python]
openCV 前回、openCVで画像のリサイズ、トリミング、回転、反転のやり方を紹介しました。 今回は画像の二極化を試してみます。 今回も使う画像はこちらの蓮の花(lotus….
ではでは今回はこんな感じで。
コメント