MATLAB,Python,Scilab,Julia比較 第3章 その5【画像操作④】

MATLAB,Python,Scilab,Julia比較 第3章 その5【画像操作④】 数値計算
MATLAB,Python,Scilab,Julia比較 第3章 その5【画像操作④】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/

はじめに

各ツール、各言語で画像の読み込み、処理、保存の基本的な記載の仕方を確認していく。
今回はPythonによるカメラキャプチャ。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

カメラキャプチャができる?

太郎くん
太郎くん

Pythonもやったから、この流れだと次はScilabか。

フクさん
フクさん

いんや、Pythonでのカメラキャプチャをやっておく。

太郎くん
太郎くん

そういえば、カメラキャプチャの話があったな・・・。

太郎くん
太郎くん

MATLABではやらなかったけど、Pythonはできるってこと?

フクさん
フクさん

MATLABは別途「Image Acquisition Toolboxハードウェアサポートパッケージ」ってのが必要だが、
Pythonはcv2の機能として実施可能だ。
まぁ、このシリーズの最初でも行ったが、動画を扱うことは基本的には無いが、できることだけを確認ってレベルだな。

Pythonでカメラキャプチャ

フクさん
フクさん

コードとしては以下になる。
カメラから取り込んだイメージをそのまま表示しているものと、左右反転した上で表示している。

import cv2

def capture_camera():
    """Capture video from camera"""
    # カメラをキャプチャする
    cap = cv2.VideoCapture(0) # 0はカメラのデバイス番号

    while True:
        # retは画像を取得成功フラグ
        ret, frame = cap.read()

        # 鏡
        frame2 = frame[:,::-1]

        # フレームを表示する
        cv2.imshow('camera capture1', frame)
        cv2.imshow('camera capture2', frame2)

        k = cv2.waitKey(1) # 1msec待つ
        if k == 27: # ESCキーで終了
            break

    # キャプチャを解放する
    cap.release()
    cv2.destroyAllWindows()

capture_camera()

考察

太郎くん
太郎くん

思ったよりも複雑なコードにはならないな。
1フレームずつ取得して、左右反転したフレームを作って、
その2つをimshowで同時に表示させているのか。

フクさん
フクさん

そして、画像表示でもそうだったが、waitkeyで表示側にイベントが回るように処理を待たせている。

太郎くん
太郎くん

あー、そういうのあったねー。

フクさん
フクさん

得られたフレームは1枚の画像と一緒なので、
画像処理ができれば、動画の処理もできるって理屈だ。
まぁ、動画の場合はある程度のリアルタイム性が求められるから、
処理負荷軽減や、分散などの別のテクニックを要求される可能性は高いが、
そこはこのシリーズでは取り扱わない予定だ。

太郎くん
太郎くん

まぁ、画像処理の仕方が分からない状態だもんねぇ。
その段階で負荷とかリアルタイムとか言われても程度間がまったくわからん。

まとめ

フクさん
フクさん

まとめだよ。

  • Pythonでカメラキャプチャ実施。
    • cv2で実施可能。
  • 1フレームずつ取得でき、1フレーム単位でみれば画像と一緒。
    • 実際には処理負荷軽減、分散等を意識することが多い。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました