画像をザーザーにする(各行をランダムにx方向にずらす)
画像をザーザーにします。画像を読み出し別のndarrayに1行ずつコピーしますが、その際にx方向にランダムにずらすことでザーザーに変形した画像を生成します。
関連記事
環境
準備
画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名'ramen.jpg'で、jupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。
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)
実行結果
ザーザーに変形した画像が保存されます。