質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

9537閲覧

PythonのOpenCVで画像のオブジェクト数のカウントとサイズ測定

IzuShin

総合スコア68

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/06/21 03:27

ラズベリーパイで撮影した写真の解析をしたいと考えております。

やりたい事は写真の中のオブジェクト(顔ではありません)の数のカウントとオブジェクトのサイズを測る事です。
画像解析についてよくわかっていないのですが、PythonのOpenCVで可能な事なのでしょうか?

ご存知でしたら教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

まず、オブジェクトという概念が抽象的すぎます。
以下の記事にような事をしたいのであれば、現時点でOpenCVでは難しいと思います。

http://jp.techcrunch.com/2017/06/17/20170616object-detection-api/

あとオブジェクトのサイズを測りたいとの事ですが、これは無理だと思います。
なぜなら画像には深度情報がないためです。

最近、発売されたGooble Tangoであれば深度カメラが搭載されているのでサイズ測定が可能です。

http://www.moguravr.com/google-tango-ar-case/

現在、Tango対応の端末はLenoveしかありません、私も所有していますがものすごく楽しいです。

http://www3.lenovo.com/jp/ja/tango/

投稿2017/06/21 03:36

編集2017/06/21 03:43
pashango2

総合スコア930

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

IzuShin

2017/06/21 11:38

pashango2さん、ご回答ありがとうございます。 OpenCVよりもGoobleのAPIを利用したほうが良いのですね。 OpenCVで何ができるのかいまいちよくわからず…。 ありがとうございました。
pashango2

2017/06/21 12:58

OpenCVにもhaarという分類機はありますが、自分でhaarを学習させるとなると大変ですからね。 Googleなどの学習済みのAPIを使った方が早いと思います。
guest

0

ベストアンサー

*オブジェクト数のカウント
特定のオブジェクトのみを検出するのであれば、OpenCV標準の物体検出でよいと思います。
検出した物体それぞれについて~、という処理がセットでついてきますね。

顔の例でいう、for (x, y, w, h) in face_list:です。この中で、OpenCVが思う「顔っぽい」ものを根こそぎ拾うことができます。

顔じゃないものを調べたい、とのことですので、上の例で言えば、cascade_file の部分を適宜必要になるxmlファイル(検出してほしいオブジェクトの設定ファイル)に差し替えればできますね。腕、顔、胴体、車、猫のようなみんながやりたがる物体検出については既にxmlが多数公開されていると思いますが、公開されていないものについては自前で用意しないといけません。

特定のものではなくていろいろなものを、という事でしたら、先に回答されている方が出されていましたが、SSDやYOLOが良いのではないでしょうか?

*オブジェクトのサイズを測る
検出したものの大きさが測れたらいろいろできそうで楽しそうですね。

*通常のカメラ1台
検出するオブジェクトまでの距離を決め打ちしておかないと測定は難しそうです。やるとしたら、1pxが何mmに対応するから、このオブジェクトは何cmです、のようなやり方になるのではないでしょうか?先のfor (x, y, w, h) in face_list:の中で、オブジェクトが何pxかも拾えるので、あとは「縦・横のpx数 × 1pxが何mmに対応するか」で出せますね。

*複数のカメラ
ステレオマッチングで行けると思います。例えばですが、こちらが参考になると思います。この距離で何pxに見えるから、実際には何cmのような処理で測れそうですね。

投稿2017/06/22 22:24

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

IzuShin

2017/08/02 03:05

ご回答ありがとうございます。 参考になりました。
guest

0

OpenCVでも機械学習は出来ますが、本来の用途ではないので貧弱です。
Machine Learningのリファレンスを眺めても、あまり使えそうなものはないですね。
クラスタリングや分類問題ばかりです。

C++版のOpenCVはニューラルネットに対応しているようですが、性能はあまり期待できません。
Pythonなら深層学習のパッケージが充実しています。
それらを用いた方が労力的にも、性能的にも、応用が利くという意味でもよいでしょう。
Google発のKerasや、日本語のリファレンスが充実しているChainerなどがあります。


オブジェクトの面積に関しては、検出矩形の面積とみなすなら簡単です。
ある程度検出されるものが限定されているなら、矩形の面積を定数倍してしまうのもアリでしょう。

正確な面積でなくてもよい場合
YOLOやSSDなどが最近ホットです。これらはリアルタイムで動きます。

正確な面積が良い場合
マスクも矩形(バウンディングボックスといいます)も検出出来る手法を用いる必要があります。
Faster R-CNNなら資料も見つかるかもしれませんね。

投稿2017/06/21 10:46

LouiS0616

総合スコア35658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

IzuShin

2017/06/21 11:43

LouiS0616さん、ご回答ありがとうございます。 深層学習という言葉をはじめて知りました。 パッケージとは顔認識をしてくれるAPIの事でしょうか? 正確な面積でなくてもよい場合は、YOLOやSSDといったパッケージを利用するのがよろしいのでしょうか。
LouiS0616

2017/06/21 12:01

機能として利用する分には、GoogleのAPIなどで全く問題ないと思いますよ。 裏で動いてるいろいろをいじろうとすると、回答のような知識が必要になります。 機械学習自体に興味がおありなら、調べてみると面白いかもしれませんね。 興味がないのなら... すみません、あんまりいらない知識かもしれません。
LouiS0616

2017/06/21 12:13

近年の機械学習の主役が深層学習です。 ニュースで『人工知能スゲー』ってなってるやつだと思っていただければ。 簡単に説明すると、「人間の脳構造を模した、抽象概念を理解できるネットワーク」ですかねぇ... 英語ではDeep Learningと言います。 どうやらGoogleのAPIは、裏でSSDやR-CNNが働いているようです。 ここら辺はすぐ変わってしまうでしょうが... 先進分野の研究の賞味期限は恐ろしく短いです。 パッケージは顔認識をしてくれるAPIというわけではないですね。機能の集まりといった感じです。 厳密にはAPIとパッケージの違いはなんなんでしょうね...? APIの方が、意味が広い気がします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問