OpenCVの使い方入門 フリップ(画像回転)の入れ方
画像処理アルゴリズム OpenCV でフリップの入れ方について
画像処理を行う上で恐らく カメラ設置~撮像対象の位置決め などを行うと思いますが,カメラの位置決め穴の関係から正面から取れない事もあります。下の画像はコグネックス社のビジョンセンサ(産業用カメラ)ですが位置決め穴は裏面に空いています。
産業用カメラはごつい事が多いので設備次第では横向きに設置する必要が出て来ます。
そういう時にユーザーの見え方としては横向きの画像よりも正面から見た画像のほうがいいですよね。
その場合,アプリケーション側で画像を残す場合は反転処理をする必要があります。
今回はPythonで有名な画像処理アルゴリズムであるOpenCVを用いる事で画像のフリップ(画像反転)を入れる方法を説明していこうと思います。
OpenCVによるフリップ(画像反転)プログラミングを紹介
OpenCVは非常に人気のある画像処理アルゴリズムです。簡単に接続したカメラから画像をアプリケーションに読み込めますし,主要な画像処理はほぼ簡単なプログラミングで実装できます。
画像処理の基本についてはこちらの記事で,OpenCVによる画像の読込などはこちらの記事で紹介していますので是非見ていってください。
さて,OpenCVによる画像のフリップ方法を早速紹介していこうと思います。
まず,ベースとなる画像は私の個人的趣味で2020年10月時点で絶賛大人気のVTuberである常闇トワ様の画像を使用させていただきます。本当に美しいですね。
さて,こちらの画像をC:\Temp\towa.jpgという名前で保存して以下のプログラムを実行するだけで画像をフリップさせる事が出来ます。
import cv2
img = cv2.imread('C:/Temp/towa.jpg') #これでimgに画像データが入る
flip1 = cv2.flip(img,1) #フリップ(回転) の1を指定
cv2.imwrite('C:/Temp/flip1.jpg',flip1) #画像を保存
flip0 = cv2.flip(img,0) #フリップ(回転) の0を指定
cv2.imwrite('C:/Temp/flip0.jpg',flip0) #画像を保存
flipRev1 = cv2.flip(img,-1) #フリップ(回転) の-1を指定
cv2.imwrite('C:/Temp/flipRev1.jpg',flipRev1) #画像を保存
画像はcv2.imreadで読み取り,それぞれcv2.flip関数で画像を反転させています。その際にcv2.flipの時に 0,1,-1 の値を引数として代入しています。この値を指定する事で画像は以下のような反転パターンを持たせる事ができます。
左上が基本画像でそれぞれの引数(0,1,-1)をかけた場合の画像です。
0を指定すると上下が反転し,1を指定すると左右が反転,-1を指定すると上下左右が反転する形になっています。
皆さんも削除対策で動画の左右を反転させた物を見たことはないでしょうか。あれもやっている事はこのフリップと同じです。
如何だったでしょうか。OpenCVを用いる事で画像の反転がこんな短いコードで実現できるんですね。OpenCV開発者の方には脱帽です。
それでは今回はここまでにします。他の記事も是非見ていってください!