【Intel】OpenCV総合スレ 3画素目【画像処理】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/04/19(月) 23:20:56実装分野は
・ユーザーインターフェイス
・物体分離
・セグメンテーションと認識
・顔認識システム
・ジェスチャー認識
・モーショントラッキング
・感情モーション
・モーション理解
・モーションからの構築(SFM)
・モバイルロボティクス
前スレ
【Intel】OpenCV総合スレ【画像処理】2
http://pc12.2ch.net/test/read.cgi/tech/1230511656/l50
関連リンクなどは
>2-10くらい
0153デフォルトの名無しさん
2010/07/14(水) 16:46:26CPUが25%なのはOpenMPかTBBが有効になっていないからだと思う
コンパイルオプションで有効にしてコンパイルしなおすと100%使うようになる
(今のバイナリ版は有効になっていない?)
メモリは最大値だから必要になっていないだけじゃないかな
並列化してスレッドが増えると4倍に増えるかもしれない
0154152
2010/07/14(水) 17:47:59TBBを有効にするために
http://opencv.jp/opencv2-x-tips/install-on-windowswindows32bit-64bit-visual-studio-opencv21
の安定版をインストール(ソースから)の手順に従ってコンパイルしようと思います。
これでできたhaartraining.exeを使用すれば、TBBが有効になっているのですよね?
そして、申し訳ありません。メモリは最大値だから必要になっていないというのは、どういう意味なのでしょうか?
1スレッドで使える最大のメモリ量が255MBくらいだから、それ以上提供しても使えないんだよ という意味でしょうか?
理解が及ばず、お手数をおかけして、ごめんなさい。
0155デフォルトの名無しさん
2010/07/14(水) 18:29:19そもそも附属のhaartraining.exeでマルチコアCPUを100%使い切る事ってできるんでしょうか??
コンパイルオプションの変更等のソース改変無しで、上記が出来ている方おりますか?
0156デフォルトの名無しさん
2010/07/14(水) 19:24:27メモリは32bitOSだったから2GBにしていたけど全部使っていた
TBBは使ったことないので分からない
0157デフォルトの名無しさん
2010/07/14(水) 19:51:13指定する値が事前に計算しておく特徴ベクトルの最大数だからで
全部使いきるかはデータの量によると言いたかった
あと気になったのでhaartrainingのコードを見てみたけど
OpenMPしか対応が入っていないのでOpenMPを有効にしないと並列化できていないと思うわ
0158152
2010/07/14(水) 20:58:56http://opencv-users.1802565.n2.nabble.com/Enable-openmp-missing-td4871327.html
Cmakeするときの、ENABLE_OPENMPのチェックボックスが存在しないので、不思議でしたがこれが原因らしいです。
haartraining.exeなどの為に、旧バージョンのopencvをコンパイルする必要があるのかなと思いました。
0159デフォルトの名無しさん
2010/07/14(水) 21:57:360160デフォルトの名無しさん
2010/07/14(水) 22:10:21appsだから別扱い?
cvhaartraining.cppを見る限りでは
VisualStudioなら言語プロパティのOpenMPサーポートを「はい」にすればいいだけに見えるよ
CMakeはvcprojを生成しているだけでしょ
0161デフォルトの名無しさん
2010/07/14(水) 22:16:140162152
2010/07/16(金) 14:25:19ありがとうございました。おかげ様でちゃんとCPUをフルに使ってhaartrainingができました。
蛇足かも知れませんが。ひょっとしたら同じ問題でつまずいている人が居るかも知れないので、一応記述しておきます。
1.OpenCV2.1をzipでインストールする。exeではなく。
http://opencv.jp/opencv2-x-tips/install-on-windowswindows32bit-64bit-visual-studio-opencv21
の言うとおりに、TBBのパス設定なども行う。CMAKEによるビルドも行う。
OpenCV2.1ではCmake時でのEnable_OPENMPというオプションが存在しないが、それで良いので安心する事。
2. >>160さんの言うように、VisualStudioでOpenMPサポートを「はい」に設定する。
http://note.sonots.com/SciSoftware/haartraining.html の How to enable OpenMPを参考にして、設定を行ってReleaseビルドを行う。
trainCascadeも多分やろうと思えばOpenMpを使う設定にできると思う。
3.haartrainingなどのリビルドが完了したら、Cmakeでビルドしたものを展開するフォルダ(buidとする)の中にあるbinフォルダのRelease
にあるhaartraining.exeを使う。更新日時がリビルドした日になってれば、多分リビルドが上手くいってます。
冗長なところもありますが、私はこういう手順でできました。
0163デフォルトの名無しさん
2010/07/18(日) 10:16:35↑のサイトのプログラムを改造して
三つ目の新しいIplImage(二つ目のdst_imgより幻滅した)を作成したいの
ですが、どのようにいじれば良いでしょうか?
0164デフォルトの名無しさん
2010/07/18(日) 17:48:51新しくIplImageの変数、現在のdst_imgより減色した、を作成したいのだが、どこを弄れば良いか
クラスタリングが分かっていれば簡単だが、クラスタ数を変更してやれば好きな色数に変えることができる
MAX_CLUSTERSを弄ってみよう
例えば、
#define MAX_CLUSTERS 16
で16色に減色した画像が得られるだろう
0165デフォルトの名無しさん
2010/07/18(日) 20:31:36即レスありがとうございます。
164さんが仰った感じにしたいのですが、どこで#define MAX_CLUSTERS 16
を書けば良いでしょうか?
0166デフォルトの名無しさん
2010/07/19(月) 20:07:310167デフォルトの名無しさん
2010/07/20(火) 01:20:570168デフォルトの名無しさん
2010/07/22(木) 11:58:18cvCaptureFromFileで8Bitの動画ファイルを読み込んで
cvQueryFrameで画像を取り出すと24Bitになってしまいます。
IPL_DEPTH_8Uのイメージを別に用意して、毎回cvCvtColorで取り出した画像を変換してるけど、
直接8bitの画像として読み込む方法ってありますでしょうか?
(動画の読み込みで何も指定していないので、読み込んだ時点で24Bitに変換している気もしますが・・・)
0169デフォルトの名無しさん
2010/07/27(火) 20:10:28cvcap_vfw.cppいじればできた気がする
0170デフォルトの名無しさん
2010/07/27(火) 21:15:09結局変換しているんじゃないの
0171デフォルトの名無しさん
2010/07/29(木) 15:17:11CPUが25%しか、BACK_GROUNDPROCESSINGの時に使われないのですが(trainingの時はCPUをフルに使う)これは仕方のない事なのでしょうか?
0172デフォルトの名無しさん
2010/08/07(土) 22:55:03OpenCVは見た感じ画像に対して何かするためのSDKに思えるのですが。
0173デフォルトの名無しさん
2010/08/07(土) 23:40:410174デフォルトの名無しさん
2010/08/09(月) 00:26:26肌色から手だけを抽出することは出来たのですが、
半袖でも出来るよう、肌色の色を消したいのですがいい方法ありませんでしょうか?
0175デフォルトの名無しさん
2010/08/09(月) 02:01:430176デフォルトの名無しさん
2010/08/09(月) 02:16:540177デフォルトの名無しさん
2010/08/09(月) 02:30:01すみません 腕の部分を消して手だけ抽出したい ということです。
>>176 ありがとうございます。 やってみます。
0178デフォルトの名無しさん
2010/08/09(月) 04:39:43もうctypes-opencvでいいかと思うんだけど
0179171
2010/08/11(水) 01:18:15確か前にもこういった質問があったので、一応必要かなと思って。
結論から言えば、並列化できません。
cvhaartraining.cppでは、スレッドをパラレルにしてBACK_GROUNDPROCESSING TIMEの処理を行っていません。
私はこれを手動でパラレルに設定しましたが、学習がメチャクチャになってしまいマトモなものができなくなります。
ですから、BACK_GROUNDPROCESSING TIMEを縮めることは諦めてください…。残念ですが。
0180デフォルトの名無しさん
2010/08/11(水) 19:57:01そもそも分割しやすい問題とそうでない問題があってだな
0181デフォルトの名無しさん
2010/08/16(月) 14:25:35Discrite AdaBoostとGentle AdaBoostの違いについて詳しく乗ってる
本やHPなどありませんでしょうか?
探してもなかなか見つからなくて・・
0182デフォルトの名無しさん
2010/08/18(水) 07:09:05opencv ライブラリを用いて作成した実行ファイルを配布したいので、配布先で
Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86) もインストールしてもらったのですが
「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることによって・・・・」
がでます、どうしたらいいでしょうか?
0183デフォルトの名無しさん
2010/08/18(水) 13:16:08DL&インスコしたOpenCV2.1がVS2008でビルドされたものなのが原因で
CVをCMakeでビルドし直して解決したが
2008の再配布パッケージを入れてもよかったのかもしれない
0184デフォルトの名無しさん
2010/08/18(水) 21:07:23ランタイムライブラリをマルチスレッドDLLからマルチスレッドにすると幸せになれるかも?
0185デフォルトの名無しさん
2010/08/27(金) 23:09:39http://opencv.jp/sample/optical_flow.htmlのオプティカルフロー2 cvCalcOpticalFlowBMを実行させたいのですが、実行できません。
ビルドはできるのですが、デバックを開始するとcv::Exceptionと出てきてしまいます。
どのようにすれば動くようになるかよければアドバイスをください。
環境は Windows Vista SP2,Visual C++ 2008 Express Editionです。
0186デフォルトの名無しさん
2010/08/28(土) 19:11:48dlopen(/opt/local/share/macports/Tcl/macports1.0/MacPorts.dylib, 10): no suitable image found. Did find: /opt/local/share/macports/Tcl/macports1.0/MacPorts.dylib: mach-o, but wrong architecture while executing
"load /opt/local/share/macports/Tcl/macports1.0/MacPorts.dylib" ("package ifneeded macports 1.0" script)
invoked from within "package require macports" file "/opt/local/bin/port" line 39)
と出てくるのですが、これはインストールが成功しているということなのでしょうか?
すみませんが、回答よろしくお願い致します。
0187デフォルトの名無しさん
2010/08/31(火) 11:51:28動画ファイルから全体の再生時間を取得したいのですが、うまくいきません。
cvSetCapturePropertyにてCV_CAP_PROP_POS_AVI_RATIOを1.0にすれば良いと思ったのですが、
その後cvGetCapturePropertyにてCV_CAP_PROP_POS_MSECの値を取得しても0が返ってきます。
現在はcvQueryFrameで全ての動画を読み込んでから時間を取得しているのですが、もっと効率の良い方法がありましたら教えてください。
よろしくお願いします。
0188187
2010/08/31(火) 16:36:10CV_CAP_PROP_FRAME_COUNTでファイルのフレーム数を拾って、フレームレートを掛ければ良かったのですね。
0189デフォルトの名無しさん
2010/09/13(月) 17:03:49引数のconst CvPoint2D32f*をpythonでどう渡せばいいか分からないです。
0190デフォルトの名無しさん
2010/09/14(火) 14:22:29なら簡単
ctypesの使い方そのまま適用するだけだし
0191デフォルトの名無しさん
2010/09/22(水) 14:56:21オプティカルフロー(cvCalcOpticalFlowBM)にエラーが出るようになってしまいました。
http://edotprintstacktrace.blogspot.com/2009/10/cvcalcopticalflowbm.html
ココ見て直したけど、サンプルのペンギンじゃフローが出ません。
解決方法分かる方いたらお願いします。
0192デフォルトの名無しさん
2010/09/23(木) 12:09:07時間がかかり、かつ全く使えない件について
0193デフォルトの名無しさん
2010/09/23(木) 20:42:130194デフォルトの名無しさん
2010/09/26(日) 18:27:180195デフォルトの名無しさん
2010/09/26(日) 19:07:08そもそもそれを比較することが間違ってる
opencvは画像処理のライブラリ
0196デフォルトの名無しさん
2010/09/26(日) 22:23:33たかし!
0197デフォルトの名無しさん
2010/09/27(月) 01:42:57face.com
ただface.comのAPIは回数制限がある
0198デフォルトの名無しさん
2010/09/27(月) 19:25:30どこに書いてる?
0199デフォルトの名無しさん
2010/09/28(火) 13:31:42ググレクソガ
http://developers.face.com/docs/terms/rate-limiting/
0200デフォルトの名無しさん
2010/09/29(水) 21:52:50これインストールしてVC++2005でちゃんと動くの?
2008持ってないが
0201デフォルトの名無しさん
2010/09/30(木) 01:28:41VS2005にパッチ入れれば問題ないけど。
0202デフォルトの名無しさん
2010/10/01(金) 11:08:282008ee入れろ
今でもダウンロードできるよ
0203デフォルトの名無しさん
2010/10/01(金) 21:58:15captureFromAviでmpgファイルを開きたいのですが、返ってくるCvCapture*の中身が
空っぽでqueryframeを行っても画像が取れません。
多分コーデックの関係でファイルが開けていないと思うのですが、普通にメディア
プレーヤーでは中身が見れ、また未圧縮Aviファイルは当環境のOpenCVで開く事が出来ます。
どの様にしたら自分の環境でmpgが読み込めるのか、もし分かる方が居たら
教えていただけませんか・・・?
よろしくお願いします。
環境:64bit-Win7 VS2010 OpenCV2.1(x64用コンパイル)
0204デフォルトの名無しさん
2010/10/01(金) 23:14:480205デフォルトの名無しさん
2010/10/02(土) 11:15:12VS2005だと何もかもうまくいかん
zipのほうを解凍してCMake利用してソリューション作成でビルドするとエラーでるし
0206デフォルトの名無しさん
2010/10/02(土) 13:22:47cvCreateFileCaptureじゃだめなのかね
0207デフォルトの名無しさん
2010/10/02(土) 13:34:080208デフォルトの名無しさん
2010/10/02(土) 22:13:17ffmpegあればmpgも読み込めそうだけど
0209208
2010/10/02(土) 22:16:390210203
2010/10/06(水) 09:52:293rdpartyの中にもffmpegが見当たらないので、なんかCmakeの時点で何かが足りてないと
思うんですが、如何せんそれっぽい項目がCmakeの段階で見当たらないんですよね。
もうちょっと色々弄ってみたいと思います。
ありがとうございましたm(__)m
0211デフォルトの名無しさん
2010/10/06(水) 17:11:58そっち(ffmpegのインターフェース)で読み込むようになっていたが。
0212デフォルトの名無しさん
2010/10/15(金) 19:33:02interfacesの中にない?
0213デフォルトの名無しさん
2010/10/16(土) 12:04:59B = img->imageData[img->widthStep * y + x * 3]; // B
G= img->imageData[img->widthStep * y + x * 3 + 1]; // G
R = img->imageData[img->widthStep * y + x * 3 + 2]; // R
HSVの取得は
cvCvtColor(img, img2, CV_BGR2HSV);でRGB→HSV変換してから、
RGBと同じように下のような感じでできますか?
H = img2->imageData[img2->widthStep * y + x * 3]; // H
S= img2->imageData[img2->widthStep * y + x * 3 + 1]; // S
V = img2->imageData[img2->widthStep * y + x * 3 + 2]; // V
0214デフォルトの名無しさん
2010/10/16(土) 13:12:14さっさとMat一本に統一して欲しいもんだ
そもそも関数によって引数がPointだったりMatだったりするのがめんどうだ
0215デフォルトの名無しさん
2010/10/17(日) 01:30:13できると思うけど、できなかったの
0216デフォルトの名無しさん
2010/10/17(日) 02:25:05Vecはマルチチャンネルとかを表現するのが主目的なので
普通にベクトル使いたいんならMatでいい。
というか、面倒な局面がわからんのだが
0217デフォルトの名無しさん
2010/10/17(日) 13:14:44Matは静的配列だしVectorは動的配列Pointに至ってはただの点
0218デフォルトの名無しさん
2010/10/17(日) 13:17:50これで面倒じゃないわけがない
0219デフォルトの名無しさん
2010/10/17(日) 13:31:44それintとdouble混在しててめんどいからdoubleに統一しろって言ってるみたいなもんだぞw
0220デフォルトの名無しさん
2010/10/17(日) 14:19:20Mat M = Mat(vec).reshape(1);
これが面倒?
0221デフォルトの名無しさん
2010/10/17(日) 14:24:50その指摘は全然的外れだろ
Pointは2xNのMatで完全に置き換えることが出来るんだから
>>220
プログラム書くたびにめんどうだと思う
特徴点をPoint出力するなら、特徴点を入力とするF行列もPoint入力とするだろ常識的に
0222デフォルトの名無しさん
2010/10/17(日) 17:50:14intもdoubleで置き換えられますが
0223デフォルトの名無しさん
2010/10/17(日) 18:34:34キャリブレーションは入力がPointでF行列は入力がMatみたいに統一されてないのを不便だと思わない?
0224デフォルトの名無しさん
2010/10/22(金) 05:09:49まあ文化の違いだよ。
0225デフォルトの名無しさん
2010/10/23(土) 16:42:03すみません、質問させてください.
ConvexHull2した凸包の内側だけを同一色で塗りつぶしたいのですが、
findContoursで取得した輪郭を単純にfillConvexPolyしても上手く塗りつぶせないんです。
何か間違っているでしょうか?
0226デフォルトの名無しさん
2010/10/23(土) 20:33:03cocoa アプリケーション上で動かすことはできますか?
0227デフォルトの名無しさん
2010/10/25(月) 21:00:14Error: Target org.macports.configure returned:
********************
cmake requires the Java for Mac OS X Developer Package from Apple.
Please download and install this package from http://developer.apple.com/.
と出るのですが何をインストールすればいいのでしょうか?
0228デフォルトの名無しさん
2010/10/28(木) 16:03:30Visual C++2008 expressionにOpenCV2.0を入れてOpenCVをつかってみようとしているんだけど, 入門書のサンプルプログラムにのっているIp1Imageっていう関数がヘッダファイルに定義されてなくて困ってます.
もしかして, この関数ってなくなったりしたの?
OpenCVのバージョンが違うからそこからわかんない.
0229デフォルトの名無しさん
2010/10/28(木) 16:14:12IplImageでした
ごめんなさい
0230デフォルトの名無しさん
2010/10/30(土) 02:05:14教師画像とチューニング次第でかなり改善する
0231デフォルトの名無しさん
2010/10/30(土) 03:32:56cmakeと書いてあるだろ
>>228
あるよ
highgui.hをincludeしてる?
0232デフォルトの名無しさん
2010/10/30(土) 03:34:550233デフォルトの名無しさん
2010/11/02(火) 04:00:50IplImage、普通にバージョン2.1でも2.0でも使える。
1.0用のサンプルソースがそのまま2.1でも使えるし。
0234デフォルトの名無しさん
2010/11/02(火) 07:12:530235デフォルトの名無しさん
2010/11/02(火) 14:03:49どうしたらいいんだ
Compiler did not align stack variables. Libavcodec has been miscompiled
and may be very slow or crash. This is not a bug in libavcodec,
but in the compiler. You may try recompiling using gcc >= 4.2.
Do not report crashes to FFmpeg developers.
0236デフォルトの名無しさん
2010/11/02(火) 15:30:05俺はVS使っててこれが出るんだがw
0237デフォルトの名無しさん
2010/11/03(水) 09:54:130238デフォルトの名無しさん
2010/11/03(水) 14:28:11windows版の2.1から出るようになったのに海外サイト見ても誰も話題にしてないから不思議だったんだよな
自前でコンパイルしても解決しないし
0239sage
2010/11/04(木) 14:39:36自分もCV_FOURCC('M','J','P','G')にすると出る。
でその後cvWriteFrameしようとすると落ちる。
かれこれ1カ月くらいこれで悩んでる・・・
0240デフォルトの名無しさん
2010/11/04(木) 15:37:50<_>3 0 18 4 -1.</_>
<_>3 2 18 2 2.</_>
とか
<_>8 18 14 4 -1.</_>
<_>15 18 7 2 2.</_>
<_>8 20 7 2 2.</_>
の意味がよくわかりません・・・
上側は恐らくx、y、x、yと座標を指定していて最後の-1と2が白と黒の領域を表しているというのは何と無くつかめるのですが、
下がさっぱりです・・・回転させた特徴・・・?
どなたかわかる方いたら参考サイトでも何でも良いので教えてもらえないでしょうか?
0241デフォルトの名無しさん
2010/11/04(木) 19:41:482.0aはmotion jpegで書き出し出来る
なぜか2.1では落ちるようになった
0242デフォルトの名無しさん
2010/11/04(木) 21:51:51動いたーーー!!!!
と思ったら絵が取れてない・・・
今度はcvDecodeImageが悪さしてるっぽいなぁ
それでも一歩前進したわ。ありがとう。
0243デフォルトの名無しさん
2010/11/05(金) 23:13:07cvWaitKeyで1フレームあたりの時間(1000/fps)から、
前回キャプチャからの経過時間を引いた値をwaitしているのですが
録画時間<再生時間になったりその逆になったりします。。
うまい設定の方法ありませんか?
0244デフォルトの名無しさん
2010/11/10(水) 08:10:54俺もいろんなコーデック入れて試したけど、上手くいかなかった
仕方ないから圧縮無しで動かしてる
0245デフォルトの名無しさん
2010/11/10(水) 08:12:581000fps=1sと思って無いよな?
てか秒間1000毎のカメラってどんなんだ?
0246デフォルトの名無しさん
2010/11/10(水) 12:41:210247243
2010/11/10(水) 12:58:071000msec/設定フレームレートのつもりで書きました。
フレーム間隔を計算するためです。
cvWaitKeyって実際10ミリ秒位の精度じゃないですか?
0248デフォルトの名無しさん
2010/11/10(水) 22:58:07直前のフレームからの経過時間だけでタイミングを取るという
阿呆なことをしてるのですが全体の時間が正しくなりません。
どのようにするのが正しいのでしょうか?
0249243
2010/11/11(木) 07:41:46正しいやり方教えてもらえませんか?
0250デフォルトの名無しさん
2010/11/11(木) 11:10:440251デフォルトの名無しさん
2010/11/14(日) 21:41:39録画中、timeGetTime()関数とかで1フレーム毎の録画時間(現在時刻)を記録しておく。
再生時にcvWaitKey(IntervalTime[frame])とかで録画時と同じタイミングで各フレーム
を表示していけばいいんじゃないだろうか。
0252デフォルトの名無しさん
2010/11/14(日) 21:59:43一応、この手の処理では基本中の基本なんだが
× 前のフレームからの経過時間(相対時間)でタイミングを取る
○ 基準時刻からの経過時間(絶対時間)でタイミングを取る
■ このスレッドは過去ログ倉庫に格納されています