概要
Windows10(64bit)に python と OpenCV をインストールしてみることにしました。ラズパイでも使っていくつもりですが、普段 Windowsを利用しているので、例えば、エクセルと連動させる処理などに利用できると思っています。また、過去にラズパイ4でOpenCVのテンプレートマッチングを使って、数字認識の実験を行っていますが、桁数が増えた場合の処理速度の違い等もいずれ確認してみたいと思っています。
Windows への python インストールは、幾つか方法はある様です。“Anaconda” というソフトをインストールすると python だけでなく、OpenCV等、関連するライブラリやユーティティソフトを簡単に設定できる環境を提供してくれます。一方、python と OpenCV 等を個々にインストールする方法もあります。
今回は、後者の個々にインストールする方法について記載します。実際に “Anaconda” もインストールし、容易に設定できることを実感しましたが、起動や切換等の通常の処理に時間がかかると感じました。高性能PCで高度な科学計算等を行う目的に対しては効果的であろうという感想です。認識不足もあるので、いずれ時間を見つけ、詳しく確認したいと思います。
あと、pypylon という(独) basler社の産業用カメラ画像を python で扱うインタフェースドライバーのインストールも行います。解像度の高いカメラで精度の良い処理が出来るのではないか(?)という素人考えです。
python インストール
下記よりインストーラーをダウンロードします。
(python-3.8.3-amd64.exe)
https://www.python.org/downloads/
ダウンロードしたインストーラーを起動すると下記メッセージが表示されますので、“Add Python 3.8 to PATH” のチェックボックスにチェックを入れて、“Install Now” をクリックします。
インストール終了したら、“Close” で閉じます。
OpenCV インストール
下記リンクからインストールファイルをダウンロードします。
ダウンロードページには、University of California, Irvine とあるので、私が思うカリフォルニア大学なら悪意的問題は無いと思いますが、ページ最上部にもサポート対象外・自己責任という内容と思われる記載があります。本サイト全般にも共通することですが、実施の場合、自己責任で対応して下さい。
【リンク】https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv
【ファイル名】opencv_python-4.2.0-cp38-cp38-win_amd64.whl
(Win64bit, python3.8対応の OpenCV4.2 と思われる)
ダウンロードしたファイルを Windows コマンドプロンプトで、 下記の通り pip インストールします。特に問題なくインストール出来た様です。
【pipインストール】 python -m pip install C:\Users\ <途中省略> \opencv_python-4.2.0-cp38-cp38-win_amd64.whl
数値計算に使うという numpy もインストールします。
【pipインストール】 python -m pip install numpy
上記にて python,OpenCV ,numpy がインストール出来ました。Windows スタートメニューに次の様に追加されています。
スタートメニューの “ Python 3.8(64bit)” をダブルクリックし、下記ツール(コマンドプロンプト?)を起動します。
“import cv2” ,“import numpy” を実行しエラーが出なければライブラリもインストールされている様です。
実際にWindows コマンドプロンプトから、プログラムを起動し、USBカメラ接続を確認します。
USBカメラ接続確認に使用したプログラムです。
import cv2
capture = cv2.VideoCapture(0)
while(True):
ret, frame = capture.read()
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
capture.release()
cv2.destroyAllWindows()
次の様に連続動画の画面出力を確認出来ました。
PyPylon インストール
PyPylon の前に basler社HPから、Windows用のpylon ドライバーをダウンロードして、インストールします。
途中省略しますが、“Developer”用とカメラ接続インタフェースとして私の場合は“USB”を選択しています。
次にpython バージョンに対応する、下記リリースページから PyPylonをダウンロードします。
https://github.com/Basler/pypylon/releases
【pipインストール】 python -m pip install C:\Users\<途中省略> \pypylon-1.5.4-cp38-cp38-win_amd64.whl
最後に動作確認です。
以下、URLにサンプルプログラムがあります。
https://github.com/basler/pypylon/tree/master/samples
いくつかあるサンプルプログラムの中の “opencv.py” を動かしてみます。下記の通り、Windowsコマンドプロンプトから、プログラムを起動します。
basler社カメラ(acA4600-10uc) を使い、 下記の連続画像を取得出来ました。ライブ画像でない様に見えますが、一応ライブ画像です。解像度は高いはずですが、まずは画像取得を確認できた段階で、状況・理由等はよくわかりません。
解読していませんが、使用したサンプルプログラムです。
''' A simple Program for grabing video from basler camera and converting it to opencv img. Tested on Basler acA1300-200uc (USB3, linux 64bit , python 3.5) ''' from pypylon import pylon import cv2 # conecting to the first available camera camera = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateFirstDevice()) # Grabing Continusely (video) with minimal delay camera.StartGrabbing(pylon.GrabStrategy_LatestImageOnly) converter = pylon.ImageFormatConverter() # converting to opencv bgr format converter.OutputPixelFormat = pylon.PixelType_BGR8packed converter.OutputBitAlignment = pylon.OutputBitAlignment_MsbAligned while camera.IsGrabbing(): grabResult = camera.RetrieveResult(5000, pylon.TimeoutHandling_ThrowException) if grabResult.GrabSucceeded(): # Access the image data image = converter.Convert(grabResult) img = image.GetArray() cv2.namedWindow('title', cv2.WINDOW_NORMAL) cv2.imshow('title', img) k = cv2.waitKey(1) if k == 27: break grabResult.Release() # Releasing the resource camera.StopGrabbing() cv2.destroyAllWindows()
まとめ
一応、python と OpenCV を学ぶ環境はある程度整備出来たと思います。いずれ、機械学習も出来ると良いと思います。一体、何から始めればよいのか? そこから、スタートですが。。。