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

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

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

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

Python

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

Q&A

解決済

1回答

1441閲覧

【精度向上】虫の個数カウント計コード

ken248

総合スコア24

OpenCV

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

Python

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

0グッド

1クリップ

投稿2020/09/03 07:07

捕虫シートに捕まった虫のカウントをしようと思って以下のプログラムを書いてみました。
実際にカウントはできましたが、虫が連なりあってるところが1つにカウントされています。
画像を添付しようとはしたのですが容量的に添付できませんでした。
カメラの精度の問題もあるかと思いますが、プログラムで工夫できるところがあれば教えていただきたいです。
ご協力よろしくお願いいたします。

import cv2 #OpenCVのインポート fname=""#開く画像ファイル名 threshold=130 #二値化閾値 img_color= cv2.imread(fname) #画像を読み出しオブジェクトimg_colorに代入 img_gray = cv2.imread(fname,cv2.IMREAD_GRAYSCALE) #画像をグレースケールで読み出しオブジェクトimg_grayに代入 ret, img_binary= cv2.threshold(img_gray, threshold, 255, cv2.THRESH_BINARY) #オブジェクトimg_grayを閾値threshold(127)で二値化しimg_binaryに代入 contours, hierarchy = cv2.findContours(img_binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) #img_binaryを輪郭抽出 cv2.drawContours(img_color, contours, -1, (0,0,255), 2) #抽出した輪郭を赤色でimg_colorに重ね書き print(len(contours)) #抽出した輪郭の個数を表示する size=(1500,800) re_img=cv2.resize(img_color,size) cv2.imshow("contours",re_img) #別ウィンドウを開き(ウィンドウ名 "contours")オブジェクトimg_colorを表示 waitKey(0) #キー入力待ち cv2.destroyAllWindows() #ウインドウを閉じる

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

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

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

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

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

tiitoi

2020/09/03 07:08

質問欄に画像を添付してください
yuki23

2020/09/03 07:15

いや、捕虫シートに絡まった虫の画像なんて添付されても困りますが(笑)
fana

2020/09/03 09:33

例えば2値化結果画像とかから出発しても済む内容ならば,ダイレクトな元画像ではなくてそっちを貼るとかで比較的マシになるかも?? (なんだろう,虫の「個数」という言葉に,とても冷たいものを感じる…)
TakaiY

2020/09/03 10:46

全部の画像でなくて、問題になっている複数が連なっていて1つにカウントされてしまう部分だけを切り出した画像を貼ってみたらどうでしょう?
ken248

2020/09/03 23:46

皆様ありがとうございます。 範囲を狭めて、画質落とすと伝えたいことが伝わらなくってしまうレベルの写真になってしまいます。 皆様けんとうしていただきありがとうございます。
guest

回答1

0

ベストアンサー

「捕虫シート」と検索すると、結構なインパクトを与えられる画像が出てきます。見る限りコバエのようなものからハチのような少し大きい虫もくっついています。どのくらいをイメージして重なり想定をしているのでしょうか?

案1) 背景を消す
たぶん黄色の背景だと思います。HSVスケールに画像を変換して、色味が黄色となる背景部分を抽出して下さい。抽出した部分をマスク画像(例えば0で塗りつぶす用データ)にします。
そのまま二値化するよりは分離しやすい画像にするためです。

案2) Scikit-imageに頼る
実際の画像がないと何とも言えませんが、こちらのサンプルのページを見るとそれっぽいものがたくさんあると思います。watershedやSLIC、distance mapなどが使えそうな気がします。

案3) 物体検出に頼る
Haar-likeを使って虫を物体検出させます。

案4) 深層学習に頼る
インスタンスセグメンテーションが使えると思います。

投稿2020/09/03 21:59

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ken248

2020/09/03 23:59 編集

ありがとうございます。 1㎜レベルの虫が捕虫シートの淵に連なってるイメージです。 その間に5mm程度の虫もおり、それらがぴったりくっついてしまっています。 その結果3匹いるところを1匹としてしか認識できないというような状況になっております。 案1 現状背景白を試していましたが、背景は黄色もあるので試させていただきます。 案2 ありがとうございます!全く知らないサイトでしたので勉強になります。 おっしゃっていただいたのをベースに検討してみます。 それでもだめでしたら…案3を検討してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問