OpenCVの使い方入門 WEBカメラのリアルタイム画像取得
OpenCVの必須技術 WEBカメラの映像をpythonでリアルタイム取得する
最近私の所属する会社では画像処理による生産ラインの無人化を行ったりしています。私は製造業の老舗企業で働いていますので正直うちのような古い会社でも画像処理の流れが来たんだなぁとしみじみと感じています。
ただ,いまどきの製造業なんて普通は画像処理で自動化していますよね。そんな需要と将来性のある画像処理について,基本的な内容をこちらの記事で,画像の読込などはこちらの記事で紹介していますので是非見ていってください。
今回紹介するのは人気プログラミング言語pythonで使う事ができる画像処理ライブラリであるOpenCVを使っていきます。
製造業などでOpenCVを使う場合はWEBカメラかIPカメラを使ってリアルタイムな画像を取得しながら作業を自動化する事が多いと思います。そんな時,カメラから取得する画像を表示するプログラムは必須になります。
OpenCVを使ってWEBカメラから画像をリアルタイム取得するプログラミング
今回は手元にあるWEBカメラを使って画像をリアルタイム取得するプログラミングを構築します。
まず,WEBカメラとしてRazer Kiyo社の物を使っています。ただWEBカメラとして使うだけならばUSB接続できる物であれば問題ないです。
ちなみにこのカメラはYoutuberの方々が好んで使っているようですが,私は特にそういった使い方はしていないですね。
このカメラは先端がUSB形状になっているのでPCに指して以下のプログラムを実行するだけでリアルタイムな画像を動画のように実行する事ができます。
import cv2
capture = cv2.VideoCapture(0) #WEBカメラと接続する
while(True):
ret,frame = capture.read() #この処理に入った時の画像データを取得する
if ret == False: #戻り値がFalseの場合は画像取得を失敗しているので処理をやめる
print('画像取得できませんでした')
break
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) #取得した画像のグレースケール画像を取得する
cv2.imshow('f',frame) #リアルタイムに取得した生画像を表示
cv2.imshow('g',gray) #生画像をグレースケールにした画像を表示
if cv2.waitKey(1) & 0xFF == ord('q'):
break #画像取得を止められなくなるのでqを押すと止められるようにする
capture.release() #WEBカメラとの通信切断
cv2.destroyAllWindows() #表示している画像のウィンドウを全て破棄する
可能な限りコメントを入れておきました。本当はもう少し例外処理とかを入れておいた方がいいとは思いますが,それでもこの程度のコーディングだけで実行できます。
※グレースケール画像の取得についてはこちらの記事を参考願います。
これを私の部屋で実行した結果がこちらになります。
左がグレースケール画像(フレームの部分にgと書いてある方)と右が生画像(フレームにfと書いてある)になります。これが動画のように連続して取得でき,カメラを動かしてもリアルタイムな取得画像を取ってきてくれます。
まぁちゃんと取れる事は分かったと思います。ただこんな汚い部屋の一部を晒してpythonプログラミング例を書いているのは私くらいだろうなぁ・・・。
今後の記事ではこの取得した画像を使った応用例のようなプログラムを紹介していきたいと思います。