Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

画像をザーザーにする(各行をランダムにx方向にずらす)

画像をザーザーにします。画像を読み出し別のndarrayに1行ずつコピーしますが、その際にx方向にランダムにずらすことでザーザーに変形した画像を生成します。

関連記事

黒画像を作成する
画像を斜めに変形する

環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 5.6.0
  • Python 3.7.0
  • OpenCV 4.0.0
準備

画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名'ramen.jpg'で、jupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。
f:id:T_A_T:20190609211927j:plain
ramen.jpg

コード
import cv2
import numpy as np
import random

# x方向の最大のシフト量
shift_mag = 20
# 画像読み込み
img = cv2.imread('ramen.jpg')
# 画像の高さ、幅の取得
height,width = img.shape[:2]
# 高さがimgと同じ、幅がimgの幅+最大のシフト量になる黒画像を作成
img_snake = np.zeros((height, width+shift_mag, 3), np.uint8)
# 一行ずつ、imgをimg_snakeにimgをコピー
# その際にx座標をランダムにずらす
for y in range(height):
    shift = int(random.random()*shift_mag)
    img_snake[y,0+shift:width+shift] = img[y]

# 画像の保存
cv2.imwrite('snake.jpg',img_snake)
実行結果

ザーザーに変形した画像が保存されます。
f:id:T_A_T:20190611202915j:plain

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村