PythonとOpenCVで画像解析①
始めに
おはようございます。もしくはこんにちは。SIGMAです。最後に記事を書き始めてから今日で100日目となりました。ツイッター上で突然こんなことを言われたので、今日から極力毎日ブログを更新していこうかと。
SIGMA毎日ブログ書いて技術発信しろ
— みみねこ (@3_3_nk) 2019年12月22日
僕は記事を書くのが絶望的に遅いので最初は2~3日に一回くらいのペースで更新していこうかと。 というわけで最初に何書こうかなーとか思ってちょっと考えたのですが今僕がやっていることとしては、
- 画像解析
- 授業変更botのメンテなど
- Rust(なおほぼ手を付けてない模様)
の3つですのでこれらをまあ気のむくままに書いていこうかなと。 今回は画像解析をちょっとだけやっていこうかと。
なぜ画像解析をやっているのか
なぜ僕が画像解析を試みているのかといいますと、まず僕はロボットテクノロジー部(以下ロボテク)という、いわゆるロボコン部に所属しています。昨今のロボコンでは自動操縦のロボットを作らないといけないわけですよ。今年のロボコンの時期には僕はロボテクにいなかったので(?)わからないのですが去年の僕の記憶では自作のロータリーエンコーダなどを使っていた記憶があります。そこで、今季のオフシーズンの技術開発で画像解析を用いてライントレースや、カメラをつかって物体(去年でいう移動テーブルや今年でいう物干し竿)を検出できるようにできるようになったらいいなーという感じで画像解析をすることになりました。
もし画像解析を自動操縦につかうとなった場合、ロボットにラズパイを積んで制御することになるのでしょうけど、僕に画像解析の知識がなさすぎるのでまずは使い慣れているMacである程度できるようにしてからラズパイに積んでいこうかなと思っています。
OpenCVのインストール
今回、画像解析をするにあたって、OpenCVというライブラリを使いました。OpenCVとは、まぁ簡単にいうと画像を色々と簡単に弄れたり機械学習なんかもできるらしいなんかすごそうなライブラリです。今回僕はconda4.8.0をつかっています。OpenCVのインストールは単純で、
conda install opencv
これだけです。
pythonプログラム上で使う時は以下の文でインポートします。
import cv2
画像の読み込み
画像の読み込みにはimread()を使います。
import cv2 image = cv2.imread("./img/sample.png", 0)
このように使います。
第一引数には読み込みたい画像のパス、第二引数には画像の読み込み方法を指定します。-1は無変換、0はグレー、1はカラー、これくらい覚えとけばいい気がする。
返り値としては読み込んだ画像をndarrayとして返します。ndarrayとはその名の通りn次元配列です。例えば、カラー画像の場合は3次元配列です。そのため、OpenCVの他にNumPyなども使って数値的な画像処理ができるようになります。
すごく中途半端なのですが長くなりそうなので今回はここで終わろうかなと思います。次は画像の表示と保存、輪郭の検出ぐらいまで書こうかな。 ここまで読んでくれた方ありがとうございました。