初めてWindows10にOpenCVを導入するときのアレコレと自己紹介のようなもの


はじめまして

長いことQiitaは読者としてお世話になってきましたが,一本目の記事なのでいろいろと手探りです.
コードについてでも記事の作りこみ方でも,なんでも気軽にコメントをください.アレコレの部分はあくまでも私見なのでご容赦くださいませ.

自己紹介的な

こんにちは,ぶらんちと申します.
大阪のとあるメーカー勤務でソフト部門の新人です.大学ではロボット工学について学んでいたはずなのですが,気づいたら情報理工学的なところに興味を持つようになり,ソフト開発者の道を歩み始めました.
今の興味が自動化ということもあり,Excel for VBAやらPythonやらLuaやらバッチファイルやら手広く扱うようになってきました.
少し余裕ができたらSeleniumにも手を出そうと思っています.

記事作成を通してやりたいこと

例えばWebカメラでスナップショットを撮影,という記事は世の中にたくさんありますが,その中の多くが[特定のキーボード操作をしたら撮影]とか[10秒待ったら撮影]とかそういうのが多かったのではないでしょうか.
私は自動化が大好きなので,「キーボードで何か押さないといけない」なんてまっぴら御免なのです.
ファイルを実行したら自動で撮影せんかい,という強い意志のもとこのコードを作成しました.
私はまだまだ初学者なので気持ちがわかるのですが,初学者の方にとって「コピペしたら動くナア!」というサンプルコードは豊富であるに越したことはないのです.そういった方のためモチベーションに寄与出来たらいいなという考えです.

環境などの覚書

他の記事で毎回書くことになるだろうので,コピペできるようにここに書いておきます.何事も効率化あるのみ.
初学者の方の中には導入する環境がいろいろあって迷うナア,という場合もあるでしょうが,個人的には以下の環境がおすすめですので置いておきます.需要あるのか?
あと個人的な偏見も置いておきましょうか.需要ないだろ!
まあ,ここからは少し真面目にお話しします.

Windows 10 pro (ローカル) または Ubuntu 18.04 (Google Colab)
もちろんwin10 Homeでも問題ありません.将来的に遠隔操作をしたかったのでproにしました.
Python 3.X(新しい方がいい)  ネ申
OpenCV (画像処理エンジン)  3.3.Xはバグが多いのでそれ以外ならいい
Tesseract (文字認識ツール)  Googleが提供しています.ホントすごいなGoogle.
Jupyter (python実行ツール)  ステップイン機能のようにブロック毎に実行できて捗る
Visual Studio Code (エディタ)  ダークモードがかっこよすぎる
前二つに関してはコマンドラインからいくつかのコマンドをコピー&ペーストして実行するだけで簡単にpython-OpenCV環境が整備できます.
その辺の細かいコマンドとかはおいおい触れていきます.

逆に初学者お勧めしないのが以下のツールです.

Visual Studio 2019
いわずと知れたWindows向けのマイクロソフト謹製統合開発環境(IDE)ですが,扱いがめちゃくちゃ難しいです.
前バージョンが2016なのですが,2019と微妙に挙動が違ったり毎回依存フォルダを整備したりライブラリを設定したりOpenCVのバージョンが違ったら設定が変わったり,,,といろいろと絶妙な手間が掛かります.
そもそもC++でOpenCVを動かすための記事の絶対数がPythonに比べて少ないです.ここに手間をかけるなら手っ取り早く層の厚いPythonで環境を導入してOpenCVをうまく制御する方法を学ぶことに時間を費やすほうがいいという考えです.

Anaconda
初学者向けのPython環境が一発で入るので,「これさえ入れとけばなんとかなるやろ!」的なハッピーセットであります.これを勧める記事は多いと思います.
が,初学者が触るにはいろいろと問題があるように感じます.
Anacondaは仮想環境を構築してその上でPythonを走らせるのでローカルPCの環境を汚さない(設定を変えたりすることがない)ことが大きなメリットです.

コーディングの中で様々なパッケージを必要に応じてインストールする際,Anacondaではconda install hogeという特殊なコマンドを必要とします.それに対してそれ以外の普通の環境ではpip install hogeと記述します.
(hogeはナンチャラカンチャラ的な意味でホゲと読みます.弟にfugaとhuga,妹にpiyoがいます)
前述の通り,私はコピペしたら動く!という感動が初学者に大切だと思っていますので,敢えて特殊なコマンドを必要とする環境で挑む必要はないよ,というスタンスですので推奨しません.
condaとpipをごっちゃにして記述しても動くには動きますが,仮想環境を構築できるというAnacondaのメリットを踏みにじる行為なので同様におすすめできません.

さいごに

なんならGoogle Colabという,初めからOpenCV環境がGPUやらTPUやらが乗っかった状態のサーバーを無料で使用できるという訳わからんサービスまであるのですごいですね(?)
ColabはPythonしか使えないし,ファイルハンドリングに難がある少し特殊な環境なので,興味がある方はどうぞ!ぐらいの感じです.ちょっと小慣れてきた初学者以上の方にはごり押しします.めちゃくちゃイイぞ

5年ほど前にRaspberry-Piを使ったときはマイコンにOpenCVを入れて顔認証するまで一週間かかったりしました.二度とやりたくない.
色々書きましたが,自分がいいと思うものを導入してください.その際ご自分で納得いくまでよく調べることが重要なのです.
オチがクソですがこれでおしまいです.最後までご覧いただけてうれしいです.