画像をウィンドウまたはpython notebookで表示していきます
#ウィンドウで表示 #ウィンドウ名を決定 Window_name = 'Lenna' #ウィンドウの作成 (ウィンドウ名、ウィンドウの表示形式) cv2.namedWindow(Window_name, cv2.WINDOW_AUTOSIZE) #ウィンドウに画像表示 (ウィンドウ名、表示する画像の配列) cv2.imshow(Window_name, image) #キーが押されるまで画像を表示したままにする #0→無限、0以上→指定ミリ秒表示 cv2.waitKey(0) #ウィンドウの破棄 (ウィンドウ名) cv2.destroyWindow(Window_name)
window.py
#ipython notebookで表示
plt.imshow(image)
ipython notebook.py
さて、可愛いLennaちゃんを表示できたでしょうか??
これは余談なのですが、深夜に一人でPCをいじっているとごく稀に下のような真っ青なLennaちゃんが現れ、その目をじっと見つめていると...??という都市伝説があるそうな...
これは余談なのですが、深夜に一人でPCをいじっているとごく稀に下のような真っ青なLennaちゃんが現れ、その目をじっと見つめていると...??という都市伝説があるそうな...
...なんて、嘘、嘘です!!そっとブラウザを閉じないでください!!!
実はOpenCVで画像を読み込むとRGB(レッド、グリーン、ブルーの配列)がBGR(ブルー、グリーン、レッド)の順に読み込まれるため、赤と青が反転したような画像になってしまうのです!
お詫びにちゃんと直し方も書いておきます。
実はOpenCVで画像を読み込むとRGB(レッド、グリーン、ブルーの配列)がBGR(ブルー、グリーン、レッド)の順に読み込まれるため、赤と青が反転したような画像になってしまうのです!
お詫びにちゃんと直し方も書いておきます。
#画像の色空間を変換。(入力ファイル名、(出力ファイル名)、色空間の変換コード) #cv2.COLOR_BGR2RGBはBGR to RGB (BGRからRGBに変換)という意味。BGR2GRAYなどとするとグレースケール(白黒画像)になる。 rgb_image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB) plt.imshow(rgb_image)
cvtColor.py
はい!Lennaちゃんが元どおりになったはずです!
最後に画像の保存方法です。
#(保存時のファイル名、保存する画像配列) cv2.imwrite('new_lenna.jpg',image)
imwrite.py
アフィン変換による画像の平行移動&回転移動
アフィン変換を用いた画像の平行移動と回転移動を行います。
数学的な説明は後にして、とりあえず実装を行なっていきましょう!
まずは平行移動からです。
warpAffineメソッドの使い方に注目です!
数学的な説明は後にして、とりあえず実装を行なっていきましょう!
まずは平行移動からです。
warpAffineメソッドの使い方に注目です!
#縦幅、横幅をそれぞれ取り出す height, width = image.shape[:2] #変換行列の指定 横にa,縦にb動かしたい時は[ 1, 0, a],[ 0, 1, b]とする。(詳しくは後ほど!) M = np.float32([[1,0,100],[0,1,50]]) #画像を平行移動 (入力画像の配列、変換行列、出力画像サイズ) moved_image = cv2.warpAffine(rgb_image, M, (width, height)) plt.imshow(moved_image)
moved.py