Python3.7.x+OpenCV4.1.x+wxPython4.0.x+USBWebcamのクロスプラットフォームな環境構築事例集


こちらはOS毎の記事への目次です。そのうち Python 3.8 系対応記事にしたいところ。

想定する運用スタイル

  • OpenCV を利用する GUI アプリケーションを wxPython により構築する。

    • wxPython が使えない場合は Tkinter や PyQt、Kivy 等を利用する。
  • Webcam を USB 接続し OpenCV から利用する。

    • ARM 系ハードでは内蔵カメラの利用も考慮する。
  • 異なるプラットフォーム / OS における作業手順を出来るだけ統一化する。1

    • ソースコードからのビルドは configure, make, make install、もしくは cmake, ninja, ninja install のような、UNIX 系 OS の作法で行えるよう工夫する。
  • Python 向けパッケージpip + venv で管理する。
    ※ インストール済みの Python パッケージ全てのアップグレードについては以下を参照下さい。
    How to upgrade all Python packages with pip? - Stack Overflow

x86-64アーキテクチャ

Windows

Windows10+Python3.7.x+OpenCV-Python4.1.x+wxPython4.0.x/PyQt5/Tkinter+USBWebcamの環境構築例

Linux

Kubuntu_18.04LTS+OpenCV4.1.x+wxPython4.0.6+USBWebcamの環境構築例(工事中)

CentOS_7+Python3.7.x+OpenCV4.1.x+wxPython4.0.6+USBWebcamの環境構築例(工事中)

Slackware_14.2+Python3.7.x+OpenCV4.1.x+wxPython4.0.6+USBWebcamの環境構築例

Manjaro-KDE+Python3.7.x+OpenCV4.1.x+wxPython4.0.x+USBWebcamの環境構築例

Sabayon-KDE+Python3.7.x+OpenCV4.1.x+wxPython4.0.x+USBWebcamの環境構築例

MacOS

MacOSCatalina+Python3.7.x+OpenCV4.1.x+wxPython4.0.x+USBWebcamの環境構築例

※ Catalina に標準搭載の Python 3.7.3 から venv を用いることで仮想環境内に pip で簡単に opencv-python と wxPython を導入可能でした。

※ 一方で wxPython をソースからビルドしようとして苦戦中です。なお、OpenCV 及び wxWidgets のビルドは問題ありませんでした。

FreeBSD

Project Trident+Python2.7.x+OpenCV3.x+wxPython3.xの環境構築例(工事中)

※ OpenCV 4.x 系のビルドが通らない上に、3.x 系に FreeBSD の Ports の Patch を当ててもPython3.x系向けのバインディングが上手く動作しない状況です。そこで、代替案として Linux バイナリ互換機能を用いたアプローチを検討中です。

Haiku

Haiku+wxQt+wxPython+OpenCV+USBWebcamの環境構築例(計画中)

※ USBカメラ、繋がるんだろうか?

Hurd(x86)

ArchHurd/DebianGNUHurd+Python3.7.x+OpenCV4.1.x+wxPython4.0.6+USBWebcamの環境構築例(計画中)

※ 目指すは Hurd 1.0 リリース前の記事完成。
※ Hurd ディストリだと Debian GNU/Hurd が老舗かな?現在はDebian GNU/Hurd 2019 がリリースされているそうです。
ArchHurd 復活おめでとうございます。
※ USBカメラ、繋がるんだろうか?

ReactOS(x86)

計画中。本格始動は実機で WebCam を繋げつつ OS を安定して動かせるようになってから。

最近の Microsoft はかなりオープンソース寄りであることだし、折角だから、ReactOS Project に色々 Donation してくれないかな?

Docker

Docker+Python3.7.x+OpenCV4.1.x+wxPython4.0.xの環境構築例(工事中)
DebianArch を Docker イメージとして利用。ホスト OS は Windows10 or MacOSCatalina or FreeBSD(NomadBSD/GhostBSD) or Linux(Ubuntu/CentOS/Zenwalk/Manjaro/Sabayon)

Vagrant

Docker+Python3.7.x+OpenCV4.1.x+wxPython4.0.xの環境構築例(工事中)

DebianArch をゲスト OS として環境構築。ホスト OS は Windows10 or MacOSCatalina or Linux(Ubuntu/CentOS/Zenwalk/Manjaro/Sabayon) + VirtualBox + VirtualBox Extension Pack。

※ VirtualBox Extension Pack によって、USB 2.0 及び 3.0 のサポートや WebCam 連携機能の強化が期待出来ます。

ARMアーキテクチャ

iOS

iOS+Python3.x+Kivy+OpenCV+内蔵カメラの環境構築例(計画中)

Android

Android+Python3.x+Kivy+OpenCV+内蔵カメラの環境構築例(計画中)

LineageOS+Raspberry Pi

計画中。Android で出来ることは LineageOS でも普通に出来そうではある。

Windows 10 IoT Core+Raspberry Pi

計画中。このあたりこのあたりを参照しつつ挑戦してみたい。OpenCV と Python と WebCam が動けば色々楽しそう。

Raspbian

Raspbian+Python3.7.x+OpenCV4.1.x+wxPython4.0.x/Kivy+内蔵カメラ/USBWebcam の環境構築例(工事中)

※ ほぼ Debian なので Raspbian 向けの記事はそのまま Debian や Devuan に流用可能と思われます。

※ ソースコードのビルドを行う場合は相応に時間が必要とはいえ、コンパイルもアプリ開発も Raspbian 上で x86-64 環境と変わらない使い勝手で行えるのは便利です。

※ USB 接続のカメラからの描画が崩れる場合、OpenCV を WITH_QT=ON でビルドすることで問題を回避可能でした。


  1. 構築予定の環境の構成によっては Ansible も有用と思われる。参考文献:Ansibleをはじめる人に。- Qiita