トップページ⇒tech
982コメント368KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/04/19(月) 23:20:56
OpenCVとはインテルが開発・公開しているオープンソースのコンピュータビジョン向けのLinux/Windows向けC/C++ライブラリです。

実装分野は
・ユーザーインターフェイス
・物体分離
・セグメンテーションと認識
・顔認識システム
・ジェスチャー認識
・モーショントラッキング
・感情モーション
・モーション理解
・モーションからの構築(SFM)
・モバイルロボティクス
前スレ
【Intel】OpenCV総合スレ【画像処理】2
http://pc12.2ch.net/test/read.cgi/tech/1230511656/l50

関連リンクなどは
>2-10くらい
0153デフォルトの名無しさん2010/07/14(水) 16:46:26
>>152
CPUが25%なのはOpenMPかTBBが有効になっていないからだと思う
コンパイルオプションで有効にしてコンパイルしなおすと100%使うようになる
(今のバイナリ版は有効になっていない?)

メモリは最大値だから必要になっていないだけじゃないかな
並列化してスレッドが増えると4倍に増えるかもしれない
01541522010/07/14(水) 17:47:59
>>153 さん ありがとうございます。

TBBを有効にするために
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
私の方でもTBB ONにしても25%しか使わず困っています・・・

そもそも附属のhaartraining.exeでマルチコアCPUを100%使い切る事ってできるんでしょうか??
コンパイルオプションの変更等のソース改変無しで、上記が出来ている方おりますか?
0156デフォルトの名無しさん2010/07/14(水) 19:24:27
OpenCV 1.1のころOpenMPでやっていたときはQuadCoreでCPU100%(4コア)使っていた
メモリは32bitOSだったから2GBにしていたけど全部使っていた
TBBは使ったことないので分からない
0157デフォルトの名無しさん2010/07/14(水) 19:51:13
>>154
指定する値が事前に計算しておく特徴ベクトルの最大数だからで
全部使いきるかはデータの量によると言いたかった

あと気になったのでhaartrainingのコードを見てみたけど
OpenMPしか対応が入っていないのでOpenMPを有効にしないと並列化できていないと思うわ
01581522010/07/14(水) 20:58:56
なんか、OpenCVは2.1からOpenMPをTBBに移行しているらしいので、OpenMPを利用したCMakeができないらしいですね。
http://opencv-users.1802565.n2.nabble.com/Enable-openmp-missing-td4871327.html
Cmakeするときの、ENABLE_OPENMPのチェックボックスが存在しないので、不思議でしたがこれが原因らしいです。

haartraining.exeなどの為に、旧バージョンのopencvをコンパイルする必要があるのかなと思いました。
0159デフォルトの名無しさん2010/07/14(水) 21:57:36
てか普通にVisualStudioのOPENMPを有効にしたら駄目なの?
0160デフォルトの名無しさん2010/07/14(水) 22:10:21
もう使わないといいながらOpenMPが残ってるしhaartrainingはメンテされていないのかな
appsだから別扱い?

cvhaartraining.cppを見る限りでは
VisualStudioなら言語プロパティのOpenMPサーポートを「はい」にすればいいだけに見えるよ
CMakeはvcprojを生成しているだけでしょ
0161デフォルトの名無しさん2010/07/14(水) 22:16:14
たぶんOpenCVはtraincascadeに移行してTBBいれるつもりなんだろな
01621522010/07/16(金) 14:25:19
>>159,160
ありがとうございました。おかげ様でちゃんと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
ttp://opencv.jp/sample/misc.html#color-sub

↑のサイトのプログラムを改造して
三つ目の新しい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
即レスありがとうございます。
164さんが仰った感じにしたいのですが、どこで#define MAX_CLUSTERS 16
を書けば良いでしょうか?
0166デフォルトの名無しさん2010/07/19(月) 20:07:31
複素数行列の逆行列は求められないんですか><
0167デフォルトの名無しさん2010/07/20(火) 01:20:57
ここがC言語初心者スレだ
0168デフォルトの名無しさん2010/07/22(木) 11:58:18
グレースケールの動画から画像を取り出しているのですが、
cvCaptureFromFileで8Bitの動画ファイルを読み込んで
cvQueryFrameで画像を取り出すと24Bitになってしまいます。

IPL_DEPTH_8Uのイメージを別に用意して、毎回cvCvtColorで取り出した画像を変換してるけど、
直接8bitの画像として読み込む方法ってありますでしょうか?
(動画の読み込みで何も指定していないので、読み込んだ時点で24Bitに変換している気もしますが・・・)
0169デフォルトの名無しさん2010/07/27(火) 20:10:28
>>168
cvcap_vfw.cppいじればできた気がする
0170デフォルトの名無しさん2010/07/27(火) 21:15:09
まずグレースケールの動画形式があるのか
結局変換しているんじゃないの
0171デフォルトの名無しさん2010/07/29(木) 15:17:11
haartraingin.exeで、後半になるとBACK_GROUNDPROCESSING TIME がOPEN_MPをONにしても物凄く長くて困っています。
CPUが25%しか、BACK_GROUNDPROCESSINGの時に使われないのですが(trainingの時はCPUをフルに使う)これは仕方のない事なのでしょうか?
0172デフォルトの名無しさん2010/08/07(土) 22:55:03
OpenCVってPhotoshopのブラシ処理みたいなことはできるのでしょうか?
OpenCVは見た感じ画像に対して何かするためのSDKに思えるのですが。
0173デフォルトの名無しさん2010/08/07(土) 23:40:41
コンピュータビジョンのライブラリ
0174デフォルトの名無しさん2010/08/09(月) 00:26:26
OpenCVを使ってグーとパーの判別をしようとしてるのですが、、、
肌色から手だけを抽出することは出来たのですが、
半袖でも出来るよう、肌色の色を消したいのですがいい方法ありませんでしょうか?
0175デフォルトの名無しさん2010/08/09(月) 02:01:43
ちょっと意味が分からない
0176デフォルトの名無しさん2010/08/09(月) 02:16:54
手の先検出してそこ中心に判別領域指定とかは?
0177デフォルトの名無しさん2010/08/09(月) 02:30:01
174です
すみません 腕の部分を消して手だけ抽出したい ということです。

>>176 ありがとうございます。 やってみます。
0178デフォルトの名無しさん2010/08/09(月) 04:39:43
pythonインターフェイスはいつ安定するんだ
もうctypes-opencvでいいかと思うんだけど
01791712010/08/11(水) 01:18:15
haartraining.exeで、BACK_GROUNDPROCESSING TIME が OPEN_MPをONにしても長い問題で、自己解決したので報告します。
確か前にもこういった質問があったので、一応必要かなと思って。

結論から言えば、並列化できません。
cvhaartraining.cppでは、スレッドをパラレルにしてBACK_GROUNDPROCESSING TIMEの処理を行っていません。
私はこれを手動でパラレルに設定しましたが、学習がメチャクチャになってしまいマトモなものができなくなります。
ですから、BACK_GROUNDPROCESSING TIMEを縮めることは諦めてください…。残念ですが。
0180デフォルトの名無しさん2010/08/11(水) 19:57:01
OpenMPはローカル変数が共有されるからよく考えて並列化しないとメチャクチャになる
そもそも分割しやすい問題とそうでない問題があってだな
0181デフォルトの名無しさん2010/08/16(月) 14:25:35
直接opencvの質問ではなく恐縮なのですが
Discrite AdaBoostとGentle AdaBoostの違いについて詳しく乗ってる
本やHPなどありませんでしょうか?
探してもなかなか見つからなくて・・
0182デフォルトの名無しさん2010/08/18(水) 07:09:05
環境はWindows XP SP3、 VS2005 PRO SP1 です、
opencv ライブラリを用いて作成した実行ファイルを配布したいので、配布先で
Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86) もインストールしてもらったのですが
「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることによって・・・・」
がでます、どうしたらいいでしょうか?
0183デフォルトの名無しさん2010/08/18(水) 13:16:08
お盆前に同様の状況を経験したがそのときは
DL&インスコしたOpenCV2.1がVS2008でビルドされたものなのが原因で
CVをCMakeでビルドし直して解決したが
2008の再配布パッケージを入れてもよかったのかもしれない
0184デフォルトの名無しさん2010/08/18(水) 21:07:23
>>182
ランタイムライブラリをマルチスレッドDLLからマルチスレッドにすると幸せになれるかも?
0185デフォルトの名無しさん2010/08/27(金) 23:09:39
質問です
http://opencv.jp/sample/optical_flow.htmlのオプティカルフロー2 cvCalcOpticalFlowBMを実行させたいのですが、実行できません。
ビルドはできるのですが、デバックを開始するとcv::Exceptionと出てきてしまいます。
どのようにすれば動くようになるかよければアドバイスをください。
環境は Windows Vista SP2,Visual C++ 2008 Express Editionです。
0186デフォルトの名無しさん2010/08/28(土) 19:11:48
macへのインストールなのですが、cd opencvで実行すると

dlopen(/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で全ての動画を読み込んでから時間を取得しているのですが、もっと効率の良い方法がありましたら教えてください。
よろしくお願いします。
01881872010/08/31(火) 16:36:10
自己解決しました。
CV_CAP_PROP_FRAME_COUNTでファイルのフレーム数を拾って、フレームレートを掛ければ良かったのですね。
0189デフォルトの名無しさん2010/09/13(月) 17:03:49
pythonでcvGetAffineTransformやcvGetPerspectiveTransformの呼び出し方分かる人いますか?
引数のconst CvPoint2D32f*をpythonでどう渡せばいいか分からないです。
0190デフォルトの名無しさん2010/09/14(火) 14:22:29
ctypes-opencv
なら簡単
ctypesの使い方そのまま適用するだけだし
0191デフォルトの名無しさん2010/09/22(水) 14:56:21
opencvを1.?から2.1に変更したら
オプティカルフロー(cvCalcOpticalFlowBM)にエラーが出るようになってしまいました。
http://edotprintstacktrace.blogspot.com/2009/10/cvcalcopticalflowbm.html
ココ見て直したけど、サンプルのペンギンじゃフローが出ません。

解決方法分かる方いたらお願いします。
0192デフォルトの名無しさん2010/09/23(木) 12:09:07
haar_trainingが学習しても、
時間がかかり、かつ全く使えない件について
0193デフォルトの名無しさん2010/09/23(木) 20:42:13
なんでもできる魔法のツールではないからな
0194デフォルトの名無しさん2010/09/26(日) 18:27:18
opencv と face.comのAPI とだったらどっちが認識能力高い?
0195デフォルトの名無しさん2010/09/26(日) 19:07:08
>>194
そもそもそれを比較することが間違ってる
opencvは画像処理のライブラリ
0196デフォルトの名無しさん2010/09/26(日) 22:23:33
ちゃんと区別しなさい!
たかし!
0197デフォルトの名無しさん2010/09/27(月) 01:42:57
>>194
face.com
ただface.comのAPIは回数制限がある
0198デフォルトの名無しさん2010/09/27(月) 19:25:30
>>197
どこに書いてる?
0199デフォルトの名無しさん2010/09/28(火) 13:31:42
>>198
ググレクソガ
http://developers.face.com/docs/terms/rate-limiting/
0200デフォルトの名無しさん2010/09/29(水) 21:52:50
OpenCV-2.1.0-win32-vs2008.exe
これインストールしてVC++2005でちゃんと動くの?
2008持ってないが
0201デフォルトの名無しさん2010/09/30(木) 01:28:41
VS2005だと、VS2008以降で作られたライブラリにリンクできない問題がある。
VS2005にパッチ入れれば問題ないけど。
0202デフォルトの名無しさん2010/10/01(金) 11:08:28
>>200
2008ee入れろ
今でもダウンロードできるよ
0203デフォルトの名無しさん2010/10/01(金) 21:58:15
質問です。
captureFromAviでmpgファイルを開きたいのですが、返ってくるCvCapture*の中身が
空っぽでqueryframeを行っても画像が取れません。

多分コーデックの関係でファイルが開けていないと思うのですが、普通にメディア
プレーヤーでは中身が見れ、また未圧縮Aviファイルは当環境のOpenCVで開く事が出来ます。

どの様にしたら自分の環境でmpgが読み込めるのか、もし分かる方が居たら
教えていただけませんか・・・?

よろしくお願いします。

環境:64bit-Win7 VS2010 OpenCV2.1(x64用コンパイル)
0204デフォルトの名無しさん2010/10/01(金) 23:14:48
captureFromAviなんだからAVIファイルを入れろよ
0205デフォルトの名無しさん2010/10/02(土) 11:15:12
>>200
VS2005だと何もかもうまくいかん
zipのほうを解凍してCMake利用してソリューション作成でビルドするとエラーでるし
0206デフォルトの名無しさん2010/10/02(土) 13:22:47
>>203
cvCreateFileCaptureじゃだめなのかね
0207デフォルトの名無しさん2010/10/02(土) 13:34:08
って同じ処理か・・・206は無しで
0208デフォルトの名無しさん2010/10/02(土) 22:13:17
そういえば昔はffmpegあったのにVer上がって消えた?
ffmpegあればmpgも読み込めそうだけど
02092082010/10/02(土) 22:16:39
普通に3rdpartyの中にあったわスマソ
02102032010/10/06(水) 09:52:29
そうなんですよ、ffmpegが見当たらなくて・・・
3rdpartyの中にもffmpegが見当たらないので、なんかCmakeの時点で何かが足りてないと
思うんですが、如何せんそれっぽい項目がCmakeの段階で見当たらないんですよね。

もうちょっと色々弄ってみたいと思います。
ありがとうございましたm(__)m

0211デフォルトの名無しさん2010/10/06(水) 17:11:58
昔はffopencv110.dllというファイルがパスにある場合に
そっち(ffmpegのインターフェース)で読み込むようになっていたが。
0212デフォルトの名無しさん2010/10/15(金) 19:33:02
>>210
interfacesの中にない?
0213デフォルトの名無しさん2010/10/16(土) 12:04:59
これはRGB取得はこんな感じだけど、(xとyは指定ピクセル)
B = 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とVectorとPointを混在させる意味がわからんなぁ
さっさとMat一本に統一して欲しいもんだ
そもそも関数によって引数がPointだったりMatだったりするのがめんどうだ
0215デフォルトの名無しさん2010/10/17(日) 01:30:13
>>213
できると思うけど、できなかったの
0216デフォルトの名無しさん2010/10/17(日) 02:25:05
Pointは画像上の点を表現するもので、
Vecはマルチチャンネルとかを表現するのが主目的なので
普通にベクトル使いたいんならMatでいい。

というか、面倒な局面がわからんのだが
0217デフォルトの名無しさん2010/10/17(日) 13:14:44
そもそもMatとVectorとPointは全然違うだろ
Matは静的配列だしVectorは動的配列Pointに至ってはただの点
0218デフォルトの名無しさん2010/10/17(日) 13:17:50
特徴点検出の出力はPoint、F行列や射影変換行列の入力はMat
これで面倒じゃないわけがない
0219デフォルトの名無しさん2010/10/17(日) 13:31:44
>>218
それintとdouble混在しててめんどいからdoubleに統一しろって言ってるみたいなもんだぞw
0220デフォルトの名無しさん2010/10/17(日) 14:19:20
vector<Point3f> vec;
Mat M = Mat(vec).reshape(1);

これが面倒?
0221デフォルトの名無しさん2010/10/17(日) 14:24:50
>>219
その指摘は全然的外れだろ
Pointは2xNのMatで完全に置き換えることが出来るんだから

>>220
プログラム書くたびにめんどうだと思う
特徴点をPoint出力するなら、特徴点を入力とするF行列もPoint入力とするだろ常識的に
0222デフォルトの名無しさん2010/10/17(日) 17:50:14
>>221
intもdoubleで置き換えられますが
0223デフォルトの名無しさん2010/10/17(日) 18:34:34
intとdoubleはデータ型なんだからデータのコンテナであるPointとMatを比較すんな
キャリブレーションは入力が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:03

cocoa アプリケーション上で動かすことはできますか?
0227デフォルトの名無しさん2010/10/25(月) 21:00:14
Macにopencv入れようとしてるんですが、うまくいきません。
Error: 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:30
質問ですが,
Visual C++2008 expressionにOpenCV2.0を入れてOpenCVをつかってみようとしているんだけど, 入門書のサンプルプログラムにのっているIp1Imageっていう関数がヘッダファイルに定義されてなくて困ってます.
もしかして, この関数ってなくなったりしたの?
OpenCVのバージョンが違うからそこからわかんない.
0229デフォルトの名無しさん2010/10/28(木) 16:14:12
>>228ですけど
IplImageでした
ごめんなさい
0230デフォルトの名無しさん2010/10/30(土) 02:05:14
haar_trainingの学習法にはコツがあってだな…
教師画像とチューニング次第でかなり改善する
0231デフォルトの名無しさん2010/10/30(土) 03:32:56
>>227
cmakeと書いてあるだろ
>>228
あるよ
highgui.hをincludeしてる?
0232デフォルトの名無しさん2010/10/30(土) 03:34:55
まちがいましたjavaです。
0233デフォルトの名無しさん2010/11/02(火) 04:00:50
>>228
IplImage、普通にバージョン2.1でも2.0でも使える。
1.0用のサンプルソースがそのまま2.1でも使えるし。
0234デフォルトの名無しさん2010/11/02(火) 07:12:53
IplImageをIp1Imageって書いて>>229で解決したって事じゃないのか
0235デフォルトの名無しさん2010/11/02(火) 14:03:49
cvCreateVideoWriter関数使ったら、こんなメッセージが・・・
どうしたらいいんだ

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
>>235
俺はVS使っててこれが出るんだがw
0237デフォルトの名無しさん2010/11/03(水) 09:54:13
ffmpegはmingwのバイナリ版だろ
0238デフォルトの名無しさん2010/11/03(水) 14:28:11
>>235
windows版の2.1から出るようになったのに海外サイト見ても誰も話題にしてないから不思議だったんだよな
自前でコンパイルしても解決しないし
0239sage2010/11/04(木) 14:39:36
>>235
自分もCV_FOURCC('M','J','P','G')にすると出る。
でその後cvWriteFrameしようとすると落ちる。


かれこれ1カ月くらいこれで悩んでる・・・
0240デフォルトの名無しさん2010/11/04(木) 15:37:50
haartrainingで生成されるxmlについてどんな特徴使ってるのか見てるのですけれども
<_>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:48
>>239
2.0aはmotion jpegで書き出し出来る
なぜか2.1では落ちるようになった
0242デフォルトの名無しさん2010/11/04(木) 21:51:51
>>241
動いたーーー!!!!
と思ったら絵が取れてない・・・
今度はcvDecodeImageが悪さしてるっぽいなぁ

それでも一歩前進したわ。ありがとう。
0243デフォルトの名無しさん2010/11/05(金) 23:13:07
カメラからの録画についてですが、なかなか録画時間=再生時間になりません。。
cvWaitKeyで1フレームあたりの時間(1000/fps)から、
前回キャプチャからの経過時間を引いた値をwaitしているのですが
録画時間<再生時間になったりその逆になったりします。。
うまい設定の方法ありませんか?
0244デフォルトの名無しさん2010/11/10(水) 08:10:54
>>235
俺もいろんなコーデック入れて試したけど、上手くいかなかった
仕方ないから圧縮無しで動かしてる
0245デフォルトの名無しさん2010/11/10(水) 08:12:58
>>243
1000fps=1sと思って無いよな?
てか秒間1000毎のカメラってどんなんだ?
0246デフォルトの名無しさん2010/11/10(水) 12:41:21
fps は f/s。1000/fpsだと1000s/fで激遅。
02472432010/11/10(水) 12:58:07
1000/fpsは
1000msec/設定フレームレートのつもりで書きました。
フレーム間隔を計算するためです。

cvWaitKeyって実際10ミリ秒位の精度じゃないですか?
0248デフォルトの名無しさん2010/11/10(水) 22:58:07
意訳するとこうか?

直前のフレームからの経過時間だけでタイミングを取るという
阿呆なことをしてるのですが全体の時間が正しくなりません。
どのようにするのが正しいのでしょうか?
02492432010/11/11(木) 07:41:46
そうですw
正しいやり方教えてもらえませんか?
0250デフォルトの名無しさん2010/11/11(木) 11:10:44
経過時間を使わず絶対時間を使えよw
0251デフォルトの名無しさん2010/11/14(日) 21:41:39
>>243
録画中、timeGetTime()関数とかで1フレーム毎の録画時間(現在時刻)を記録しておく。
再生時にcvWaitKey(IntervalTime[frame])とかで録画時と同じタイミングで各フレーム
を表示していけばいいんじゃないだろうか。
0252デフォルトの名無しさん2010/11/14(日) 21:59:43
質問者はもう分かっているんだろうけど、そろそろ回答付けとかないとあれだな
一応、この手の処理では基本中の基本なんだが

× 前のフレームからの経過時間(相対時間)でタイミングを取る
○ 基準時刻からの経過時間(絶対時間)でタイミングを取る
■ このスレッドは過去ログ倉庫に格納されています