モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

目次目次を開く/閉じる

OpenCV を Python から扱うための環境構築

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2018/07/10
最終更新最終更新
2023/03/11
記事区分記事区分
一般公開

目次

    インフラ構築と自動化が得意。TerraformとAnsibleでインフラを自動構築するお仕事が多め

    コンピュータビジョン向けライブラリの一つである OpenCV を Python から扱うための環境を準備します。

    都度参照するためのドキュメント

    インストール

    ビルド済みバイナリを apt/yum インストールする方法

    OpenCV バイナリおよび Python ラッパーが、依存先である NumPy 等のライブラリと共にインストールされます。比較的古いバージョンがインストールされます。

    sudo apt install python-opencv
    

    バージョンの確認

    >>> import cv2 as cv
    >>> print(cv.__version__)
    2.4.9.1
    

    ソースコードからビルドする方法

    ビルドに必要なパッケージのインストール

    sudo apt install build-essential cmake python-dev python-numpy git
    sudo apt install libgtk2.0-dev libv4l-dev libffmpegthumbnailer-dev libgstreamer-plugins-base1.0-dev
    

    ソースコードのダウンロード

    git clone https://github.com/opencv/opencv.git
    

    ビルドおよび /usr/local へのインストール

    mkdir opencv/build
    cd opencv/build/
    cmake ..
    make
    sudo make install
    ls -ltr /usr/local/
    

    バージョンの確認

    >>> import cv2 as cv
    >>> print(cv.__version__)
    4.0.0-pre
    

    OpenCV のビルド時に CPU 最適化の cmake オプションを不適切に指定した場合は inlining failed in call to always_inline といったエラーが出ることがあります。また -DENABLE_AVX=1非推奨となっています。ENABLE_AVX ではなく CPU_DISPATCH を利用します。

    画像の読み込み、表示、保存

    読み込み

    import cv2 as cv
    img = cv.imread('./myimage.png', cv.IMREAD_UNCHANGED)
    img = cv.imread('./myimage.png', -1) # としても同じ。以下同様
    img = cv.imread('./myimage.png', cv.IMREAD_COLOR) # 透過は無視
    img = cv.imread('./myimage.png', 1)
    img = cv.imread('./myimage.png', cv.IMREAD_GRAYSCALE) # 白黒
    img = cv.imread('./myimage.png', 0)
    

    Matplotlib でも読み込めます。OpenCV は BGR モードで画像を読み込みおよび処理します。Matplotlib は RGB モードで画像を読み込みおよび処理します。

    from matplotlib import pyplot as plt
    import matplotlib.image as mpimg
    img = mpimg.imread('./myimage.png')
    

    表示

    cv.imshow('mywindow_id', img)
    cv.waitKey(0) # wait until any key is pressed
    cv.destroyAllWindows()
    

    Matplotlib での表示もできます。OpenCV で読み込んだものを Matplotlib で表示すると RGB と BGR の差異のため色がおかしくなります。

    plt.imshow(img)
    plt.show()
    

    保存

    cv.imwrite('copied.png', img)
    

    簡単な書き込み

    RGB で処理するために Matplotlib を利用することにします。

    import numpy as np
    import cv2 as cv
    from matplotlib import pyplot as plt
    

    NumPy で黒色の正方形を用意します。

    img = np.zeros((512,512,3), dtype=np.uint8)
    

    図形

    太さ 5px の赤色の直線

    cv.line(img, (0,0), (511,511), (255,0,0), 5)
    plt.imshow(img)
    plt.show()
    

    太さ 5px の赤色の長方形

    cv.rectangle(img, (10,10), (500,500), (255,0,0), 5)
    plt.imshow(img)
    plt.show()
    

    太さ 5px の赤色の半径 50px の円

    cv.circle(img, (255,255), 50, (255,0,0), 5)
    plt.imshow(img)
    plt.show()
    

    文字

    太さ 5px の白色の文字

    cv.putText(img, 'Hello World!', (10,255), cv.FONT_HERSHEY_SIMPLEX, 1.5, (255,255,255), 5)
    

    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    インフラ構築と自動化が得意。TerraformとAnsibleでインフラを自動構築するお仕事が多め

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →ステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事