python + opencv で画像を回転 rev2
前回の記事は以下
前回はdst画像の背景が黒くなっていたので、alphaチャンネルを使って
背景透過にしたrev2を用意
import numpy as np import cv2 # 画像読み込み(alphaチャンネル有り) src_mat = cv2.imread("001.png", cv2.IMREAD_UNCHANGED) print(src_mat.shape) # 32,32,4 # 画像サイズの取得(横, 縦) size = tuple([src_mat.shape[1], src_mat.shape[0]]) # dst 画像用意 dst_mat = np.zeros((size[1], size[0], 4), np.uint8) # 画像の中心位置(x, y) center = tuple([int(size[0]/2), int(size[1]/2)]) # 回転させたい角度(正の値は反時計回り) angle = -45.0 # 拡大比率 scale = 1.0 # 回転変換行列の算出 rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale) # アフィン変換 img_dst = cv2.warpAffine(src_mat, rotation_matrix, size, dst_mat, flags=cv2.INTER_LINEAR, borderMode=cv2.BORDER_TRANSPARENT) # 表示 cv2.imwrite("dst.png", img_dst)
src
dst
背景透過のアルファチャンネル付きになった。
python + opencv で画像を回転
python + opencvのアフィン変換を使って画像を回転
import numpy as np
import cv2
# 画像読み込み
img_src = cv2.imread("001.png")
# 画像サイズの取得(横, 縦)
size = tuple([img_src.shape[1], img_src.shape[0]])
# 画像の中心位置(x, y)
center = tuple([int(size[0]/2), int(size[1]/2)])
# 回転させたい角度(正の値は反時計回り)
angle = -45.0
# 拡大比率
scale = 1.0
# 回転変換行列の算出
rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale)
# アフィン変換
img_rot = cv2.warpAffine(img_src, rotation_matrix, size, flags=cv2.INTER_CUBIC)
# 表示
cv2.imshow("Show ROTATION Image", img_rot)
cv2.waitKey(0)
cv2.destroyAllWindows()
src
dst
参考にしたサイト:
Python OpenCV3で画像のアフィン変換(中心を指定した回転) | from umentu import stupid
python3でopencv3をインストール
python始めました。
opencv3.0からpython3を始めとするサポート環境が増えるようです。
OpenCVとは? 最新3.0の新機能概要とモジュール構成 - Build Insider
C#も公式サポートして欲しい。現在の非公式ライブラリだと使える関数が限られます。
以前C#でOpenCV使った時はFFTが出来なくて、途中からOpenCV処理部をC++で書き直す事になりました。だが今はどうでもいいですね。
pythonの環境は以下の通り。
pyenv
pyenv 1.0.6
pyenv global
anaconda3-4.2.0
以下を実行
conda install --channel https://conda.anaconda.org/menpo opencv3
動作確認
# test.py
import numpy as np
import cv2
# 画像読み込み
img = cv2.imread("001.png")
cv2.imshow("color", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
お手軽!
ブログ始めました
技術系ネタの備忘録と、その他公開したい!と思ったことを書きたいと思います。