【Intel】OpenCV総合スレ 5画素目【画像処理】
■ このスレッドは過去ログ倉庫に格納されています
OpenCVはインテルが公開したオープンソースのコンピュータービジョンライブラリ。
現在はWillowGateが開発している。
本家
http://opencv.willowgarage.com/wiki/
日本語資料など
http://opencv.jp/
前
【Intel】OpenCV総合スレ 4画素目【画像処理】
http://toro.2ch.net/test/read.cgi/tech/1329040627/ 手持ちのVC++2010でOpenCV導入しようと思ったのに
いくらプロジェクトの設定いじっても「外部参照が未解決です」みたいなエラーが出まくって
1週間くらい苦しんだ挙句VS2017をインスコして同じようにプロジェクト作り直したらあっさりエラー消えた
マジファック 失礼します。OpenCV(c++)を始めようとしているものですが早速詰まりました。
1.「brew install opencv3」で入れる
2. サンプルコードを丸コピ。`pkg-config --cflags opencv` `pkg-config --libs opencv`をつけてコンパイル。
3. すると「ld: library not found for -llibopencv_stitching.3.3.1.dylib」という文章が
4. pkg-config --libs opencvで調べたが確かにそこにlibopencv_stitching.3.3.1.dylibはある。どちてnot found?
こういった感じです。ネットで調べても有力な情報が見つからなかったのでわかる方いればよろしくお願いします LD_LIBRARY_PATHが指定されてないんだろ >>801
export LD_LIBRARY_PATH=/use/local/Cellar/opencv/3.3.1_1/lib
で試したのですが何も変わりませんでした。
ちなみにこのパスは>>800の4で出てきたやつです。 入れるだけなら楽なんですけどね・・・
ライブラリがnot foundのせいでネットにある導入方法が通用しなくて困る。特に変なことした覚えないのになぁ detectorでcomputeした際のdescriptが空の時(多分特徴点が見つからない時)、bfmatcherでマッチングするとエラーになるのですが、これを回避する方法はなんかいい案ありませんか?
カメラから連続フレームで処理してると特徴点がない時に止まります。
簡単な回避法としてcatchとかtry-except系で例外を捕まえるのは、こちらの都合的にあまり望ましくないので、出来ればアルゴリズムで何とかしたいのですが。 1フレーム前の特徴点も取っておいてとりあえず適用とか ver2.4だけどデフォルトで特定の色をラベリングする方法ない? デフォルトの意味が分からんけど1つの関数でってこと?
素直に色検出とラベリングに分けたらいいのに 顔認識ではなくて図形の認識を行いたいのですがどんな方法があるでしょうか?
認識する図形は形は同じで大きさが異なるものです。 Webカメラで顔を認識してそれをそのまま画像に保存するって言うのはopencvでは難しいですか? その辺に強いライブラリあったら教えてください すまん認識なら3行じゃ無理だな
検出なら出来る(3行とは言ってない) 顔認識はあるし保存するだけだから、
環境さえ揃っていれば数分で出来るな 認識がデフォであるわけねーだろ
ぽまえらの顔はフリー素材か何かなのか?w まあ顔認識のワードが先行してるしトーシロちゃんが間違うのも無理ないか
簡単に言うと顔がどこにあるのか見つけるのが検出、その顔が誰のものかが分かるのが認識 それとも何だ?一般物体認識としての顔認識の分類モデルがデフォで存在するんか?
まあそうだとしてもこのタスクの場合は検出とやってるレベル同じだけど 例えば↓から3.3.1落としたら、そんな中にhaarcascade_frontalface_default.xmlとか入ってるだろ
その調子だとおまえにかかったらこういうのは顔認識でもモデルでもないんだろうけどさ
https://opencv.org/releases.html haarlikeでやってるのは顔検出なんだよってに
カメラとかで顔のとこに四角形が出るのがそれ
顔の場所だけを見つけるのが検出
認識つったら文字認識とか言うみたいに何の文字かまで、顔で言えば誰の顔なのかまで言い当てないと認識にはならない まあこうやって講釈たれても実際一般人には顔検出のことを顔認識で通ってしまうから何も言えねえなのが辛いところ
まあでもせめてこういうスレくらいでは、ね? 誰の顔かってのは認識じゃなくて認証だと思ってたけど 認証ってのは、単に誰かじゃなくて、
「本人確認」して、さらに権限の認可とかにつなげることでしょ。
認識してもただ行動追跡するだけみたいなのは認証じゃない。 特に駅前の○○の指定(私鉄の沿線で鉄道会社の指定とかな)だとか何とか書いてあるとことか、
わざと一定期間でダメになったり、隣の歯の治療で穴が開通する様に細工するのが上手いからな
国民の金を回させる為に水道にフッ素入れない様にとか、おかしな国だよ カメラで物体を撮影して正確に物体の座標を特定したいです
今は物体にLEDを取り付けて閾値を用いて特定していますがより良い方法はありますか?
正確な座標と誤認識の少なさを両立させたいです そういうのは撮影環境や物体の動きとかの条件次第だからなんとも言えない
グリーンバックにして環境光も変えてってできるならそうすればいいし、
物体にLEDをつけれるほどならカメラにこだわらずレーザー測距視野に入れちゃってもいいと思う >>834
撮影中動く物は検出したい物体のみです
環境はどんな部屋でも特定できるようにしたいのでグリーンバックなどは厳しいです 動くのが物体だけだったら諧調落としてフレームの差分とるだけで終わりそう >>836
フレームの差分とるだけだと動く前と動いた後両方検出してしまう気がします
動く前を除けたら最高なんですが なんかもう無理そうな気がしてきた。今のLEDを輝度下げるとか小さいのにするとかそんなんで誤差小さくしたら? 動く物体が「存在しない画像」を基準にすればいいんじゃね? >>839
なぜか盲点でした
最初のフレームは背景だけでそれと差分取れば常に物体だけ追従できそうですね
LEDの閾値と組み合わせれば誤認識少なくなりそうです >>840
背景差分ってやつだな。実際には照明の大域/局所的
変動や熱などから生じる不規則ノイズがあるので何も考えずに
差分を取るとドッタンバッタン大騒ぎになる。
というわけでロバスト背景差分が必要になるわけ。 顕微鏡で取得した画像に対して、OpenCVでデータ処理をしようと思っています。
まずは、フォーカス合成をした全焦点画像を作ろうと思いますが、
OpenCVにはそれに向いている関数がありますか?
ご存知の方がいましたら、教えてください。 >>842
多数の画像があってある画像では右隅にピントが合ってるが
別の画像では真ん中にピントがあっていて…みたいのを全部
がっちゃんこして「ピントが合った部分」だけで新しい画像を作る
ということでしょうか そういうことだろ。標準機能じゃできなさそうだな
それだけやりたいってなら俺ならphotoshopに突っ込んで自動処理するツールつくるな。そっちの方が簡単かつ生成画像の品質もいい デコンボリューションってOpenCVに実装されてないよな?
ImageJとかの方が良さそう >>842
じゃないんだけど画像にフォーカスが合っているかとうかなんて判定出来るのかな。
特徴点検出を掛けて多い方がシャープさが高いとか?少なくとも同じ視点で撮影していることが保証されてないと厳しそう。
あとPhotoshopだと出来ると書いた人の理論も聞いてみたい 理論も何もphotoshop標準で機能あるから・・・ >画像にフォーカスが合っているかとうかなんて判定
出来る ググりました。
2014年にPhotoshopに「焦点領域」という機能が追加されてるんですね。
なるほど、複数の画像に焦点領域で取得した画像を重ね合わせれば作れるという事だったんですね。納得です。 OpenCVでの解決法に繋がらなくて申し訳ないです。 >>849
そうやってもいいけど、画像の整列かなんかのメニュー一発でできる memo
https://dotapps.jp/articles/qkzakqweffl1k5qp
http://www.gazo.co.jp/shohin_gazoum_vlfc.htm
http://www.eyepp.com/download/pdf/EasyFocus2.pdf
https://www.mitutoyo.co.jp/products/gazoukogaku/menu/gazosokuteikiso.pdf
http://www.faicha.com/vision/05focus/
ピントの合い具合
同じ対象を撮影していて、ピントがあった画像と合っていない画像を比べれば、
1つ1つの輝度差(となりの画素との明るさの差)が短距離で変化するものが、よりピントがあっていると言えそうです。
1ドット右に進むごとに10づつ輝度が変わる4ドットのエリアより、
一発で40輝度変わる2ドットのエリアはクッキリしています。
これを指数化すればよいので、何も考えず、
focus = (画素輝度 - 隣画素輝度)2乗
を画面全体で計算し、これをfocusindexとしています。
この数値、映像対象が変われば当然変化しますので、混在できないとか、
あと動画に使用できないといった問題がありますが、
静止対象のピントを合わせる場合などには結構使えます。
ピント位置を追い込む
上記focusindexをZ軸を少しづつ変化させながら求めると、正規分布のようなベルカーブを描きます。
今、Z0からZnの間にピントがあう位置があると仮定し、この区間を10分割なら10分割して、
Z軸を移動させながら画像を撮影、そのfocusindexを求めます。
すると、どこかの地点で最高値が求まるので、この前後2区間(3点)の範囲にピントがあう位置があるものとします。
これをまた10分割なりして、区間を狭めていき、最終的に、Z軸の分解能で再現できなくなるまで行えば、
ピントのあう画像となります。
問題点としては、縞模様などの場合、ベルカーブにある種の振動波のようなものが観測でき、
正確に合わせられないことがあるということ。
また、ピントの追い込み方が原始的で時間がかかることなどがあげられます。 どの画像がいちばんフォーカスあってそうかってのはすぐ求まるけど
1枚の画像に合成するとこで俺がやったら汚いモザイク絵になっちまうだろうなw
(ひと昔前の使えないパノラマ合成をさらに酷くした状態) >>842
それやるなら超解像顕微鏡を使った方がいいと思う >>856
電子顕微鏡の方がいいだろ
どっちも用途違いすぎてお呼びじゃないがw >>857
電子顕微鏡は画像のフォーカスがあってる部分の合成をやってないけど超解像顕微鏡はやってる
何で電子顕微鏡が出てきたのか分からん 質問失礼します。
カラー画像同士の差分を取るには、3原色に分けてから差分を取ればいいのでしょうか? 何の差分を取るかわからんが、
とりあえずならそうなるな >>861
それぞれ白黒にしたうえで白黒同士で差分 カラーのRGBの各要素には色がない
したがって白黒にする必要ないやろう 1.
python 3.6.3 で複数(20体ほど)の生物(オタマジャクシみたいに特徴が少ないもの)の追跡を差分法でやろうとしてるのですが、前のフレームの ある一つの動体と今のフレームの ある一つの動体が同じであるか求める方法ってありますか?
もしくは、他にいい追跡方法はありますか?
2.
追跡対象が方向転換するとき等、速度が落ちるときに認識が外れてしまうのですが、解決方法はありますか?
プログラミングも動画処理も初めてで、動体の座標を求めてバウンディングボックスを描くところまで作りました
自分で調べてみても、近くに別の動体が来たら認識がおかしくなるような方法しかなくて…
ベクトルから推測するにも、やっぱり最初に判別出来ないと意味がないだろうし…
5日くらい悩んでも分からなかったので、お願いします >>867
抜けました
カメラの位置は固定します
経時変化による光の影響はほぼ無いです >>867
フレーム間隔は?
サンプルの画像数枚貼れる? 2回分の検出で物体が重なった面積が大きい方が同じものとしちゃう
動きが小さい&被写体が大きいなら簡単かつ効果的だよ 返答ありがとうございます
>>869
フレーム間隔について、すみません、よく分からないので、やってる方法を書きます
cap.read()で3フレーム読み込んでグレースケールにしたあち、1フレーム目と2フレーム目、2フレーム目と3フレーム目の差の絶対値を取って、bitwise_andで白いところを抜き出してます
すみません、公表していいのか分からない画像なので、使いたい画像は乗せられないです…
一応それっぽい画像を挙げます
大きさもこんな感じで、真っ黒なやつが動きます
これを全部追跡します
https://i.imgur.com/km9auMT.jpg
>>870
そうしようと思って一度考えたのですが、画像みたいに移動した時、別の動体と重なってしまうと、別の動体同士が認識しあってしまうんです…
https://i.imgur.com/yra8iZt.jpg |1フレーム目 - 2フレーム目| and |2フレーム目 - 3フレーム目|
ってことかな バイオ系でopencv使うならこのサイト見るのがオススメですよ
お金を払えばオーダーメイドでプログラム作成もしてくれるみたいです
http://www.cellstat.net 募集してないのにうちによく作ってくれって依頼くるけど
1万2万で請け負ってもらえると思ってる奴が多すぎるw おまえらもインテルにお金払えよな。
なんでもタダだと思ってんじゃねーよ。 なんのために、どういう送金手段で、いくら、インテルに払えばいいんだ? なんのためにってやっぱりタダが当たり前だと思ってんのか。readmeすら読んでないとかありえん。
https://opencv.org/
[Donate]をクリックして進め。おまえは馬鹿だからまず1万ドル払え。 >>874
この人現役大学生なのに凄いよね
仮想通貨を使ったビジネスも始めてるみたいだし カラー動画を0と255の2値動画に変換して出力たのですが、実際出力された動画の画素を分析すると2値になっておらず、中途半端な値がかなり混ざっています
これはどうしようもないことなのでしょうか jpgというより、動画で出力しているのでmp4です
形式がまずいとかそういう事なのでしょうか
処理は間違っていない気がするのですが…(画素値には0と255以外入れていないので…) mp4はjpegと同じで劣化するだろ。フレーム単位で2値化なんかしたら、HDDいくつあっても足りんわ。 Python3.6.3で
Pyinstaller を使い.exeにして、コンソールに直接 動画ファイル名を打ち込んで動画処理しようとしていたのですが、動画ファイルだけ読み込んでくれません
何故なんでしょう?
webカメラはキャプチャ&処理してくれるし、.pyの状態だと動画ファイルも読み込んで目的通りに動くので、アルゴリズム自体は大丈夫なんだと思います
import cv2
import os
x = os.path.dirname(sys.argv[0])
os.chdir(x)
Device = input('file:')
if Device == '0':
Device = int(Video)
cap = cv2.VideoCaputure(Device)
ret ,frame = cap.read()
if not ret :
print('cannot read video')
cap.release()
cv2.destroyAllwindows()
スクリプトがあるディレクトリを指定し、動画も同じディレクトリにいれて、コンソール画面でファイル名等を打ち込み、キャプチャしようとしてます
そうすると、.exeだと
cannnot read video
と出力されてしまって… パスが悪いんだろ。ファイル名入れるときは絶対パスでいれたら? >>895
そう思って、一度動画ファイルの絶対パスを入れてやってみたんですが、それでもダメでした…
.pyとの違いって何や…エラーも出てないですし… >>894
895が言ってる問題かどうか切り分けるために動画が置いてある場所に(動画じゃない)jpgとか
置いて開けるか試したら? >>897
.exeの方でやってみたら、cvrColorがエラーしてるって出ました。
.pyだと、cannnot read videoです。
cv2.videocaputureをcv2.imreadに変えたら.exeでも.pyでも表示されました
絶対パスじゃなくても、
ファイル名.jpg
だけでもどちらでも開けました
videocaputureに問題があるのかな… ■ このスレッドは過去ログ倉庫に格納されています