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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

629閲覧

OPENCV カメラ画像から、物品の員数をカウントしたい

dousko___

総合スコア1

OpenCV

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/07/03 23:43

編集2022/07/04 08:00

前提・実現したいこと
・カメラ画像から、物品の員数をカウントしたい

自分で調べたことや試したこと
・こちらの都合で申し訳ないですが、原画像はアップできません。
・以下がカメラ画像を二値化したものです。

【二値化した画像】
イメージ説明
【数え方】
イメージ説明
対象内の白い影、合計19個カウントできればよいが
ここからどのようにすれば
カウントできるのかがわかりません。
回答ぜひお願いします。

使っているツールのバージョンなど補足情報
python 3.10.1 opencv 4.5.5 win10

【回答を受け補足】
イメージ説明

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

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

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

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

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

dousko___

2022/07/04 08:08

グラフ化して眺めてみますと 山ができるときは、一定以上の値が連続しており この条件を詰めていくことで山の数(物品の員数)がカウントできそうです。
fana

2022/07/04 08:40

この1次元データに対して適当な閾値(例えば「最大値の40%」とか何とかでも良いかも)処理を行えば山(と谷)の位置が得られそうですね.
fana

2022/07/04 08:47

後は,もしも「部品があり得る場所というのは等間隔である」みたいな前提知識があったりすれば,山の高さに差が大きいような場合(簡単に定めた単一閾値だと小さい山を見逃すような場合)に利用できるかもしれません. 「これらの箇所に明確な山がある→ならば他の山があり得る箇所というのはこの辺であるハズ」みたいな手掛かりから漏れた山の有無を再チェック,みたいな.
guest

回答3

0

対象範囲のみのROIをつくり

・フィルター使って縦方向にのみ膨張させて、ブロブの数を数える
・縦方向の積算プロファイルをつくって山の数を数える(たぶん、fanaさんの1行目と同じ)

投稿2022/07/04 02:14

yominet

総合スコア187

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

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

dousko___

2022/07/04 02:56

yominetさま 判定のためには画素を引き伸ばしてもよい 今回ご指導で気が付きました。 ありがとうございます。
guest

0

収縮→膨張で足?が消えて頭?の孤立島部分が残るのでブロブ抽出し、ある面積以上のものを数えればいいでしょう。

足?が消えないなら固定範囲塗りつぶしで消す方法もあります。

ただ、一番右は収縮で予想以上に消えて対処に悩むかも。
(画像処理あるある)

投稿2022/07/04 01:44

mike

総合スコア118

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

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

fana

2022/07/04 02:06 編集

(大元の画像は示すことができないらしいので,こちら側からはどうすることもできませんが) モルフォロジのような後付け処理を持ち出すよりも前に,二値化処理自体を検討することを先に行うべき…みたいな話がありそうに思えます. (もちろん,ブツによって二値化結果の差がでかい理由が何か?に依りますが) > 一番右は収縮で予想以上に消えて対処に悩むかも 本件は「X方向にブツが並んでいる」という暗黙の前提知識が存在するものと見え,ブツの間には「(理想的には)黒画素のみ」な空間が存在する(ように二値化する)のだとも見えますから,「白の塊」ではなく「黒な空間」の側を数える方向の方が 安定/簡単/etc かもしれません.
dousko___

2022/07/04 02:35

mikeさま 恥ずかしながら ブロブ抽出 → 面積算出の手法を知りませんでした。 今回ご指導いただきました内容を試してみます。
guest

0

ベストアンサー

とりあえず何も考えずに,「x座標毎の白画素の個数」みたいなデータのグラフでも作って眺めてみれば良いのではないでしょうか.

ご提示の黄色い枠の範囲というのが与えられているならば,とりあえずその内側についてのみ処理を行えば画像左右端の不要な領域の影響は受けないのでしょうから,綺麗に山と谷が並んだ形のグラフを目にすることになるのでは? と想像します.(それが確認できたなら,やることは自明かと.)

投稿2022/07/04 01:21

fana

総合スコア11652

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

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

fana

2022/07/04 01:23

投げやり感(?)のある回答になっていますが,提示画像の1例しか見ていない側から言えば,(言葉は悪いけど)「じゃあ数えれば?」という感じで, あなたが対象とする画像全てがこの提示例程度に綺麗に二値化できるとすれば,問題と呼べる問題は無さそうに見えます. 本当は何が問題になっているのか? 本当に困っていることは何か? みたいな話を述べた方がまともなアドバイスが付く率が上がるのではないかな,と.
dousko___

2022/07/04 02:26

fanaさま こちらの不足を指摘いただき ありがとうございます。 まず、画素のグラフ化を試します。
fana

2022/07/04 04:19

> グラフ は,あなたがデータを把握するための可視化手段でしかないから,そこは間違いなきよう.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問