画像をグニャグニャにする(各行をsinカーブでx方向にずらす)
画像をグニャグニャにします。画像を読み出し別のndarrayに1行ずつコピーしますが、その際にx方向にsinカーブでずらすことでグニャグニャに変形した画像を生成します。
関連記事
黒画像を作成する
画像を斜めに変形する
画像をザーザーにする(各行をランダムにx方向にずらす)
環境
準備
画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名'ramen.jpg'で、jupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。
ramen.jpg
コード
import cv2 import numpy as np import math shift_mag = 50 # x方向の最大のシフト量 y_mag = 5 # 高さ方向のsinカーブの細かさ # 画像読み込み 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座標をsinカーブでずらす for y in range(height): shift = int(shift_mag/2*math.sin(math.radians(y*y_mag))+shift_mag/2) img_snake[y,0+shift:width+shift] = img[y] # 画像の保存 cv2.imwrite('snake.jpg',img_snake)
実行結果
グニャグニャに変形した画像が保存されます。