X



【Intel】OpenCV総合スレ 5画素目【画像処理】

■ このスレッドは過去ログ倉庫に格納されています
0410デフォルトの名無しさん
垢版 |
2015/10/12(月) 14:15:03.90ID:Ko0Nl7AL
理解できました!ありがとうございます!
0411デフォルトの名無しさん
垢版 |
2015/10/18(日) 19:23:47.22ID:lOq7skww
Webカメラをcv::VideoCaptureで制御するとき、
grabや>>でフレームを取得すると新しいフレームが撮影されるまで待機するみたいだけど、
これってフレームが更新されていない場合は待機せずスキップするみたいなことはできないんだろうか?
カメラごとにスレッドを立ててそこで動かせば良いんだろうけど、
複数台のカメラを制御する場合とかちょっと不安だ
0412デフォルトの名無しさん
垢版 |
2015/10/22(木) 13:08:38.20ID:rGAFqWlD
角度の変化にも対応した顔検出器作ろうとちまちま3つほどやってみたけど全部ゴミでした
俺の4ヶ月分の暇な時間返してマジで
0414デフォルトの名無しさん
垢版 |
2015/10/22(木) 15:05:09.55ID:EVhgfJB8
>>411
フレームをスキップする時、スキップしたフレームの画像はどうするの?
多分コマ落ちをわかりやすくしたいんだろうけども、
やるとしたらタイマー設定して、フレームが取得されなかったら真っ黒の画像を挿入するとかでどう?
やったこと無いけどもw
0415デフォルトの名無しさん
垢版 |
2015/10/23(金) 01:21:10.92ID:/JJfrbj7
>>414
いやそうじゃなくて、新しいフレームを取得する間、30fpsのカメラなら最大1/30秒近くそのスレッドが止まるわけじゃん
例えばOpenGLを使っていてペイントの関数内でカメラからフレームを取得すれば画面がその間固まってしまう
こういう時新しいフレームがまだ撮影されてなければスキップできると便利だなと
0417デフォルトの名無しさん
垢版 |
2015/10/24(土) 00:23:25.53ID:tKlRKbw8
>>415
callback準備したasyncgraberなければ作れば良いのに

opencvはそんなのもなかった?
cでは自分でasyncつくってたからよくわからん
0418デフォルトの名無しさん
垢版 |
2015/10/24(土) 06:52:02.25ID:KgXfQA3V
Windowsでプレイする麻雀ゲームがあるのですが、
それを自動でプレイする麻雀AIを作りたいと思っています。
麻雀ゲームを操作する部分で画像認識とマウス操作を使いたいのですが、
その画像認識でOpenCVを使えないかと考えています。
OpenCVは全然知らないのですが、何か画像認識で参考になる書籍やWebサイトなどおすすめを教えてもらえないでしょうか?
0421418
垢版 |
2015/10/24(土) 10:10:25.71ID:KgXfQA3V
>>420
参考になるURLありがとうございます。
同じ方法というのはJAVAを使うということでしょうか?
艦名の認識で書かれているように簡略化するということでしょうか?
これまでWin32APIでアプリを作っていたもので、可能ならC言語でやりたいのですが、
同じようなことは簡単にできるのでしょうか?
あと麻雀牌に利用することはできても点数状況の認識などは結局OpenCVを使った方がいいのでしょうか?
たくさん質問してしまってすみません。
0423デフォルトの名無しさん
垢版 |
2015/10/24(土) 11:22:14.72ID:jc/5RlIu
>>421
定型的な画像しか入力されないんだから画像認識なんて必要ない。
スクリーンショット撮って特定の部分を調べるだけ。
どこに表示されるか決まってるんだから画像をバイナリ比較したらいい。
n 文字目から strcmp するのと大差ない。
次からは初心者質問スレか知恵袋でやれ。
0424デフォルトの名無しさん
垢版 |
2015/10/24(土) 12:20:20.14ID:niXzNvfm
>>421
pythonおすすめ
0427デフォルトの名無しさん
垢版 |
2015/10/24(土) 12:46:33.81ID:niXzNvfm
>点数状況の認識などは結局OpenCVを使った方がいい

画面に点数表示されてるなら
そのまま読み取った方が楽じゃね
0428418
垢版 |
2015/10/24(土) 13:06:38.99ID:KgXfQA3V
知識不足で色々すみません。

>>423
OpenCVなしでできそうですね。
ありがとうございます。

>>427
そのままって言うのはどういうことでしょうか?
OpenCVを使わずに423さんがおっしゃるやり方を点数にも適用する感じでしょうか?
0431デフォルトの名無しさん
垢版 |
2015/10/27(火) 15:39:17.36ID:cLWis84+
エッジ抽出した後に抽出したエッジを一定の大きさに分割する方法はありますか?
0433デフォルトの名無しさん
垢版 |
2015/10/28(水) 13:31:12.87ID:G/+JYzkK
あーはいはい、抽出した輪郭から隣接領域を再抽出したいって話ね
方法はあるけどここに書くにはフォーム欄が小さすぎて無理だな
0434デフォルトの名無しさん
垢版 |
2015/10/29(木) 09:31:47.69ID:Pwuvr73T
http://codepad.org/eoG65A9x

以下のプログラムのように(実際はエラーで動作しませんが)特定のアプリケーションのプロセスメモリを読み取ってそれを適時画像に文字として表示するプログラムを作りたいです。
どのようにすれば可能ですか?
0435デフォルトの名無しさん
垢版 |
2015/10/29(木) 09:44:30.62ID:Pwuvr73T
Sleep(1000)の代わりにwaitKey(10)などにしたところ無事いけました。
とあるゲームで敵のHPを画面表示するツールを作りたかったのですがいけそうですw
0436デフォルトの名無しさん
垢版 |
2015/10/31(土) 09:23:42.61ID:EpOvgfvE
opencv1.0に関しての質問です。
cvMatchTemplateでの結果を入れたIplImage構造体があって、cvMinMaxLocを使えばもっとも一致した点が求められるのは分かったのですが、
一定値以上の複数点を求めるにはどうすればよいでしょうか?
IplImage構造体の中にchar *imageDataというのがありますが、これをどうにかして調べるんでしょうか?
0438436
垢版 |
2015/10/31(土) 14:25:18.50ID:EpOvgfvE
>>437
配列ポインタは一応分かります
opencv1.0なのはbcc developerで開発してるのですが、ネットで1.0の組み込み方法だけ分かったからです
0440デフォルトの名無しさん
垢版 |
2015/10/31(土) 15:57:04.83ID:ADar2buw
>>436
http://opencv.jp/opencv-1.0.0/document/opencvref_cv_matching.html
ここ読んでる?
result
比較結果のマップ.シングルチャンネルの32ビット浮動小数点型データ.image が W×H で templ が w×h ならば, result は W-w+1×H-h+1のサイズが必要.
って書いてあるから、
flota *result = (double *)imageData;とすれば普通に読めるんじゃない?
0441436
垢版 |
2015/10/31(土) 16:57:14.29ID:EpOvgfvE
>>440
レスありがとうございます。
知識不足で申し訳ありませんが、確認させてください。

IplImage result;
float result2;
cvMatchTemplate(image,templ,result,method);
result2 = (double *)result;

としておいてresult2のアドレスが指す値を見るということで合っていますか?
0442436
垢版 |
2015/10/31(土) 17:04:16.02ID:EpOvgfvE
あ、ごめんなさい。以下でしょうか。

IplImage result;
float *result2;
cvMatchTemplate(image,templ,result,method);
result2 = (double *)result;
0443デフォルトの名無しさん
垢版 |
2015/10/31(土) 17:31:04.37ID:ADar2buw
>>441-442
すまん、まちがえた。
float *result2 = (float *)result.imageData;
かな。これでresult2[0]〜result2[W-w+1×H-h+1]が結果のデータになってると思うけど。
試してないから間違ってるかも
0444デフォルトの名無しさん
垢版 |
2015/10/31(土) 17:35:39.94ID:ADar2buw
おせっかいだけど、どうも、見てる限りOpenCVでのIplImageの取り扱いに慣れてなさそうだから、まずはもっと簡単なところから始めてみたほうがいいかも。
例えば、256x256のIplImageを作って、左上が黒、右上が赤、左下が青、右下が紫になるようなグラデーション画像を作ってみるとか。
色違うけど、
http://www2.rgu.ac.uk/subj/ats/teachingweb/teaching/t16/Wk4-Colour/PhotoshopColourPicker.jpg
こんなやつね
0446436
垢版 |
2015/10/31(土) 18:14:50.38ID:EpOvgfvE
>>443
IplImage result;
float *result2;
cvMatchTemplate(image,templ,result,method);
result2 = (float *)result.imageData;

なぜか上記のようにすると
. または .* の左側に構造体が必要
というエラーが出てしまいます。
せっかく教えていただいたのに、うまくできずにすみません…
0448436
垢版 |
2015/10/31(土) 22:53:47.35ID:EpOvgfvE
>>447
IplImage *result;
float *result2;
cvMatchTemplate(image,templ,result,method);
result2 = (float *)result.imageData;

ごめんなさい。こうですね。
書き込みにする時に変数名を変えたので間違えていました。
結果は変わりません。
0450デフォルトの名無しさん
垢版 |
2015/11/03(火) 15:47:56.37ID:KpPfrqOo
ruby-opencvなんですが必要な色の領域だけ抽出した二値画像の重心はどのように計算すればいいのでしょうか
リファレンスガイドを読んでもよく分からなかったです
0451436
垢版 |
2015/11/04(水) 01:00:57.90ID:ZDJipCdK
>>449
やってます!それがいけないんですかね?
0453デフォルトの名無しさん
垢版 |
2015/11/04(水) 10:05:23.46ID:KsS1layI
>>451

・あなたは言葉で状況を説明しているが「言葉による状況描写」そのものが
誤った認識に基づいているならば情報量ゼロ

・あなたは周辺コードやエラーを「ノイズ」だと思って書かなかったのだろうが、
ここで助言をできる人たちにとってそれこそが情報
0455デフォルトの名無しさん
垢版 |
2015/11/05(木) 11:50:27.70ID:k1mCzttB
Google Maps API ならやってくれる
0456デフォルトの名無しさん
垢版 |
2015/11/26(木) 20:40:25.32ID:VrX6iLNo
Aの上半分をBにコピー
Bの上半分をCにコピー
これだけでエラー出てくるけど何なのこれ
0461456
垢版 |
2015/12/01(火) 10:41:38.02ID:WUdCKL/t
自己解決しました
僕の頭が悪いのが原因でした
0462デフォルトの名無しさん
垢版 |
2015/12/01(火) 11:16:37.58ID:mOAeAozf
それはわかっているから、
書き込むならせめて何を勘違いしたかくらい書け
0463デフォルトの名無しさん
垢版 |
2015/12/10(木) 10:21:49.27ID:qPm1t7ac
頭が悪かったから、ではなく

なにをどうしたらどうなるとおもっており、
それはそもそも単純にAしたらBになるという誤解の反映であり
そのような誤解を持った理由はOpenCVにおける設計が若干クソ
なのはさておき、二種類のコピーがある事、更には二種類のコピーが
用意されてる理由などを把握していなかったからでした。

これらのコピーはそれぞれ浅いコピー、深いコピーなどと呼ばれておりうんたらかんたら。

使いドコロとしては浅いコピーは(ここになんか書く)
一方深いコピーは(なんか書く)

注意しなければならないこととして Mat を operator= でアレしたときには(うんたらかんたら)

(ごにょごにょ)というわけで、何をほげしたい場合には浅いコピーで十分で具体的には
ほげほげで十分ですが今の場合にはほげげをすることが必要だったので
深いコピーが必要であり、そのためなんとかという構文で明示的にクローンする
必要がありました。

みたいに書く。そうやって書いておくとここ読んでる人にも有益で、おまえが
他人に教えるときにもテンプレにできるのでWin-Winだな。
0464デフォルトの名無しさん
垢版 |
2015/12/10(木) 12:25:42.92ID:gg94mj0B
みんなでごにょごにょ部分を穴埋めして文章完成させるスレってのがあったな
0466デフォルトの名無しさん
垢版 |
2015/12/22(火) 09:12:30.04ID:llUOQANv
Cudaで高速計算したかったらopencv3使うしかないのかな
まだ2のままでいたいのだけぢ
0471デフォルトの名無しさん
垢版 |
2015/12/25(金) 20:13:24.97ID:0UODRZi4
>>470
0472デフォルトの名無しさん
垢版 |
2015/12/26(土) 10:23:44.42ID:PvF8tuZ2
>471
0473デフォルトの名無しさん
垢版 |
2016/01/14(木) 00:16:44.68ID:ejCwvGZw
OpenCV触り始めたんですけど、サンプル見てとりあえず、

IplImage *src_img = NULL ;
char imgfile[] =
0475デフォルトの名無しさん
垢版 |
2016/01/14(木) 19:19:23.47ID:MVoyv7BA
ポインタのポインタだろ
0476473
垢版 |
2016/01/14(木) 23:39:06.96ID:ejCwvGZw
あれ、すいません。
コピペで貼ったんですが切れてしまいました。
IplImageをcvCreateImageしてcvReleaseImageしただけでメモリリークしているようなのですが、
他に何か終了命令などはあるのでしょうか?
0478デフォルトの名無しさん
垢版 |
2016/01/16(土) 11:06:35.60ID:xOOUInQQ
OpenCVはただのゴミだからインストールしないのが吉。
パソコンプログラミングの超神クラスの俺でも100時間かかって動かせなかった。
はっきり言って時間の無駄。
すでに何百時間も費やして動かせるようになってる人にはとやかく言わないが、
導入を検討してる人はとにかくやめておけ。
0479デフォルトの名無しさん
垢版 |
2016/01/16(土) 18:01:01.85ID:KeKHWyn2
>>478
パソコンってことはWindowsかMacだろうけど、どっちも標準の
開発環境でやってればそんなに迷うようなことないんじゃない?

まあでもそうでもないか。Windows+VSでやってたとき、わりと
DLL関係のプロジェクト設定で躓いて先生に助けてもらったわ。
ああいう設定って一度知ってる人に聞かないとだめだね。
0480デフォルトの名無しさん
垢版 |
2016/01/16(土) 20:11:39.84ID:CPZavs1f
>>478
どうしてゴミだと思ったの?
どの辺が理解出来なかったか他人にうまく説明出来る?
本気でやる気があったらここで聞いてくれてもいいんだよ?
0484デフォルトの名無しさん
垢版 |
2016/01/17(日) 18:49:19.74ID:wzxdIUIG
cvMatが出来る前は普通に使われてたんじゃね
0485476
垢版 |
2016/01/18(月) 00:00:30.53ID:2kOEc2q5
>>479
環境書いていませんでしたがWindowsです。
今はMatなんですね。気がつきませんでした。
あとcvMatでも_CrtSetDbgFlagでフラグ立てておくと
メモリリーク出ますね〜。心臓に悪い。
0487デフォルトの名無しさん
垢版 |
2016/02/07(日) 11:02:53.61ID:AsHZ+KLf
試せば分かる
0488デフォルトの名無しさん
垢版 |
2016/02/07(日) 11:37:29.48ID:2wykn2ry
面倒無用
0490デフォルトの名無しさん
垢版 |
2016/02/19(金) 00:17:23.58ID:VbtCQrHN
VS2015 Win32コンソール
int main(){
 _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
 //_CrtSetBreakAlloc( 335 ); // リークの出力の{}内の数字に適宜変更して有効にすればブレーク
 cv::Mat search_img = cv::imread( "zbase.png", 1 );
}

new してる箇所
〜\opencv\sources\modules\core\src\matrix.cpp(241)
 CV_SINGLETON_LAZY_INIT(MatAllocator, new StdMatAllocator())


それを記憶する箇所
〜\opencv\sources\modules\core\src\matrix.cpp(231)
 g_matAllocator = getStdAllocator();


たったこれだけでリークしちまうのか
後始末してくれるメソッドの類はないっぽいし、
外側から無理矢理クリアするにも適切な方法がわからんし、どうしたもんかなぁコレ
C#やPhythonで使うにしてもアンマネージドな部分のリークに不安が残る
それとも識者は後始末かリークさせないようにアロケータ自前で設定してたりするのん?

おせーてエロい人
0491デフォルトの名無しさん
垢版 |
2016/02/19(金) 00:23:45.79ID:VbtCQrHN
追伸
目的はテンプレートマッチングなんだけど、
メモリリーク箇所全部追跡しようとしたら1回検索するコード実行しただけですんげぇログ吐き出してくれて
思わずハードディスク毎窓の外にブン投げてソースコード破棄したくなった
0492デフォルトの名無しさん
垢版 |
2016/02/22(月) 00:29:18.01ID:9rsZs1m0
何か気持ち悪い文体だけど自分面白いと思ってそう
質問するならそれなりの態度でお願いするべきだと思いますよ
0494デフォルトの名無しさん
垢版 |
2016/03/12(土) 16:26:17.52ID:gc0W1ZBa
質問があります。
cv::Mat depthMat;
depthMat=cv::Mat(depth->height,depth->width,CV_32FC1,depth->data)/4500.0f;
とあり、最後にcv::imshow("depth",depthMat);
で表示されているんですが、いままでCV_8UC1やC3,C4だったのでどうして表示できてるか
分かりません。
中身にどんな値が入っているかもわかりません。
8bitなら0~255で理解できたのですが、32bitだとデータに.atや.dataでアクセスしても変な数字しか出ません。
それに.atと.dataで値が違うのも気になります。
どなたか教えてください。
0495デフォルトの名無しさん
垢版 |
2016/03/13(日) 03:53:28.89ID:bBn3aLjI
depthMat.at<float>(x,y)とかで正しい値とれない?
dataの方は、((float *)depthMat.data)[i]とかしないと正しい値取れないと思うよ。
結局はバイナリデータのアクセスだから、キャストちゃんとしないとまともな数字が取れないと思う
0496デフォルトの名無しさん
垢版 |
2016/03/14(月) 11:04:11.85ID:CN8btJSR
494です。>>495さんの言う通りでした。ありがとうございます。
後、質問なんですがjetson tk1とかに関する質問ってどこの板が適切ですか?
ご存知の方がいらっしゃいましたら教えてください。
0499デフォルトの名無しさん
垢版 |
2016/03/29(火) 09:05:29.86ID:xWRz3Ukj
どっかのへっぽこ大学じゃなくてMITがドヤ顔で作ったライブラリなんですが
宣伝乙脳になるとこういう反応になるのか
0500デフォルトの名無しさん
垢版 |
2016/03/29(火) 14:34:26.54ID:gOix+kaV
有名大学だからって有難がる権威主義でも無いし
良い物ならみんな使ってる
0501デフォルトの名無しさん
垢版 |
2016/03/30(水) 13:41:10.07ID:WoRxWRoM
>>500
君が >498 でないなら釈明する必要はないし、>500 の言い分はごもっともだがその理屈から >498 が出てきたら失笑なことは変わらない。
0505デフォルトの名無しさん
垢版 |
2016/04/21(木) 10:02:38.01ID:0GSXCSV8
二重指数積分公式は最高性能の数値積分法であるにもかかわらず
「白人が作ったものではないから」という人種差別的な偏見によって二十年間世界から無視されていた。
0507デフォルトの名無しさん
垢版 |
2016/05/01(日) 15:40:06.85ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況