2018年2月22日木曜日

Pythonを使用してRaspbian上に画像を表示

C/C++などの言語を勉強する際、最初に"Hello World!"表示が出てくると思います。流石にここまで戻って、始めたくないので画像ファイルをGUI上に表示させてみようと思います

ちなみに"Hello World!"表示は、以下で出来ます

print ('Hello World!')

画像表示になりますので、画像ファイルを開いて、GUI上のウィンドウにそれを表示すると言う感じになります。ま、お試しなのでOpenCVを使用してみようかと...

OpenCVを使用する場合、numpyとcv2をインポートします。これで、OpenCVの関数(下記記述のcv2.****)が使用できます

記述したコード:

import numpy as np
import cv2

def main():
    tst_display()
    return

## 画像ファイルの読み込みと表示
def tst_display():
    # 画像ファイルの読み込み
    img = cv2.imread('img/test.png',1)

    # 画像表示
    cv2.imshow('image',img)

    # キー入力があった場合、全てのウィンドウを閉じる
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    return

### 実行
if __name__ == "__main__":
    main()


tst_display()内で記述した下記で、test.pngをカラーモード(引数:1)で開きます。ちなみに引数を0にした場合は、グレースケールになります

img = cv2.imread('img/test.png',1)

上記で開いたファイルを。コマンドの第1引数で設定した名前(このファイルでは、image)のウィンドウで画像ファイルを表示します

cv2.imshow('image',img)

画像ファイルを表示したimageウィンドウは、何かしらのキーが入力されるまで表示し続けます(引数で設定した0は、無制限になります)

cv2.waitKey(0)

キーが入力されるた後、全てのウィンドウを表示指します 。特定のウィンドウを削除したい場合は、cv2.destroyWindow()コマンドを使用するそうです

cv2.destroyAllWindows()

結構、簡単に記述できました。ちなみに下記は、このファイルを直接実行した場合にTRUEとなります。直接実行した場合、Pythonプリンタで__name__が設定されます

if __name__ == "__main__":

Pythonのコードは、スクリプトファイルとして他ファイルから読み出すことが出来ます。その際に実行されないようにするための記述になります

このスクリプトを実行すると、Raspbian上に指定した画像ファイル(Raspberry Pi ロゴ)が表示されます


ちなみにcv2のインポートでエラーが発生する場合、OpenCVがインストールされていないと思いますので、ライブラリと本体をインストールしてください


なお、OpenCVは以下コマンドでインストール

sudo apt-get install libopencv-dev
sudo apt-get install python-opencv


0 件のコメント:

コメントを投稿