OpenCV

Python用ライブラリ用のwrapperを作って使っている話

技術研究所 (技研) のまつけんです。

Python用のライブラリには、cv2 (OpenCV)、numpy (NumPy)、pandas (Pandas)などがあります。大抵のことが出来るので大変便利なのですが、引数の与え方などで不便を感じることがあります。そこで、今回は、私が普段、それらのライブラリをwrapするのに使っているサブルーチンを紹介したいと思います。

OpenCV用 (wrap_cv2.py)

色の定義

頻繁に利用する色 (無彩色、原色、補色) を定義します。OpenCVはRGBではなくBGRが基本なので、その順番となっています。

続きを読む

OpenCVでレシートを適切なサイズに縮小する

技術研究所 (技研) のまつけんです。

リモートワークが増えたことで、会社に領収書やレシートの写真を提出することが多くなりました。紙のレシートを、スキャナやスマホで電子化する (画像ファイルにする) と、不必要に高精細な画像になってしまうことが多いように感じます。そこで、今回は、レシートの写真を自動で、文字が判読できる範囲内で縮小する (解像度を落とす) Pythonプログラムを作成してみました。機械学習などは使わず、OpenCVとNumPyだけで画像処理によって実現しています。

続きを読む

OpenCVを使ったロゴ認識

こんにちは。エンベデッドソリューション事業部の瀧澤と申します。

”文書などに添付されているロゴ画像が適切なフォーマット(サイズ、余白 etc)で使用されているかの確認を画像処理を使って出来ないか”、という問い合わせを社内にて受けました。

“特徴点抽出を行った画像認識を行ったらどうか”という回答をしましたが、私自身も聞きかじり程度の知識でしたので、実際に使用してみようと思い立ったのが本記事を投稿する経緯になります。

GUIベースでのテストアプリケーションを作り、考え方が正しかったか、アルゴリズムの精度はどこまで許容できるかという点で調査を行いましたので、結果を報告します。

特徴点とは

画像上における、ある法則に基づいた特徴の点群になります。(例えば画素間のエッジなど)
この”ある法則”という点において幾つかのアルゴリズムが存在します。

特徴点検出を使ったロゴ認識の流れ

  1. 検出したい画像(以下、query)と検索対象画像(以下、train)それぞれで特徴点を抽出する。
  2. query-train間で類似する特徴点を調べる。(マッチング)
  3. マッチング結果を元に画像の情報を求める。

1.、2.についてはOpenCVのAPIを使用して実現します。
3.については自前で計算を行い、結果を確認することとします。
また、3.で取り出す情報は下記の情報とします。

  • 拡縮情報
  • 回転情報
  • アスペクト比

続きを読む