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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
OpenCVとはインテルが開発・公開しているオープンソースのコンピュータビジョン向けのLinux/Windows向けC/C++ライブラリです。

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

関連リンクなどは
>2-10くらい
2名無し募集中。。。:2010/04/19(月) 23:24:41
【関連スレ】
画像処理 その12
http://pc12.2ch.net/test/read.cgi/tech/1247100724/l50

【関連リンク】
OpenCVメモ - PukiWiki
ttp://nautilus.cs.miyazaki-u.ac.jp/~yoshi/pukiwiki/index.php?OpenCV%A5%E1%A5%E2
FrontPage - OpenCV@Chihara-Lab.
ttp://chihara.naist.jp/people/2004/kenta-t/OpenCV/pukiwiki/
OpenCV による画像処理
ttp://www-cv.mech.eng.osaka-u.ac.jp/~hamada/openCV/
OpenCVをVisual Studio .NETで使う
http://luvtechno.net/h/?OpenCV

米インテルが,コンピュータによる視覚認識ソフトの新版「OpenCV 2.1」を公開
http://itpro.nikkeibp.co.jp/free/ITPro/USNEWS/20011212/5/
3名無し募集中。。。:2010/04/19(月) 23:27:26
本家
http://opencvlibrary.sourceforge.net/

リファレンス日本語訳・サンプルコード
http://opencv.jp/
4名無し募集中。。。:2010/04/19(月) 23:28:52
申し訳ない
>>2 の殆どがリンク切れだ
5デフォルトの名無しさん:2010/04/20(火) 02:00:18
やっと3ピクセル目かよw
6デフォルトの名無しさん:2010/04/20(火) 09:33:06
>>2
リンク切れ削除しておいたから
テンプレ変更してね



【関連スレ】
画像処理 その12
http://pc12.2ch.net/test/read.cgi/tech/1247100724/l50

【関連リンク】
OpenCVをVisual Studio .NETで使う
http://luvtechno.net/h/?OpenCV

米インテルが,コンピュータによる視覚認識ソフトの新版「OpenCV 2.1」を公開
http://itpro.nikkeibp.co.jp/free/ITPro/USNEWS/20011212/5/

【良書】
Amazon.co.jp: 詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識
Gary Bradski, Adrian Kaehler, 松田 晃一: 本
http://www.amazon.co.jp/gp/product/4873114136
7デフォルトの名無しさん:2010/04/20(火) 14:19:04
OpenCVって今もIntelが開発しているの??
8デフォルトの名無しさん:2010/04/21(水) 07:27:38
オープンソースで、メインの開発者たちの所属はいろいろ
(IntelとWillow Garageが多いみたいだけど)だから、
○○の会社が開発している!ってこたーないんじゃね?
9デフォルトの名無しさん:2010/04/21(水) 13:20:05
macのOpenCV2.1でバグありますか?
10デフォルトの名無しさん:2010/04/21(水) 19:55:44
11デフォルトの名無しさん:2010/04/24(土) 08:05:16
白黒のpngファイルを読み込んで、全部のピクセルを調べて、もし色が白だったら、その座標を保存する、ってことがしたいんです。
Mat img = imread(filename, 0);
for(int i = 0; i < img.rows; i++){
for(int j = 0; j < img.cols; j++){
ここをどうやってかけばいいのでしょうか?
}
}

ちなみに画像はこれです
http://imagepot.net/view/127206379328.png
12デフォルトの名無しさん:2010/04/24(土) 09:22:08
>>11
cvGet2Dじゃだめなの?
13デフォルトの名無しさん:2010/04/24(土) 10:17:44
反転してマスクにするのはダメなの?
14デフォルトの名無しさん:2010/04/24(土) 12:33:40
出来ました。
cvGet2Dでいけました
新たな問題が…
ax + by + cz + d = u
ex + fy + gz + h = v
ix + jy + kz + l = 1
x, y, z以外は値が分かっていて、x, y, zを求めたいんですけど、cv::Matをつかって求められますか?
どうやってもとめればいいんでしょうか?
15デフォルトの名無しさん:2010/04/24(土) 13:36:03
| a b c d |
| e f g h |
| i j k l |
と( x y z 1 )の転置の行列積が(u, v, 1)の転置になると考えて、式変形すると解けるよ
16デフォルトの名無しさん:2010/04/24(土) 13:51:18
>>15
そうやって、変形してからどうやって解けばいいんでしょうか?
cv::Mat inv はつかえないですよね?
17デフォルトの名無しさん:2010/04/24(土) 13:56:42
>>15
d, h, l を右辺に移せよ
18デフォルトの名無しさん:2010/04/24(土) 14:51:11
>>17
あっ ほんとだ! 解けました

また話は変わるんですけど、今、複数のカメラの画像からの3D座標の再構築をやっているのですが、
手元に、それぞれのカメラの3×4のプロジェクションマトリックスはあるので、
あとは、画像のxy座標を上の式に入れて解いてやればワールド座標が求められるんですよね?
この考え方あってるんでしょうか?
19デフォルトの名無しさん:2010/04/24(土) 23:03:40
>>13

参考までにお聞かせください。
マスクにすると?ピクセルの座標が簡単に取得できるんですか?
できるとすると、どのような方法でしょうか?

今まで for文で回して 取得していたもので・・・。


あと、OpenCVって、IPPと違って 1bit カラーで画像を扱えませんよね。
メモリを多く使いますが、8bitグレースケールをマスクとして使うしかないですよね。
20デフォルトの名無しさん:2010/04/27(火) 18:47:23
haartraining.exe実行中に
Corrupt JPEG data:premature end of data segment
と表示されて止まってしまうのですが、
どなたか原因と対策分かる人いますか?
21デフォルトの名無しさん:2010/04/27(火) 22:26:38
[原因] データが壊れている
[対策] 正常なデータを使用する
2220:2010/04/27(火) 22:55:28
>>21
ありがとう。どのファイルが壊れてるか確認する方法はありますか?
画像ファイルが一万個ほどあります。エクスプローラでさっと見る限りは異常はなさげですが。
2320:2010/04/27(火) 23:10:21
Jpegアナライザーというソフトを見つけました。
フォルダ内のファイルを一気に解析可能です。
2420:2010/04/28(水) 00:00:56
解析しましたがエラーは一つも検出されずでした。
まいったな。
25デフォルトの名無しさん:2010/04/28(水) 00:31:28
>>22
手動2分木探査をする。

1) ファイルの半分を別のフォルダに移動。
2) haartraining.exeを走らせる
3) エラーがあったら1にもどる
4) エラーが無かったら別のフォルダに移動してから2にもどる。

これを最後の1ファイルになるまで繰り返す。
26デフォルトの名無しさん:2010/04/28(水) 08:19:43
gslはいろんな言語にインターフェイスあるのに
OpenCVはpythonしかないな
27デフォルトの名無しさん:2010/04/28(水) 12:28:42
>>20
画像はcvLoadImageで読んでいるから
全部の画像をcvLoadImageで読み込むプログラム作ったら分かるよ。
28デフォルトの名無しさん:2010/05/02(日) 08:59:41
顔検出でいろんな画像で試してみたんだが
誤検出率があまりにもひどいな
びっくりしたわ
平坦な場所とかで検出してるし
せめて必ず正解を含んでるとかならまだしも
明らかな顔があっても拾わない事が多いな
29デフォルトの名無しさん:2010/05/02(日) 12:55:37
設定が悪いんじゃねぇの
それでも酷いって言うならパターン自分で作るか
OpenCVに頼らず自分で実装すれば良い
取り合えずOpenCVに文句言うことでは無いと思う
30デフォルトの名無しさん:2010/05/02(日) 18:53:03
おそらく自分の顔で試したんだろう
31デフォルトの名無しさん:2010/05/02(日) 22:50:59
顔検出。
数値を示してないから良い、悪いは何とも言えないが、そう思うなら自分で学習させた方が良いかも。
デフぉの学習画像てどっかで見れるのかな?
32デフォルトの名無しさん:2010/05/03(月) 05:50:42
OpenCVよりいい顔検出ライブラリを作れる人がそこら中にいたら
とっくに作られているだろうからそれを使えばいいよ。



33デフォルトの名無しさん:2010/05/03(月) 13:33:53
質問があるんだが、忌憚無い回答をお願いしたい

個人的にOpenCVは、個人や大学の研究レベルで使う物で、
データや処理の精度なんかを特定(固定)させて、それで望む結果を得るような感じだと思っている
(汎用的で且つ高精度な処理は出来ない)

しかし何を思ったのか、うちの”会社”の上層部がOpenCVを使って売り物を作ろう的な事を言い出したんだ…
例えば、WEBカメラで撮ってる映像から、登録したユーザー個人を認識してピックアップさせたいとか(顔認識を使う)
でライセンスとか特許とか調べ出して本気で使う気なんだ…

でOpenCVは画像処理の敷居を下げる為のライブラリで
商売目的で使うには精度が出ないと実験結果を交えて説明してるんだが、上と担当が全然分かってくれないんだ
俺の実験はわざと失敗する様にしてると言い張り、自分に都合が良い条件で実験実装して出来てる売り物になるの一点張りなんだ
(常に対象が正面を向いてる鮮明な動画を使ってるw)

もう担当じゃないし突き放しても良いんだが、この御時世に同じ”会社”で
そんな事で金と時間と人を使って欲しく無いので止めたいんだが…
俺が製品に対する精度を高く考え過ぎなんだろうか?
34名無し募集中。。。:2010/05/03(月) 14:48:30
どこが質問なのか分からない件

デフォルトのOpenCVに出来なくても、その上に自分で作ったアルゴリズムを載せていけば
満足するまでレベルを上げていけると思うけどね
35デフォルトの名無しさん:2010/05/03(月) 15:27:39
>>34
要領を得ない内容で申し訳ない
つまり、OpenCVで本格的な商用アプリやサービスを作るのは向かないと思いませんか?
って事

一応大学の院で画像処理を学んだレベルなんだが、OpenCVの判別認識系の処理は精度が低いと思っている
そして、そのライブラリ処理を使って独自の処理を構築するくらいなら、全て自社で開発すればクオリティや作業時間が一番になる筈
(OpenCVの仕様やらインターフェイスに引っぱられるなら使わない方がいいって思ってる)

OpenCVには画像処理の基本をすっとばしてライブラリ使うってイメージしか無いので…
(だから画像処理の敷居を下げる物としては優秀だと思う)

因みにOpenCVを使う事で作成時間的なアドバンテージを得たいとかの主旨ではないです
36デフォルトの名無しさん:2010/05/03(月) 16:33:00
openCVを使ったほうがクオリティやコストなど総合的に判断して合理的だと上層部は決断したんだろ
必ずしも間違っているとは言えないと思うが?
37名無し募集中。。。:2010/05/03(月) 16:36:47
OpenCVで本格的な商用アプリやサービスを作るのは向かないと思いません。

>>34でも書いたけど、デフォルトのOpenCVでは商用アプリとして厳しいと思いますが
好きなだけOpenCVに上乗せしていけばいいと思います。
別の顔認識アルゴリズムを載せるのも良いでしょうし、笑顔検出だって欲しければ作ればいい。
OpenCVを使うことと、精度(検出率?)は関係無いと思いますよ。

> そのライブラリ処理を使って独自の処理を構築するくらいなら、全て自社で開発すればクオリティや作業時間が一番
顔認識を商品化するくらいなら、自社ライブラリがあるんじゃないのかな。
OpenCVから欲しいところを自社ライブラリに移植すれば解決だね(クオリティが上がるかは疑問ですが
# ライセンスの事は考えてないので、自分で調べて解決してください

よく解らんが、「OpenCVを使うことで失敗する」ではなく「OpenCVではない別の解決方法」を
上長に提言しないと採用されないのじゃないのかなー
38デフォルトの名無しさん:2010/05/03(月) 21:24:53

上の人も言ってるけど、OpenCV自体は画像処理の土台を提供してくれるものだと思います。
OpenCVの関数は大半がごく基礎的なもので、その上で、キャッチーな機能も実装されてる、ってかんじじゃないかな?
行列演算もフィルタ処理も色空間変換も、SSE化や並列化も全部一からやりたい、って場合もあるかもしれないけど、
あるもの使うのが良い場合もあるんじゃない。
Googleだって、ストリートビューの処理とかでOpenCV使ってるらしいですし。

あ、でもお金あるんだったらHALCONとかの方が簡単な場面も多いと思います。とくにFA用途などでは。
あとOpenCVの認識系の処理の精度が低いって言っているのは、何と比べた結果なのかちょっと気になりますね。
39デフォルトの名無しさん:2010/05/03(月) 22:27:23
OpenCVを画像処理ライブラリとして使うのはいいと思うけど
顔検出のアルゴリズムをそのままは弱いよな。
真正面しか検出できないし。
40デフォルトの名無しさん:2010/05/04(火) 15:41:43
つか、アルゴリズムの問題じゃなくて、でふぉで入ってる学習データが研究レベルのモノだってことなんじゃないの。
一般的な商用の画像認識ライブラリの学習データに使ったデータからすると、規模も質も比べ物にならないだろ。
顔認識などか難しいのは、アルゴリズムの実装じゃなくて、データ収集と学習処理時間への投資がかなりの規模になるってことなんじゃないか。
商用の場合、規模と質を背景に、高いライセンス料を取るわけだ。
41デフォルトの名無しさん:2010/05/04(火) 16:29:17
画像の質?ってのは良くわからんが、
画像の量は、単に増えても過学習を引き起こすか、ペナルティで意味がなくなるだけなんじゃ?

なんか顔検出に話が偏ってるけど、そもそも頭抜けた検出率の商用ライブラリとか存在するの?
みんないったい何のソフトの話をしているんだろう・・・
ちょっとだけ斜め方向の検出率が良くなりました、とかそんなイメージ。
42デフォルトの名無しさん:2010/05/04(火) 18:31:36
商用のライブラリは小手先の小細工みたいなので性能を底上げしているから
研究用のシンプルな作りのライブラリとは天と地の差になるってことかしら。

でもそれだと研究じゃまともな性能評価は出来ないってことになるような気もしないでも無い
43名無し募集中。。。:2010/05/04(火) 18:47:50
ちょうどこんな記事が載っていた
1年で70億枚の顔写真をスキャンしたFace.comが顔認識APIを無料で一般公開
ttp://jp.techcrunch.com/archives/201005037-billion-scanned-photos-later-face-com-opens-up-to-developers/
44デフォルトの名無しさん:2010/05/04(火) 21:26:24
>>43
APIつってもWEBサービスだね。
45デフォルトの名無しさん:2010/05/05(水) 00:35:43
OpenCVをどのレベルまで使うかによるが
単に画像処理のサポートをするライブラリとしてみれば
精度もくそもない
46デフォルトの名無しさん:2010/05/05(水) 10:01:12
http://developers.face.com/new-detector-demo/#faces/detect
これと比較すればどれだけクソか分かるだろ
47デフォルトの名無しさん:2010/05/05(水) 10:13:31
>>46
すげ〜。 iPhotoもこれぐらい出来てほしいな。
48デフォルトの名無しさん:2010/05/05(水) 10:25:28
凄いけど、最初に並んでる画像以外選択できないのは何でだろう?
49デフォルトの名無しさん:2010/05/05(水) 11:22:51
http://developers.face.com/tools/#faces/detect
urlsに画像のURL入れたら動く
50デフォルトの名無しさん:2010/05/05(水) 17:08:06
それって、スターバックスとマクドナルドをコーヒーだけで比較するみたいなもんだよな。
51デフォルトの名無しさん:2010/05/06(木) 01:24:11
開発したPCと別のPCで作成したアプリを実行する必要に迫られています。
実行環境にもopencvをインストールしなくてはならないのでしょうか?
現在、「error while loading shared libraries : libcv.so.1: cannot open shared object file : No such file or directory」
いうエラーで困っています。
実行するPCではadmin権限を持っていないので、opencvをインストールすることは難しいです。
開発環境がubuntu8.04、実行環境がcentOS5.2、コンパイラはg++を用いました。
よろしくお願いいたします。
52デフォルトの名無しさん:2010/05/06(木) 01:46:08
lddしてnot foundになってる共有ライブラリをコピーしてくればいいんじゃねっすか
53デフォルトの名無しさん:2010/05/06(木) 04:57:39
>>51
ホームディレクトリにインストール
54デフォルトの名無しさん:2010/05/06(木) 19:52:39
んでもって、LD_LIBRARY_PATHを設定する。
InstallGuide_Linux - OpenCV Wiki#Path Configuration
ttp://opencv.willowgarage.com/wiki/InstallGuide_Linux#PathConfiguration
55デフォルトの名無しさん:2010/05/07(金) 00:47:46
けど俺が最初に買った自作の本はハンダでGOってやつだったよ
5655:2010/05/07(金) 00:48:28
誤爆
57デフォルトの名無しさん:2010/05/07(金) 01:35:41
>>46
画像ファイルのURL指定して検出させてみたら
これもそんなにOpenCVと変わらない
58デフォルトの名無しさん:2010/05/10(月) 14:37:47
>>57
素でhaarだけやったものと比較したらかなり違うだろ
たぶんいろいろな探索結果を掛けてさらに絞り込んでるんだろうけど

ところで分類器の作り方がよくわからない
WindowsでGUIで動くサンプルを集めるツールとかないの?
画像指定して目的の場所を選択していって
一括でサンプルを生成してくれるみたいな
59デフォルトの名無しさん:2010/05/10(月) 15:03:51
そういうツールが欲しいなら作れば良いのではないか
60デフォルトの名無しさん:2010/05/10(月) 23:41:44
61デフォルトの名無しさん:2010/05/12(水) 23:02:38
>>60
なんか理想と違う
62デフォルトの名無しさん:2010/05/13(木) 12:58:19
63デフォルトの名無しさん:2010/05/13(木) 18:37:07
現在、PCに1.1、2.0、2.1が入っており、全てのパスを通しているのですが、これって問題無いでしょうか?
また、使用しているOpenCVのバージョンを表示させたり確認する方法ってありますでしょうか?
64デフォルトの名無しさん:2010/05/14(金) 10:34:22
>58
ツールがすでにあると思うが
createsamples.exe
haartraining.exe
65デフォルトの名無しさん:2010/05/15(土) 02:54:58
>>64
おまえが使ったことないのは分かった
66デフォルトの名無しさん:2010/05/16(日) 19:42:56
顔検出といえば2.0から特徴量にLBPが追加されたが試した人いる?
67デフォルトの名無しさん:2010/05/16(日) 23:14:21
freeBSD上でopencvを動かしています。
顔認識を行った後cvsaveimageを用いて画像をjpg形式で保存すると化けてしまいます。
壊れたCRTの画面のような画像になってしまいます。
bmp形式で出力したところ正常な画像でした。
ヘルプお願いいたします。
68デフォルトの名無しさん:2010/05/16(日) 23:43:27
ヘルスなら
69デフォルトの名無しさん:2010/05/17(月) 02:48:21
>>67
ImlImage *img = cvLoadImage("a.jpg", 1);
cvSaveImage("b.jpg", img);
のようなコードでも化けるのか確認した?
70デフォルトの名無しさん:2010/05/17(月) 20:54:56
>>69
int
main (int argc, char **argv)
{
int i;
IplImage *src_img = 0, *src_gray = 0;

if (argc < 2 || (src_img = cvLoadImage (argv[1], CV_LOAD_IMAGE_COLOR)) == 0){
return -1;}
cvSaveImage(argv[2], src_img);

cvReleaseImage( &src_img );

return 0;}
としてやってみました。
化けてしまいました・・・。
71デフォルトの名無しさん:2010/05/17(月) 22:55:28
>>70
libjpegかな
新しいの入れ直してみたらどうだろう

72デフォルトの名無しさん:2010/05/17(月) 22:56:44
ビューワーがバグってるってことはないよね
73デフォルトの名無しさん:2010/05/17(月) 23:31:16
>>67
「F」reeBSD
74デフォルトの名無しさん:2010/05/18(火) 22:09:37
70です。
opencvのインストールの際の./configureの吐く出力を見てみたところ
Image I/O ---------------------
Use libjpeg: no
となっていました。
/usr/local/libには
libjpeg.a
libjpeg.la
libjpeg.so
libjpeg.so.11
が存在します。どうすればUse libjpegをyesに出来るのでしょうか?
よろしくお願いいたします。
75デフォルトの名無しさん:2010/05/18(火) 22:39:19
FreeBSD なら、Ports からインストールすればいいんじゃね?
どうしても自前でやりたいなら、configure にオプションか、cmake あたりじゃないかしら。
というかそれぐらい解決できないなら、おとなしくPorts使っとけ。
76デフォルトの名無しさん:2010/05/18(火) 23:20:52
windowsでアプリ起動時に、ダイアログが開きリストボックスから
使用したいカメラを選択してから使用するソフトを作りたいのですが
OpenCVにusbカメラ名を取得する関数とかありますか?
cvCaptureFromCAMのindex番号とかから取得できる関数がないかなと
opencv.jpでhighguiの関数を見てみたんですがそれらしきものはありませんでした。
winのapiを使うとかしか方法はないのでしょうか?
よろしくお願いします。
77デフォルトの名無しさん:2010/05/19(水) 06:40:14
>>75
ルート権限が無い環境なんです・・。
78デフォルトの名無しさん:2010/05/19(水) 16:19:53
>>76
videoInputってライブラリ使えばできる。opencvの機能ではないけど。
iplimageの取得まではvideoinputでそれ以降の処理はopencvでやればOK
7976:2010/05/19(水) 22:02:36
>>78
ありがとうございます。
方法の糸口すら、見えてなかったので感謝です。
80デフォルトの名無しさん:2010/05/20(木) 01:28:33
>>77
root無しでもPorts使えるよ。
/usr/ports/Mk/bsd.port.mk あたりに説明あるから、適当に環境変数変えてやってみるといいよ。
スレ違いスマソ
81デフォルトの名無しさん:2010/05/22(土) 00:10:27
videoInputはOpenCVに統合された
82デフォルトの名無しさん:2010/05/22(土) 13:05:16
wrapされた中身を見ることはできるの?
83デフォルトの名無しさん:2010/05/25(火) 00:56:10
OpenCVの関数って
Cで素朴に書いたものよりはるかに高速なんだけど
なんであんな速いの?
マシン語でも混じってるの?
84デフォルトの名無しさん:2010/05/25(火) 00:57:58
どの関数かわからんけど、お前の書き方がヘタなんじゃね?
85デフォルトの名無しさん:2010/05/25(火) 01:00:56
SobelとかCannyとかです
86デフォルトの名無しさん:2010/05/25(火) 07:01:08
最近のはSIMD使ってるしOpenMPかTBBで並列処理してる
87デフォルトの名無しさん:2010/05/25(火) 12:54:20
ひょっとしてコンパイルオプションの問題なのかな
88デフォルトの名無しさん:2010/05/25(火) 13:13:37
cmakeの設定でON/OFFがある
89デフォルトの名無しさん:2010/05/26(水) 00:32:08
waveレット変換とかそういう話し?
90デフォルトの名無しさん:2010/05/26(水) 10:29:30
いいえ
91デフォルトの名無しさん:2010/05/26(水) 20:27:41
人が正面を向いて映っている画像があり、その画像が回転してしまっているとき(カメラを横に向けて撮影した場合など)
これを正立状態に直したいと考えています。(頭がちゃんと上を向く向きに直したい)
画像がどっちに回転してるか(頭が左を向いてるのか右を向いてるのか)を知る方法ってあるのでしょうか?
92デフォルトの名無しさん:2010/05/26(水) 20:47:07
画像を回転させながら
まっすぐな顔しか検出できない顔検出(たとえばOpenCVの顔検出)で顔検出して
検出された顔が多い角度に投票するようにして最大値をとれば顔の角度が大体分かる。
93デフォルトの名無しさん:2010/05/27(木) 18:16:51
なるほどやってみる。
94デフォルトの名無しさん:2010/05/28(金) 18:24:51
当方win7の64bit版、vs2008を使用しています

http://lab.cntl.kyutech.ac.jp/~kobalab/nishida/opencv/01.html

上記のサイトにhaartrainingを行う場合、コンパイルし直す必要があると書いてあります。
しかしビルドしなおそうとしてもerror LNK2019が発生してしまい、ビルドができません。

ここでふと思ったのですが、現状のopenCV2.1verでもビルドし直す必要はあるのでしょうか?
必要がないならこのまま使ってしまおうかと思います・・。
95デフォルトの名無しさん:2010/05/28(金) 20:35:14
>>94
情報が古い
必要ない
96デフォルトの名無しさん:2010/05/28(金) 20:49:43
うはwwwwっをkwwwwwwwwwwwww


すげぇがんばったのにorz
97デフォルトの名無しさん:2010/05/31(月) 20:55:01
2.1を入れてフレームワークを作れなかったので、アンインストールしたいのですが、どうやればいいですか?
98デフォルトの名無しさん:2010/05/31(月) 21:38:21
>>97
インストールしたフォルダにuninstall.exeがあったと思う
99デフォルトの名無しさん:2010/06/01(火) 00:33:02
>>98
すみません。書き忘れたのですがMacです
100デフォルトの名無しさん:2010/06/01(火) 01:41:48
MacでOpenCVの2.0を使っている方で、/usr/local/libに
libopencv_calib3d.2.1.1.dylib

などの2ファイル名に2.1.1が入ったものはありますか?これは2.1の残骸でしょうか?
101デフォルトの名無しさん:2010/06/07(月) 20:02:40
初心者丸出しの質問で恐縮です。
OpenCVのサンプルのstereo_match.exeをcygwinで動かそうと
./stereo_match.exe left01 right01
と打ったら
OpenCV Error: Assertion failed (img.type() == CV_16SC1) in unknown function, file
..\..\..\..\ocv\opencv\src\cv\cvstereosgbm.cpp, line 824
と返されたのですが原因は何でしょうか?いろいろ調べたのですがわからずじまいです。
102デフォルトの名無しさん:2010/06/13(日) 03:35:29
2枚の画像があったとき、それぞれのカメラ間の位置・姿勢(R, t)を求めたいのですが、どうすればいいでしょうか?

2枚の画像間のF行列はcvFindFundamentalMatで求められると思いますが、
そこから回転R, 並進tに分解はできるのでしょうか?
カメラはキャリブレーションされていません。

したいことはstructure from motion(SfM)のカメラ運動推定をしたいのですが…

よろしくお願いします。
103デフォルトの名無しさん:2010/06/13(日) 08:21:57
cvDecomposeProjectionMatrix
104デフォルトの名無しさん:2010/06/13(日) 11:58:02
103じゃ3次元復元はできない。
今のところF行列からのsfmで一番簡単かつ詳しいのが↓
http://www.suri.cs.okayama-u.ac.jp/~kanatani/papers/new2views.pdf

このアルゴリズムのF行列求めた後を自前で実装すればいい
ただカメラの配置に気をつけないとすぐに破綻するから要注意だ
105デフォルトの名無しさん:2010/06/14(月) 02:05:10
>>103
>>104

ありがとうございました。
>>104さんの参考URL参考になります。
実装できるかわかりませんがやってみます。
106デフォルトの名無しさん:2010/06/14(月) 22:52:41
F行列はOpenCVで計算できるから
4章の焦点距離を求めて
5、6章の回転、並進から3次元点を出せばいい
行列計算の順番を間違えなければできるはず
107デフォルトの名無しさん:2010/06/15(火) 05:05:35
cvLoadImage 関数について質問させてください。

cvLoadImage関数を、main関数内から直接呼ぶ場合は大丈夫なんですが、
クラスを作り、その中のメソッド内で呼び出すと、実行時エラーが発生してしまいます。
(おそらく戻り値がおかしいか、空っぽ)
これはなんでなんでしょうか?
原因が分からず、今はしかたなく cvLoadImage関数を使っている関数を、
inline関数にして使っています。
108デフォルトの名無しさん:2010/06/15(火) 18:56:52
>>107
クラスがおかしいんじゃね?
ソース見てみないと何とも言えない
109デフォルトの名無しさん:2010/06/15(火) 22:50:27
うちでは普通に動くけどね >>107
環境もバージョンも書いてないので、状況はさっぱりわからんが
110デフォルトの名無しさん:2010/06/16(水) 20:51:24
>>107
cvLoadImage (highgui) のバグを検索してみると:
https://code.ros.org/trac/opencv/query?component=highgui&summary=%7EcvLoadImage&col=id&col=summary&col=owner&col=type&col=priority&order=priority

こんなのが引っかかった (ちょっと大きいBMPを読み込みとクラッシュしたりする):
#370 (cvLoadImage crashes when loading HD - images as *.bmp) -- OpenCV -- Trac
https://code.ros.org/trac/opencv/ticket/370

このバグの条件に該当してるなら、コードを以下のように修正してOpenCVをビルドしてみると良いよ:
Changeset 3147 -- OpenCV -- Trac
https://code.ros.org/trac/opencv/changeset/3147
111デフォルトの名無しさん:2010/06/17(木) 17:52:21
haar-like学習時に出てくる.vecの拡張子って何かで中身を編集できますか?

createsamples.exeで複数のimgデータを読み込んで、出力された複数のvecファイルのデータを統合したいのですが・・



112デフォルトの名無しさん:2010/06/18(金) 02:12:47
>>110
ビンゴです!ありがとうございます!
113111:2010/06/18(金) 14:46:13
追記です
vecファイルでなくても、ようは複数のbmpイメージから1つのvecファイルを生成したいのですが可能ですか?
例えば画像が7つあってそれぞれ1000パターンずつ合計7000のデータを1つのvecファイルにしたいです
114111:2010/06/18(金) 16:37:10
すみません解決しました!
115デフォルトの名無しさん:2010/06/18(金) 18:50:43
これ見てよ↓
http://livedoor.blogimg.jp/tekepo/imgs/3/4/3414dfca.jpg
ばらまこうぜ!
116デフォルトの名無しさん:2010/06/22(火) 18:37:09
前スレにも同じような質問がありましたが、
haartrainingとcreatesamplesに用いる背景画像(ネガ画像)についての質問です。
現在顔ではなく、顔以外の物体認識を考えているのですが

・背景は一定ではないが同じような背景(場所は違うが常にコンクリートの上 など)

この条件の場合
1.createsamplesに使う背景はコンクリートを使うべきか、なんでもいいのか、使わない方がいいのか
2.haartrainingに使うネガティブ画像も同様に考えていいのか?
3.haartrainingに使うネガティブ画像のサイズはポジ画像を-w 24 -h 24で設定した場合
 24*24のサイズがあれば十分なのか

について意見を聞きたいです。
とくに3に関して1枚の画像から小さなネガ画像を大量に作れるか否かで全然変わってくるのでお聞きしたいです。

またもう1つ疑問なのですが、haartrainigでネガ画像枚数を仮に300と指定した場合、
こちらで指定したtxtに画像が10個しかない場合と500個指定されてる場合、どういう動作をしてるのでしょうか?

予想では10個の場合はネガ画像10個指定と同じ処理がされ、500の場合は上から300個の画像を取り出して学習してると考えているのですが・・。

以上長くなってしまってすみません。
117デフォルトの名無しさん:2010/06/22(火) 20:48:50
>>116
本当にコンクリートの上でしか使わないならコンクリートでいい
ただゴミが落ちてたり草が生えていたり段差があったりと
明暗の変化がある画像を使わないと意味ない
ネガは大きな画像を指定してhaartraining側で切り出して使うので
大きな画像をたくさん用意したらいい
詳細はソースコード読め
118デフォルトの名無しさん:2010/06/23(水) 00:01:05
IplImage *hoge;
capture = cvCaptureFromCAM(0);
hoge = cvQueryFrame(capture);
として cvReleaseImage(&hoge); とすると
Microsoft C++ の例外: cv::Exception というエラーが出ますが、どうしてでしょうか?
119デフォルトの名無しさん:2010/06/23(水) 00:08:44
どこにcvQueryFrameの戻り値を解放していいなんて書いてあるんだ?
120デフォルトの名無しさん:2010/06/23(水) 01:25:06
どうしてimage作ったのに解放しなくていいの?
121デフォルトの名無しさん:2010/06/23(水) 01:50:48
リファレンスマニュアルに「返された画像は,ユーザによって解放されたり変更されたりするべきではありません.」と書いてある。
122デフォルトの名無しさん:2010/06/23(水) 03:20:26
俺が管理してるから勝手に捨てんなハゲ!
ってことか
123デフォルトの名無しさん:2010/06/23(水) 15:28:59
cvQueryFrameは管理厨ってことか
dクス
124デフォルトの名無しさん:2010/06/23(水) 16:07:44
>>117
ありがとうございます
ついでにhaartraining中のBACKGROUND PROCESSING TIMEがステージ数が増えるごとにどんどん
倍化してしまったのでソース見直してきますorz
125デフォルトの名無しさん:2010/06/23(水) 21:03:11
動画の任意フレームにアクセス出来るようになってくんねーかな
126デフォルトの名無しさん:2010/06/23(水) 21:16:46
>>125
cvSetCaptureProperty
127デフォルトの名無しさん:2010/06/25(金) 13:16:19
windows7 64bitでvs2010exを使ってます。
opencv2.1をtbb付きでc-makeでコンパイルして使おうとしてるんですが、以下のようなエラーが出ました。
プログラムは以下のサイトのサンプルです。
ttp://imagingsolution.blog107.fc2.com/blog-entry-149.html
32bitのPCでは同様の手順で実行できました。
どうすれば解決できるでしょうか。

1>------ ビルド開始: プロジェクト: OpenCV20Sample, 構成: Debug x64 ------
1> OpenCV20Sample.cpp
1>c:\opencv-2.1.0\include\opencv\cxmat.hpp(100): fatal error C1001: An internal error has occurred in the compiler.
1> (compiler file 'f:\dd\vctools\compiler\utc\src\p2\wvm\mdmiscw.c', line 2704)
1> To work around this problem, try simplifying or changing the program near the locations listed above.
1> Please choose the Technical Support command on the Visual C++
1> Help menu, or open the Technical Support help file for more information
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
128デフォルトの名無しさん:2010/06/26(土) 15:24:03
前にOpenCV-2.1.0-win32-vs2008.exe落として2010をreleaseモードにしたら動いた
結局2008に戻したけど
129デフォルトの名無しさん:2010/06/26(土) 22:39:55
どうみてもコンパイラ側のエラーだろ
130デフォルトの名無しさん:2010/07/01(木) 11:25:15
opencv 2.1なんだけどひょっとしてパーティクルフィルタ(cvConDensation)って消えた?
2.0まではあった気がしたんだけど・・・
131デフォルトの名無しさん:2010/07/01(木) 19:45:52
cvauxに移動した
132デフォルトの名無しさん:2010/07/03(土) 00:00:20
>>130
今ちょうど同じ質問しようと思ってた所だ
未来の俺ありがとう
133デフォルトの名無しさん:2010/07/05(月) 17:56:30
haartrainingで4000枚の正解画像と2000枚の非正解画像を用いて学習させているのですが、

+----+----+-+---------+---------+---------+---------+
|2850| 27%|+|-25.646017| 0.995070| 0.962694| 0.394669|
+----+----+-+---------+---------+---------+---------+
|2851| 28%|-|-25.264372| 0.995070| 0.962694| 0.394830|
+----+----+-+---------+---------+---------+---------+
|2852| 29%|+|-25.438967| 0.995070| 0.963731| 0.394507|
+----+----+-+---------+---------+---------+---------+



Stage7が半日立っても終わりそうにありません。これって普通ですか?
32*32の画像に対して、-h 31 -w 31とやったのがまずかったのでしょうか
134デフォルトの名無しさん:2010/07/05(月) 18:07:57
24x24でも1週間はかかる
31x31なら2週間くらいかかる

135デフォルトの名無しさん:2010/07/05(月) 18:16:32
28×28が9時間で終わったんですが精度が悪かったので大きくしてみました。まさかここまで時間かかるとは・・・

hitrateがずっと0.995070、falsealarmもずっと0.96前後であまり変化していなくて、
正直終わるかどうか不安ですがもう半日様子見てみます!
136デフォルトの名無しさん:2010/07/06(火) 11:18:45
falsealarm高すぎだろ
137デフォルトの名無しさん:2010/07/06(火) 19:31:13
cvFindhomographyを実行しても、ちゃんとした値が結果を格納するCVMatに入ってきません。
ソースコードを見返して原因となるようなものは改善してみたんですが。。。
OpenCV2.1による不具合の可能性とかはあるんでしょうか。
138デフォルトの名無しさん:2010/07/06(火) 21:35:21
ちゃんとした値って何だよ
139デフォルトの名無しさん:2010/07/07(水) 11:38:19
OpenCV-2.1でmp4のFullHD動画を再生させると表示は4fpsぐらいになってしまいます。
ffmpegにvdpauを組み込んでビルドしても早くならないし
cvQueryFrame() でコーデック(h264_vdpau)の指定ってできない?
140デフォルトの名無しさん:2010/07/07(水) 22:05:14
画像を縦横に何分割かしてパズルを作りたいんですけど、
openCVに画像を分割する関数ってありますか?
141デフォルトの名無しさん:2010/07/07(水) 22:31:13
範囲指定して普通にコピーすればいいんじゃね
142デフォルトの名無しさん:2010/07/08(木) 00:31:25
143デフォルトの名無しさん:2010/07/08(木) 00:52:11
>>142
あぁこんなイメージです!
これで色々がんばってみます、どうもです!
144デフォルトの名無しさん:2010/07/09(金) 08:13:19
口蹄疫のデマ検証サイトリンク集

宮崎の口蹄疫を時系列で確認
http://anond.hatelabo.jp/20100510214137
(一番まとまってるけどgoogle八分されてる 検証 http://testdonetest.blogspot.com/2010/06/google.html

2000年の自民党政権の口蹄疫への対応と、民主党の口蹄疫への対応を比較
http://anond.hatelabo.jp/20100511231152

口蹄疫対策に関する霞ヶ関の「中の人」のつぶやきまとめ
http://togetter.com/li/19383

他の関連情報
http://anond.hatelabo.jp/keyword/%E6%82%A3%E7%95%9C

赤松広隆農水相の「外遊ゴルフ報道」TBS局内で懲戒処分
http://sankei.jp.msn.com/economy/business/100605/biz1006051059003-n1.htm
http://mac.blog.so-net.ne.jp/2010-06-05-1

消毒液横流しの検証
http://togetter.com/li/20461
http://togetter.com/li/20520

口蹄疫を出した農家が自殺
http://b.hatena.ne.jp/entry/twitter.com/matsudatsumugu/status/14293440599
http://twitter.com/mk00350/status/14300839015

145名無しさん@そうだ選挙に行こう:2010/07/11(日) 20:44:45
質問です。
OpenCVを使って、ボタンをクリックすると、ダイアログ内のIDC_STATIC_BMPにカメラから取得した動画を転送したいのですが、
動画を静止画の連続と考え、下記の様なコードを組みました。指定したダイアログ内のIDC_STATIC_BMPに描画は出来ましたが、
ダイアログが固まってしまいます。
 そこで、固まらない様にする為にはどのようなコードを書けば良いのかアドバイスを頂きたいと思って質問しました。
環境:visual studio 2008 , windowsxp, OpenCV 1.0, MFCです。 よろしくお願いします。

void hoge::OnBnClickedCaptureMove()
{
int key;
CvCapture *capture;
IplImage *frameImage;
// メインループ
while ( 1 ) {
//カメラからの入力画像1フレームをframeImageに格納する
frameImage = cvQueryFrame( capture );
CDC *pDC = GetDlgItem(IDC_STATIC_BMP)->GetDC();
HDC hDC= pDC->GetSafeHdc();
CRect rect;
GetDlgItem(IDC_STATIC_BMP)->GetClientRect(&rect);
CvvImage cimg;
cimg.CopyOf(frameImage);
cimg.DrawToHDC(hDC,&rect);
ReleaseDC(pDC);
key = cvWaitKey( 1 );
if ( key == 'q' ) {
break;
}
}
cvReleaseCapture( &capture );
}
146名無しさん@そうだ選挙に行こう:2010/07/11(日) 21:45:11
>>145
Onなんとかの関数内でループしたら、ループしている間他のメッセージが処理されないので
ウィンドウの反応はなくなる。

OnInitDialog()あたりでSetTimer()して、
OnTimer()内でループ1回に相当する処理を書くのが普通。
147145:2010/07/12(月) 04:44:58
>>146
アドバイスありがとうございます。

WM_TIMERを使い、ON_Timer()で記述してみましたが、描画された動画がカクカクなってしまいます。

SetTimerは50msに設定しています。

OpenCVのサンプルコードにあるような別窓を作って、そこにカメラから取り込んだ動画を再生するのではなく、
アプリケーションのダイアログ内に動画を再生出来ないかなと思っています。

何か他の方法はないでしょうか?
148デフォルトの名無しさん:2010/07/12(月) 06:51:29
>SetTimerは50msに設定しています。

w
149デフォルトの名無しさん:2010/07/12(月) 08:03:09
>>147
方針はそれでいい。タイマー間隔は50msじゃ長すぎるだろうけど・・・
小さくしてまだ滑らかにならないなら、描画処理に時間かかってるか、
カメラ設定でフレーム取得間隔がそもそも長いか。
timeGetTimeとかで処理時間調べてみたら。

それにしてもcvQueryFrame()がフレーム取得までブロックするかどうかとか、
フレーム取得せずしばらく放置したら次取得したフレームは何になるとか、
正確な解説がなかなか見当たらないのがもどかしい。
150デフォルトの名無しさん:2010/07/12(月) 08:05:47
ここがWindowsプログラミングスレだ

151デフォルトの名無しさん:2010/07/12(月) 09:09:57
uindouzu
152デフォルトの名無しさん:2010/07/14(水) 14:50:50
haartraining.exeの実行時の高速化について質問があります。
マシン構成は Windows 7 Professional 64bit
プロセッサはIntelCore2QuadCPU 2.4Ghz 2.39Ghzです。
RAMは8.00GBです。

haartraining.exe実行時に、-mem 5000 と5000MBのRAMを使うようにしたのですが、
タスクマネージャの、メモリ(プライベートワーキングセット)を見ると、
254,264K(この値のまま不動)しか使っておらず、約255MBしか使用しておりません。
更に、CPU使用率もほぼ25%のままです。もっと使ってくれないのでしょうか。

私の設定がメチャクチャ、ないしこうした方が良いというアドバイスがございましたら、是非教えていただけますか?


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

メモリは最大値だから必要になっていないだけじゃないかな
並列化してスレッドが増えると4倍に増えるかもしれない
154152:2010/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くらいだから、それ以上提供しても使えないんだよ という意味でしょうか?

理解が及ばず、お手数をおかけして、ごめんなさい。
155デフォルトの名無しさん:2010/07/14(水) 18:29:19
私の方でもTBB ONにしても25%しか使わず困っています・・・

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

あと気になったのでhaartrainingのコードを見てみたけど
OpenMPしか対応が入っていないのでOpenMPを有効にしないと並列化できていないと思うわ
158152:2010/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をコンパイルする必要があるのかなと思いました。
159デフォルトの名無しさん:2010/07/14(水) 21:57:36
てか普通にVisualStudioのOPENMPを有効にしたら駄目なの?
160デフォルトの名無しさん:2010/07/14(水) 22:10:21
もう使わないといいながらOpenMPが残ってるしhaartrainingはメンテされていないのかな
appsだから別扱い?

cvhaartraining.cppを見る限りでは
VisualStudioなら言語プロパティのOpenMPサーポートを「はい」にすればいいだけに見えるよ
CMakeはvcprojを生成しているだけでしょ
161デフォルトの名無しさん:2010/07/14(水) 22:16:14
たぶんOpenCVはtraincascadeに移行してTBBいれるつもりなんだろな
162152:2010/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を使う。更新日時がリビルドした日になってれば、多分リビルドが上手くいってます。


冗長なところもありますが、私はこういう手順でできました。
163デフォルトの名無しさん:2010/07/18(日) 10:16:35
ttp://opencv.jp/sample/misc.html#color-sub

↑のサイトのプログラムを改造して
三つ目の新しいIplImage(二つ目のdst_imgより幻滅した)を作成したいの
ですが、どのようにいじれば良いでしょうか?
164デフォルトの名無しさん:2010/07/18(日) 17:48:51
ちょっと日本語が分からないんだが、好意的に解釈して

新しくIplImageの変数、現在のdst_imgより減色した、を作成したいのだが、どこを弄れば良いか

クラスタリングが分かっていれば簡単だが、クラスタ数を変更してやれば好きな色数に変えることができる
MAX_CLUSTERSを弄ってみよう

例えば、
#define MAX_CLUSTERS 16
で16色に減色した画像が得られるだろう
165デフォルトの名無しさん:2010/07/18(日) 20:31:36
>>164
即レスありがとうございます。
164さんが仰った感じにしたいのですが、どこで#define MAX_CLUSTERS 16
を書けば良いでしょうか?
166デフォルトの名無しさん:2010/07/19(月) 20:07:31
複素数行列の逆行列は求められないんですか><
167デフォルトの名無しさん:2010/07/20(火) 01:20:57
ここがC言語初心者スレだ
168デフォルトの名無しさん:2010/07/22(木) 11:58:18
グレースケールの動画から画像を取り出しているのですが、
cvCaptureFromFileで8Bitの動画ファイルを読み込んで
cvQueryFrameで画像を取り出すと24Bitになってしまいます。

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

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

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

すみませんが、回答よろしくお願い致します。
187デフォルトの名無しさん:2010/08/31(火) 11:51:28
失礼します。
動画ファイルから全体の再生時間を取得したいのですが、うまくいきません。
cvSetCapturePropertyにてCV_CAP_PROP_POS_AVI_RATIOを1.0にすれば良いと思ったのですが、
その後cvGetCapturePropertyにてCV_CAP_PROP_POS_MSECの値を取得しても0が返ってきます。

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

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

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

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

よろしくお願いします。

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

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

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

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

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

>>220
プログラム書くたびにめんどうだと思う
特徴点をPoint出力するなら、特徴点を入力とするF行列もPoint入力とするだろ常識的に
222デフォルトの名無しさん:2010/10/17(日) 17:50:14
>>221
intもdoubleで置き換えられますが
223デフォルトの名無しさん:2010/10/17(日) 18:34:34
intとdoubleはデータ型なんだからデータのコンテナであるPointとMatを比較すんな
キャリブレーションは入力がPointでF行列は入力がMatみたいに統一されてないのを不便だと思わない?
224デフォルトの名無しさん:2010/10/22(金) 05:09:49
幅の違いをコンパイルエラーにしてくれる有難さを考えれば、多くの人は不満どころか感謝するだろう。
まあ文化の違いだよ。
225デフォルトの名無しさん:2010/10/23(土) 16:42:03

すみません、質問させてください.
ConvexHull2した凸包の内側だけを同一色で塗りつぶしたいのですが、
findContoursで取得した輪郭を単純にfillConvexPolyしても上手く塗りつぶせないんです。
何か間違っているでしょうか?

226デフォルトの名無しさん:2010/10/23(土) 20:33:03

cocoa アプリケーション上で動かすことはできますか?
227デフォルトの名無しさん: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/.

と出るのですが何をインストールすればいいのでしょうか?
228デフォルトの名無しさん:2010/10/28(木) 16:03:30
質問ですが,
Visual C++2008 expressionにOpenCV2.0を入れてOpenCVをつかってみようとしているんだけど, 入門書のサンプルプログラムにのっているIp1Imageっていう関数がヘッダファイルに定義されてなくて困ってます.
もしかして, この関数ってなくなったりしたの?
OpenCVのバージョンが違うからそこからわかんない.
229デフォルトの名無しさん:2010/10/28(木) 16:14:12
>>228ですけど
IplImageでした
ごめんなさい
230デフォルトの名無しさん:2010/10/30(土) 02:05:14
haar_trainingの学習法にはコツがあってだな…
教師画像とチューニング次第でかなり改善する
231デフォルトの名無しさん:2010/10/30(土) 03:32:56
>>227
cmakeと書いてあるだろ
>>228
あるよ
highgui.hをincludeしてる?
232デフォルトの名無しさん:2010/10/30(土) 03:34:55
まちがいましたjavaです。
233デフォルトの名無しさん:2010/11/02(火) 04:00:50
>>228
IplImage、普通にバージョン2.1でも2.0でも使える。
1.0用のサンプルソースがそのまま2.1でも使えるし。
234デフォルトの名無しさん:2010/11/02(火) 07:12:53
IplImageをIp1Imageって書いて>>229で解決したって事じゃないのか
235デフォルトの名無しさん: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.
236デフォルトの名無しさん:2010/11/02(火) 15:30:05
>>235
俺はVS使っててこれが出るんだがw
237デフォルトの名無しさん:2010/11/03(水) 09:54:13
ffmpegはmingwのバイナリ版だろ
238デフォルトの名無しさん:2010/11/03(水) 14:28:11
>>235
windows版の2.1から出るようになったのに海外サイト見ても誰も話題にしてないから不思議だったんだよな
自前でコンパイルしても解決しないし
239sage:2010/11/04(木) 14:39:36
>>235
自分もCV_FOURCC('M','J','P','G')にすると出る。
でその後cvWriteFrameしようとすると落ちる。


かれこれ1カ月くらいこれで悩んでる・・・
240デフォルトの名無しさん: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が白と黒の領域を表しているというのは何と無くつかめるのですが、
下がさっぱりです・・・回転させた特徴・・・?

どなたかわかる方いたら参考サイトでも何でも良いので教えてもらえないでしょうか?
241デフォルトの名無しさん:2010/11/04(木) 19:41:48
>>239
2.0aはmotion jpegで書き出し出来る
なぜか2.1では落ちるようになった
242デフォルトの名無しさん:2010/11/04(木) 21:51:51
>>241
動いたーーー!!!!
と思ったら絵が取れてない・・・
今度はcvDecodeImageが悪さしてるっぽいなぁ

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

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

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

× 前のフレームからの経過時間(相対時間)でタイミングを取る
○ 基準時刻からの経過時間(絶対時間)でタイミングを取る
253デフォルトの名無しさん:2010/11/15(月) 16:19:33
質問です.

CvSparseMat A
CvMat B
CvMat x
今,このように行列が3つあります(Aだけスパース行列です).
これらを使って,
cvSolve( A, B, x, CV_SVD);
としたのですが,

○○○.exe の 0x766db09e でハンドルされていない例外が発生しました:
Microsoft C++ の例外: cv::Exception (メモリの場所 0x0022e660)。

とエラーが発生してしまいます.
AがCvMatだとうまくいくのですが.
CvSparseMatに対応したcvSolveのような関数がありましたら教えてください.
254243:2010/11/15(月) 16:20:36
みなさんありがとうございました。
相対時間を使うからややこしくなってたんですね。
初心者なもんで。。
どうにか思った通りの速度で録画&再生ができるようになりました!
255デフォルトの名無しさん:2010/11/15(月) 16:53:15
>>253
残念だけどないと思う。

ttp://opencv.jp/opencv2-x-samples/usage_of_sparsemat_1_blurring_deblurring
ここの最急降下法を参考にすればいいんじゃない?
256デフォルトの名無しさん:2010/11/16(火) 20:32:28
質問です。

たとえばequalizeHistなどが何をやっているか見るために
visual studioでデバックをしようと思ってるのですが、当然中身が見れません。
ブレークポイントが使えない場合って変数の動きなどはどうやってみればいいんでしょうか?
257デフォルトの名無しさん:2010/11/16(火) 22:22:25
どういうこと?変数の中身はprintfすればいいし、ソースが見たけりゃ、
OpenCVのソース版をダウンロードして、equalizeHist関数を探せばいいさ。
258257:2010/11/16(火) 22:29:26
ちなみに今探してみたらhistogram.cppっていうソースファイルにequalizeHist関数があったぞ。
259256:2010/11/16(火) 22:38:59
>>257
ソース追うのではなくて、値がどう変化してるかを見たかったのです。
ソース版関連付けさせて動かした方が後々楽なんでしょかね
260デフォルトの名無しさん:2010/11/16(火) 22:52:15
equalizeHist(src, dst)のsrcとdstを比較するだけじゃ物足りないってこと?
中でどうなってるかは、やっぱり>>285のソースを関連付けさせてその中で
ブレークポイントを置くしかないわな
261256:2010/11/16(火) 23:04:40
>>260
その通りです、例にそれを出しましたが他にも変数の変化見たいものがいくつかあるので!
ありがとうございます、今度ソースコード関連付けてみます。
262デフォルトの名無しさん:2010/11/18(木) 10:47:58
USBカメラの映像をキャリブレーションしてるんですが、
初めは40msくらいなんですけど、20秒ほどかけて15msまで段々落ちていきます。
原因はなんでしょうか。初めから15msで動作させたいんですが。
263デフォルトの名無しさん:2010/11/19(金) 04:58:28
>>262
そういうカメラの仕様なんじゃないかというくらいしか言いようがないなぁ。
プログラム起動したてはWindowsが他の処理にCPUを使ってるからかもしれないし。
264デフォルトの名無しさん:2010/11/19(金) 08:50:00
>>239
リリースビルドだと例の文字列が出力されるけど
cvWriteFrameで落ちずに動画ファイルは作れてる
デバッグビルドだと落ちる
265デフォルトの名無しさん:2010/11/20(土) 13:36:28
>>262
カメラの自動露出調整とかで、フレームレートが変わってるんじゃ?
266デフォルトの名無しさん:2010/11/28(日) 00:41:29
カメラの焦点距離を求めたいのですが、cvCalibrationMatrixValues関数ってどんな風に
使えばいいんでしょうか?
第一引数は内部パラメーター(A行列)、第二,三引数は横縦ピクセル数、までは分かるのですが
第四,五のアパーチャ幅と高さってどの部分のことなんでしょうか?
あと、その単位と、返ってくる焦点距離と主点の単位ってmmなのかcmなのか何なんでしょうか?

使い方は例えば
{
cvMat *calibMatr=カメラ行列;
int imgWidth=Width,imgHeight=Height;
double apertureWidth=0,apertureHeight=0;//(不明なのでとりあえずデフォ値の0に)
double fovx,fovy;
double focalLength;
CvPoint2D64f principalPoint;
double pixelAspectRatio;

cvCalibrationMatrixValues(calibMatr,imgWidth,imgHeight,apertureWidth,apertureHeight,
             &fovx,&fovy,&focalLength,&principalPoint,&pixelAspectRatio);
}
と実行すれば、fovx,fovyに画角(dgree)、focalLengthに焦点距離(単位不明)、principalPointに
主点の長さ(単位不明)、pixelAspectRatioにアスペクト比が入る。ってことであってますよね?
今回、カメラ行列はCalibrateCamera2で求めた物、そして、アパーチャサイズに0や適当な数値入れると、
この出力結果がぐちゃぐちゃな数値出てしまいました。
267デフォルトの名無しさん:2010/11/30(火) 19:39:24
GoodFeaturesToTrackって、小数点以下3桁まで出力しますけど
何桁まで信頼できますかね
268デフォルトの名無しさん:2010/11/30(火) 19:48:07
質問です。フレーム間差分のサンプルが乗っているサイト知りませんか?
269デフォルトの名無しさん:2010/12/01(水) 02:06:03
ipl25.exeをダウンロードしてきたのですが
PackageForTheWeb Stubというコメントが出てきてインストールできません。
わかる方いたらお願いします。
270デフォルトの名無しさん:2010/12/01(水) 07:24:16
>>269
ggrks
271デフォルトの名無しさん:2010/12/01(水) 12:03:49
vistaとは相性悪いんかな
272デフォルトの名無しさん:2010/12/02(木) 17:17:53
OpenCVで人を認識できるプログラムを書いている者なんですが、
オブジェクト検出器も自作したいと思っています。

http://gihyo.jp/dev/feature/01/opencv/0004?page=1
このページを見て、オブジェクト検出器を自作しているのですが、
もっと効率のいいやり方、簡単なやり方はないでしょうか?
お願いします。
昨日からOpenCVを触り始めたものです。
Essential OpenCVという本とリファレンスを検索して分からなかったので質問させてください。

現在Picture in Pictureの映像撮影ソフトを作ろうと思い、
初めに解像度の違う画像を重ねるところからやろうと思っているのですが、
調べてみても「解像度が同じものを合成」もしくは「横に並べて連結する」関数しか見つかりませんでした。
解像度の違う画像を重ね合わせることができる関数を教えていただけると助かります。

よろしくお願いします。

開発環境はVistaでOpenCV 1.1pre使ってます
274デフォルトの名無しさん:2010/12/02(木) 18:09:29
cvSetImageROI(大きい方の画像のROIを小さい方の画像のサイズに設定)
cvCopy
cvResetImageROI
の順でどうでしょう

横に並べて連結する関数なんてあったのか…
名前教えてくれ
>>274
ありがとうございます。

横に連結する関数ですが私の勘違いでした。すみません。
276デフォルトの名無しさん:2010/12/03(金) 10:47:42
calcOpticalFlowPyrLKをc++仕様にしたら、3ms→40msになってわろた
277 [―{}@{}@{}-] 275:2010/12/03(金) 17:05:17
昨日はありがとうございました。
アドバイス通りにやったらできました。
2種類のカメラを認識させ、Picture in Pictureのようなものができました。
この映像ソースをDirectShowフィルタで扱えるように頑張ってみます。
278デフォルトの名無しさん:2010/12/05(日) 04:29:58
>>276
C++のcalcOpticalFlowPyrLKのソースを書き換えて高速化すればいいじゃん
279デフォルトの名無しさん:2010/12/06(月) 05:52:54
cvCreateCameraCapture(0);でUSBカメラ認識させてるのですが、デバイス名ってどうやったら参照できますか?
280デフォルトの名無しさん:2010/12/06(月) 21:10:28
_
281デフォルトの名無しさん:2010/12/06(月) 21:52:56
openCV2.2が公開されてたっぽい
282デフォルトの名無しさん:2010/12/07(火) 07:53:36
プログラムの知識がなくて困っています。

http://www.aianet.ne.jp/~asada/prog_doc/opencv/opencv_obj_det_img.htm
ここのサイトの「カメラ映像からの顔認識プログラム」

カメラキャプチャではなく
avi動画を読み込み処理を行いたいと試みているのですが
上手く処理することが出来ません。

avi動画の読み込みは
http://chihara.naist.jp/opencv/?%C6%B0%B2%E8%A5%D5%A5%A1%A5%A4%A5%EB%A1%CAavi%A5%D5%A5%A1%A5%A4%A5%EB%A1%CB%A4%CE%C6%C9%A4%DF%B9%FE%A4%DF
を参考にしています。

avi動画を読み込んで、物体検出の処理を行うとき
参考になるようなサイトをご存知の方いませんか?
283デフォルトの名無しさん:2010/12/07(火) 14:04:11
Ver2.2の人柱マダー?

>>282
基本はキャプチャも動画も一緒じゃね
1枚ずつ取り出して処理する訳だし、リンク先の情報で出来ると思うが
とりあえず、「何が」上手く処理出来ないのか言わないと、エスパーじゃないからわからん
284デフォルトの名無しさん:2010/12/09(木) 17:26:24
>>111
>>113
のようなことをしたいんですが、コマンド等やり方教えてください
285デフォルトの名無しさん:2010/12/09(木) 17:49:28
追記
正解画像(20枚)を記述した.txtを-info で指定
-num 4000にして実行していますが、
サンプルが20枚分しか作成出来ません。

原因はなんでしょうか?
286デフォルトの名無しさん:2010/12/09(木) 18:57:43
OpenCV2.2をダウンロードしてビルドしました。
include\opencv2フォルダの中の各フォルダ(core、highgui等)の中が空で、
Cmakeを使ってビルドした後も空です。
なのでincludeフォルダの設定などをきちんと行っても、「ヘッダファイルがない」
というエラーが出てサンプルファイルがビルドできません。

試しにVisualStudio2010用バイナリインストーラでインストールしてみると、
core、highgui等のフォルダの中にはヘッダファイルが入っています。
サンプルファイルのビルドも正常にできます。

Cmakeなどでソースからビルドされた方がいましたら解決策を教えてください。
287286:2010/12/09(木) 19:39:23
自己解決しました。バッチビルドの際に「INSTALL」にチェックすればいいみたいです。
288デフォルトの名無しさん:2010/12/09(木) 19:50:16
>>285
-infoで指定した.txtに矩形位置書いてる?
289デフォルトの名無しさん:2010/12/09(木) 20:13:10
>>288
書いてます。
過去スレ漁ったら同様の質問がありました。
mergevecを使ったやり方が提案されていたのですが、
使い方を詳しく説明していただける方いらっしゃいませんでしょうか?
290デフォルトの名無しさん:2010/12/10(金) 15:50:07
>>285 >>289
infoでリスト指定すると、テキストに書いてる枚数しか生成されない。
ランダムに変形して増やしたい場合は、-imgで画像を1枚指定すると-num数分作られる。
だから、各画像を-img + -numで複数のファイルに書き出したあと
1つに結合しないといけない。
http://note.sonots.com/SciSoftware/haartraining.html#w0a08ab4
に詳しく書いてある。
291デフォルトの名無しさん:2010/12/11(土) 13:15:59
OpenCV2.2でcvCvtColor(CV_RGB2GRAY)使ってる人いない?
2.1で使えてたのに

dst.data == dst0.data in function cvCvtColor

でエラーになる
サンプルコードは動くのに自作のが動かない
292デフォルトの名無しさん:2010/12/11(土) 17:10:22
>>291
同じ領域を指定してるからじゃね。
もともとぶっ壊れていたのがassertionついて分かりやすくなっただけだろ。
変換元と変換先の画像を別に用意する必要があるのでは。
293デフォルトの名無しさん:2010/12/13(月) 10:21:26
>>292
>もともとぶっ壊れていたのがassertionついて分かりやすくなっただけだろ。
2.1と2.2でソースが全然違ってたからそうではないのかも.

>変換元と変換先の画像を別に用意する必要があるのでは。
data0は変換する前にOpenCVで自動に確保された画像で,
dataはOpenCVで処理が終わったあとの画像っぽいから,
こちら側で渡す引数は間違えてないはず.
294デフォルトの名無しさん:2010/12/14(火) 18:03:55
CvtColorはOpenCVの他のモジュールでも使っているから
バグってることはないと思うんだが。
cvCvtColor(A,B,C);
でA==Bであるとか、Cに対して、AやBのチャンネルや型が合ってないとかではないのか。
assertion出てるソース見たら原因は分かると思うが。
295デフォルトの名無しさん:2010/12/14(火) 22:30:18
再確保されているってことは、サイズと型が間違っているんだろ
296デフォルトの名無しさん:2010/12/20(月) 09:28:22
SIFT特徴量が特許の関係で入れられないはずだったのに
入ったって聞いたんだけど
特許切れたってこと?
297デフォルトの名無しさん:2010/12/20(月) 10:34:03
>>296
商用に使わなければ問題ないんじゃない?
SURFやSUSANも特許取られている。
298デフォルトの名無しさん:2010/12/20(月) 14:04:19
オライリーの詳解OpenCV、新しいバージョンで出ないかなぁ
基本的には変わらないんだろうけど、バージョンが新しくなる度に悩む
せめて2.0で出してくれー
299デフォルトの名無しさん:2010/12/26(日) 02:46:55
>>235
これ、Win環境で2.1だと必ずこうなる??
ずっと悩んでるんだけど、だれか解決できた人いないのかなー?
300デフォルトの名無しさん:2010/12/26(日) 10:36:26
winの2.1だとリリースとデバッグ、さらに拡張子によって出たり出なかったり
2.2は改善されてるんだろうか?
301デフォルトの名無しさん:2010/12/28(火) 13:29:22
openCV1.0なんですが、サンプルのlkdemoが動作しません。
カメラは接続していないのですが、AVIファイルをexeにドロップしても、
何もせず一瞬で終了されてしまいます。
どなたか原因わかる方いらっしゃいませんか?
302デフォルトの名無しさん:2010/12/28(火) 13:58:05
カメラつなぐか、めんどくさがらず、コマンド引数にファイルパスいれてみ。
303デフォルトの名無しさん:2010/12/28(火) 14:02:18
Ikedemoはカメラからの映像を取得する物で、動画ファイルを見る為の物じゃない
OpenCV2.1でAVIファイルをドロップしてみたが、やっぱり一瞬で終了した
304デフォルトの名無しさん:2010/12/28(火) 14:10:04
>>303
ソースみてみ。AVIファイルの引数は解釈できるようになってる。
305303:2010/12/28(火) 14:41:21
>>304
おおう、cvCaptureFromAVIも使ってた
適当なアドバイスすまんかった
しかも、IkedemoじゃなくLkdemoだし
306301:2010/12/28(火) 18:32:09
コマンドプロンプトで
lkdemo test.avi
と入力しても
Could not initialize capturing...
と表示されるだけです。
コマンド合ってますよね?

307デフォルトの名無しさん:2010/12/28(火) 19:00:18
パスあってるの?あと、OpenCVって圧縮AVIいけたかね?とりあえず、非圧縮AVIで試してみるのか吉
308デフォルトの名無しさん:2010/12/29(水) 15:48:50
IPLてもう入手不可能ですか?
ぐぐっても見つからないんですが
309デフォルトの名無しさん:2010/12/29(水) 18:50:03
トラックバーの値に対応させて、出力画像を変更するようなことって可能でしょうか?

トラックバーの値1→画像1
トラックバーの値2→画像2
トラックバーの値3→画像3

のようなイメージで、簡単な画像ビューアのようなものを作りたいのですが……。
310デフォルトの名無しさん:2010/12/29(水) 20:24:59
>>308
IPLで必要な関数はほとんどOpenCVにあると思うんだが

>>309
cvCreateTrackbarとcvShowImage使えばたぶんいけると思う
311301:2010/12/29(水) 20:26:22
>>307
非圧縮AVIです。
なんか他にもAVIの条件あるんですかね?
312デフォルトの名無しさん:2010/12/29(水) 20:44:32
>>311
>>306のtest.aviってもちろんフルパスだよね?
313デフォルトの名無しさん:2010/12/29(水) 22:34:44
>>312
フルパスでもだめです。
申し訳ないですが、素人なので詳しく書かせていただきます。
ちなみにAVIファイルはサンプルと同じ場所に置いてあります

現在のディレクトリ
C:\Program Files\OpenCV\samples\c>
コマンド
lkdemo C:\Program Files\OpenCV\samples\c\test.avi
lkdemo test.avi

いずれもダメでした。
ためしにWEBカメラを接続して実行したら正常に動作しています。
314デフォルトの名無しさん:2010/12/29(水) 22:37:14
追記
いずれの場合でも
Could not initialize capturing...
と表示されるだけです

315デフォルトの名無しさん:2010/12/29(水) 22:58:03
>>313
じゃやっぱりAVIが圧縮かかってるんじゃないかな
ためしに下のAVI落として画面出るかやってみて
ttp://jp.fujitsu.com/group/fns/downloads/services/avs/tech/avsexpress-sp20040301/movie-master.avi
316デフォルトの名無しさん:2010/12/29(水) 23:25:07
>>315
出来ました…
ご指摘の通りのようです。
しっかりと圧縮の見きわめができず申し訳ありませんでした。
お手数お掛けしました
ありがとうございます
317デフォルトの名無しさん:2010/12/31(金) 03:44:49
最近になってopencvを使用し始めたのですが、少し行き詰ってしまったので質問させてください。

サンプルプログラムの「demhist」を改造してカラー画像でもコントラストなどをいじれるようにしたいのですが
これは「updateBrightnessContrast内でチャンネルを分割する処理」を加えることで実現できるでしょうか?
それとも、もっと根本から改造しなければ実現するのは厳しいでしょうか?

何かちょっとしたヒントでも教えていただけたらありがたいです。
よろしくお願いします。
318317:2010/12/31(金) 12:34:53
試行錯誤していたら自己解決することが出来ました
スレ汚し失礼しました
319デフォルトの名無しさん:2010/12/31(金) 16:35:33
301に便乗

lkdemoに非圧縮aviを読み込ますことはできますか?
出来るならやり方を教えて頂けないでしょうか。
320デフォルトの名無しさん:2011/01/03(月) 21:00:37
ffmpeg使えば読める
321デフォルトの名無しさん:2011/01/04(火) 03:00:10
AVIファイルをcvCaptureFromAVIから読み込むとめちゃくちゃ遅いんですけどなんとかならないのでしょうか?

USBカメラからだと全然速いのですが。。。
322デフォルトの名無しさん:2011/01/04(火) 04:15:38
>>321
カメラとAVIファイルの縦横サイズは?
323デフォルトの名無しさん:2011/01/04(火) 08:45:56
カメラは10cm×5cmくらいです
AVIファイルのサイズはどうやって測るのでしょうか
324デフォルトの名無しさん:2011/01/04(火) 08:51:31
いいセンスだ
325デフォルトの名無しさん:2011/01/04(火) 12:52:59
新年早々すみません。もし分かるかたがいらっしゃいましたらお教えください。

症状:cvWaitKey()が効かない。(何を押しても-1しか返ってきません。)

例えば

while (1) {
int key = cvWaitKey(TIMEOUT);
printf("%d ", key);
if (key != -1) break;
}

と書いて、コンソールに値を表示させながらキーを押してみても、
-1がすごい速さでどんどん表示されるばかりで、whileループを
いつまでも抜けません。

TIMEOUTの値は0, 1, 2, 10, 33, 100, 1000で試してみましたが、
どれも変化はありません。コンソールに-1が連続して表示される
速度も変化ないように見えます。

cvWaitKey()を使うに当たって、他に必要な準備や前提条件が
あるのでしょうか?

当方の環境はWinXPPro、Visual Studio 2008 Express Editionです。

よろしくお願いいたします。
326デフォルトの名無しさん:2011/01/04(火) 15:37:28
>>323
縦×横が何ピクセルか(解像度)を聞いたつもりだったんだけどな。
AVIファイルは右クリック+プロパティで見れる。カメラの解像度は説明書に書いてあると思う。
327デフォルトの名無しさん:2011/01/04(火) 15:42:43
>>325
まさかウィンドウを作らずにcvWaitKeyを呼んでるってことはないよね
328デフォルトの名無しさん:2011/01/04(火) 15:44:54
>>325
TIMEOUTが0の時でも次の処理にすすむってことはTIMEOUTの値の変更がうまくいってないんじゃないの。
変数で指定してるんならソース内で数字で直接指定してみたら?
329デフォルトの名無しさん:2011/01/04(火) 16:21:08
>>322
カメラはISightで640*480で
AVIは720*480です。
330デフォルトの名無しさん:2011/01/04(火) 16:23:00
>>322
あと323 != 321で、
329 = 321です。
331325:2011/01/04(火) 20:14:13
325です。

>>327
ご回答ありがとうございます。ウィンドウは作っています。

例えば下のようなソースでも、cvQueryFrame()とcvShowImage()は正常に
動作しているのに、cvWaitKey()は-1しか返してこないのです。

CvCapture *capture;
IplImage *frameImage;
char windowNameCapture[] = "Capture";

capture = cvCreateCameraCapture(0);
cvNamedWindow(windowNameCapture, CV_WINDOW_AUTOSIZE);

while (1) {
frameImage = cvQueryFrame(capture);
cvShowImage(windowNameCapture, frameImage);
int key = cvWaitKey(TIMEOUT);
if (key != -1) break;
}

.NET Frameworkの何がしかとか、プラグインとか、何かが私の環境から
抜けているのでしょうか・・・。
332デフォルトの名無しさん:2011/01/04(火) 21:50:19
>>331
327だけど、
このままコピペしてint TIMEOUT = 1とかで普通に動いたが(win7 openCVpre1.1)

ソースあるのだしcvWaitKeyを追ってみたら
333325:2011/01/04(火) 22:51:27
325です。

>>328
ご回答ありがとうございます。TIMEOUTは直値で与えています。

>>332
やっぱり動いちゃいましたか。まあ、そうなんでしょうね・・・。


いくらやってみてもだめなので、とりあえずcvWaitKey()の代わりに
cvSetMouseCallback()を使い、マウスのクリックイベントで代用することに
しました。(これは正常に動作しています。)

Keyが使えれば、もっと多くの機能をアルファベットでコマンドっぽく
処理させることができると考えていたんですが・・・。

暇ができたらソースも追っかけてみます。

ありがとうございました。
334デフォルトの名無しさん:2011/01/05(水) 01:03:05
Windows だったら、どこかに exe アップロードして他人の環境でも同じ動作かどうか確認できるんじゃね?
動作が同じならコンパイル環境だし、動作が違うなら >>325 の環境でだけ発現する何かだし。
335デフォルトの名無しさん:2011/01/05(水) 03:53:07
ためしに動かしてみてくださいってexeアップロードされても困るのだが
336デフォルトの名無しさん:2011/01/05(水) 05:46:23
exeはねえな
せめてソース
337デフォルトの名無しさん:2011/01/05(水) 12:58:37
ソースが>>331そのままなら、TIMEOUTの定義も値の指定もしてないから動かないのは普通だと思うが。
>>332はそれでちゃんと動かせてるわけだし。

ソースも環境も曖昧だからなー。
VC++でコンソールアプリケーションなら.net系は関係ないだろうし。
338デフォルトの名無しさん:2011/01/06(木) 01:27:59
2.2のC++のソースのほうで
VideoCaptureから読み込んだ画像の型をCV_32FC3に変換を行いたいのですが、
VideoCapture vc(0);
Mat m;
Mat converted;
vc >> m;
m.assignTo(converted, CV_32FC3);
imshow("dst",converted);
waitKey(10);

.
.
.
というソースで画像を表示してみても真っ白です。
何か勘違いしているのでしょうか?
339デフォルトの名無しさん:2011/01/06(木) 20:55:34
assignTo は copyToじゃない?
340デフォルトの名無しさん:2011/01/06(木) 20:56:27
あ、違う
convertToだ
341デフォルトの名無しさん:2011/01/07(金) 23:32:47
Qt使いたいんだが、CMakeで"QT_QTCORE_LIBRARY_DEBUG (RELEASE)"って何を指定すればいいの?
libフォルダのそれらしい奴はだめだったし
windows7 32bit VS2010 OpenCV2.2です
342341:2011/01/09(日) 22:53:43
自己解決
ビルドしないだけだった
343デフォルトの名無しさん:2011/01/09(日) 23:00:36
画像から肌色に近い色で、ある程度の大きさの領域の検出と
前にあるものを明るく奥にあるものを暗く(重なり?奥行き?)する
処理をやりたいのですがどのようにやればいいのでしょうか。
344デフォルトの名無しさん:2011/01/09(日) 23:08:55
奥行き取れてるの?奥行きの判断方法って何?
345デフォルトの名無しさん:2011/01/09(日) 23:23:51
>>344
奥行き取れてません・・・

http://www.toshiba.co.jp/regza/function/10b/function02.html#top
こんな感じのをイメージしていますが、なかなか出来ず。
色が複数含まれている物体を認識したいと思い、輪郭抽出しましたが
満足した結果が得られず、今は奥行きでチャレンジしようとしている所です。
346デフォルトの名無しさん:2011/01/10(月) 00:57:08
たしかOpenCVってバンドル調整の機能つんでなかったっけ?

・・・まあ今ならkinect買うのが手っ取り早いと思うけど
347デフォルトの名無しさん:2011/01/11(火) 01:12:43
>>235
これ、cvCreateFileCaptureでも同じメッセージが出て読み込み出来なかった(´・ω・`)。
非圧縮aviかmpgなら大丈夫。

まあJavaCV経由だから参考にならんかも知れんが。
348デフォルトの名無しさん:2011/01/11(火) 10:15:57
二次元画像を処理するのにkinectは関係ねーだろ

極めるとこんなことも出来るそうだが
http://www.gizmodo.jp/2006/10/post_3.html
349デフォルトの名無しさん:2011/01/11(火) 10:24:04
長方形抽出して統計的にパースを求めて、そこから3Dを構成してるのかな?
まあ言うは易く行なうは難しだな
350デフォルトの名無しさん:2011/01/11(火) 11:48:25
うは、すげーw
画像を構成する直線を調べて、消失点決めてって感じかなあ
写真なのに列車が横を見あげるってすごい不思議な感じだw
351デフォルトの名無しさん:2011/01/11(火) 18:16:48
GetOptimalDFTSizeはバグってない?
2^i*3^j*5^kピッタリだとそれより小さい数字返してる気がする
サンプルのGetOptimalDFTSize(sz-1)の-1も意味がよく分からん
352デフォルトの名無しさん:2011/01/11(火) 18:19:42
>>348
これが5年以上前の成果なのか...
353351:2011/01/12(水) 13:09:21
ごめん
「2^i*3^j*5^kピッタリ」じゃなく、それより大きい場合だ

まぁOpenCVでDFT使ってる奴っていないんだろうけど
354デフォルトの名無しさん:2011/01/12(水) 19:16:09
レナとかマンドリルとか標準画像データベースっていうのはよく見ますが、
動画のデータベースってありますか?
355デフォルトの名無しさん:2011/01/13(木) 00:30:09
用途によるがある
356デフォルトの名無しさん:2011/01/13(木) 10:26:14
人検出って横顔とか、斜めの顔ではできないの?極力ライブラリ等を使いたいんだけど。
357デフォルトの名無しさん:2011/01/14(金) 00:21:08
自分で教育すれば横顔や斜めでも大丈夫じゃね?
今のOpenCVなら全身とか上半身の教育データも入ってるみたいだから
上手く組み合わせてみてもいいだろうし
358デフォルトの名無しさん:2011/01/14(金) 20:44:44
knnおせえよ
359デフォルトの名無しさん:2011/01/14(金) 21:34:32
中身はFLANNだ
360デフォルトの名無しさん:2011/01/22(土) 23:29:50
added Kinect support (initial version without settings configuration yet) and sample on usage

だってさ
361デフォルトの名無しさん:2011/01/22(土) 23:54:17
kwsk
記事はどこぞ
362デフォルトの名無しさん:2011/01/23(日) 00:54:06
svnのコミットログ
363デフォルトの名無しさん:2011/01/23(日) 01:00:25
OpenNIと統合すんのかね
364デフォルトの名無しさん:2011/01/23(日) 01:13:31
読み込んだ動画の隅っこに再生時間を表示させたいんですが(100分の1秒くらいまで)
なんか方法ないでしょうか?
365デフォルトの名無しさん:2011/01/23(日) 03:09:49
FPSとフレームカウントでなんとかするしか・・・
366デフォルトの名無しさん:2011/01/24(月) 02:40:51
>>365
ありがとうございます。

ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1053269440?fr=pofee_pc
を参考にしてlkdemoの特徴点座標をCSVファイルに書き込むプログラムを作っているんですが、
加えて、その座標の時の時間(もしくはフレームカウント)を表示したいんです。
現在は

cvCircle( image, cvPointFrom32f(points[1][i]), 3, CV_RGB(0,255,0), -1, 8,0);

fprintf(fp, "%d,%d,%d\n",(int)(points[1][i].x), (int)(points[1][i].y),□□□);

となっているんですが、□□□の部分にどのような関数を使えばいいか悩んでいます。
cvGetCapturePropertyやcvSetCapturePropertyのあたりだと思うのですが、
どのような記述をすればいいでしょうか。
その他、付け加える記述もあればどなたか教えていただけるとありがたいです。
的外れな方法だったらすいません。
367デフォルトの名無しさん:2011/01/24(月) 03:03:16
>>366
double fps = cvGetCaptureProperty( capture, CV_CAP_PROP_FPS );
でFPS取得して
動画のフレーム取得するときに
cvQueryFrame(capture);
とかやってるんだろうからそこんとこに
framecount++;
とかしとけばいいのでは?
framecount/fpsで時間でるし。

んで質問なんですけど
cvSetImageROI(tmpmsk, rect);
cvSet(tmpmsk, cvScalar(255));
cvResetImageROI(tmpmsk);
この処理の間に微量なメモリリークが発生してるっぽいんですけど
なにか後処理が必要なのでしょうか?
tmpmskの解放はしてあります。
368デフォルトの名無しさん:2011/01/25(火) 02:41:24
>>367
具体的にそこでリークしているのはちょっと考えにくい気がする。
初期化と解放のコードは?
メモリリークを検出した手段は?
微量というが何バイト?
369デフォルトの名無しさん:2011/01/25(火) 17:07:10
Kinect強化進んでるな
replaced own point cloud computing by OpenNI ConvertProjectiveToRealWorld()

あとCUDA化も凄まじい勢い
370デフォルトの名無しさん:2011/01/27(木) 01:07:54
OpenCVって3次元plot用の関数って存在しますか?
371デフォルトの名無しさん:2011/01/27(木) 05:04:19
ない

>>367
CV_CAP_PROP_POS_MSECじゃだめなの?
372デフォルトの名無しさん:2011/01/28(金) 02:38:03
質問なんですが、64bit対応前に実装された関数が64bit環境だと使えないってことありますか?

具体的にはcvFindFundamentalMat()で返される基礎行列が誤っていて、
32bit環境で実行すると正しい値が出てるんですが…

環境はWin7,VS2008,2.1です
373デフォルトの名無しさん:2011/01/30(日) 10:38:16
OpenCV.jp の
http://opencv.jp/opencv2-x-samples/image_binarize
このサンプルとか、
http://d.hatena.ne.jp/Guernsey/20091129/1259456463
こういうサンプルで
Mat imread(const string& filename, int flags=1)
この関数を使うと、ファイルが開けなくて、エラーで落ちる、ファイルのパスを
絶対パスで指定してやってもエラーで落ちる。
皆さんは、うまく動きますか?

環境
Windows 7 64bit(32bit 環境)
Visual Studio 2010 rofessional

VMware Windows XP SP3
Visual Studio 2005 professional
374デフォルトの名無しさん:2011/01/30(日) 16:23:31
C++のAPIはライブラリビルドしたのと同じバージョンのVS使わないと、
ライブラリの外と中でstringが別モノだったりして死ぬ。
みたいな事を自分は経験した。
375デフォルトの名無しさん:2011/01/30(日) 17:01:00
>>373 です
>>374 thx です。
ライブラリィ作成時のコンパイルバージョンって、影響するのでしょうか?
Windows 7 64bit(32bit 環境)
Visual Studio 2010 professional
この環境のほうは
cmake-2.8.0-win32-x86 使ってOpenCV2.0 のライブラリィを
作成しているのですが、その時にVS2010ではライブラリィがビルドできないので
VS2005で作成したライブラリィを使ってサンプルコードなどをコンパイルしています。
ただし、もう一つの
VMware Windows XP SP3
Visual Studio 2005 professional
こっちの環境はライブラリィの作成も、サンプルコードのコンパイルもVS2005なのですがやっぱり、こけてしまうのですが・・・・?
376デフォルトの名無しさん:2011/01/30(日) 17:32:16
少なくとも2005ではimreadを使ったプログラムは動かした事がある。
自前でビルドしてるならデバッガで追ってみれば。
377デフォルトの名無しさん:2011/01/30(日) 18:02:05
>>374
それはひどいな

ニヤニヤ
378デフォルトの名無しさん:2011/01/30(日) 18:39:45
>>376
ありがとう、解決しました
もう一つの環境といいますか
Windows 7 64bit(32bit 環境)
Visual Studio 2005 professional
cmake-2.8.0-win32-x86
OpenCV2.0
このパターンを試したら、imreadを動かすことができました。
たの環境では
デバッグすれど、imreadの部分にステップインすると、いきなり
fopen(filename.c_str(), "rb");
ファイルはあるのに、ファイルが無いなどと、わけの分からんエラーで落ちまくります
filename.c_str()がstd::string から char * のキャストなので
まさに同じstring型でも、コンパイルが通らないといったことなんでしょうか??

379デフォルトの名無しさん:2011/01/30(日) 19:04:38
ライブラリをビルドしたバージョンが違うとstringとかのインラインになってるとこが、
ライブラリの中と外で食い違ったりする。代入とかでメモリ確保したり開放したりするあたり。
380デフォルトの名無しさん:2011/01/30(日) 19:06:40
なんかニヤニヤされてるみたいだから、全然見当違いなのかもしれないけど。
381デフォルトの名無しさん:2011/02/01(火) 01:37:43
2値画像中から抽出した輪郭の中で
ある輪郭の端から別の輪郭の端までの距離がしきい値以内であればその輪郭を結合
という処理をしたいのですが何かいい方法はありませんか?
モルフォロジー演算はなるべくしない方向でいきたいのですが
382デフォルトの名無しさん:2011/02/02(水) 00:26:03
>>381
輪郭線抽出してから、輪郭線をある程度の精度で近似した上で、輪郭1の各頂点ごとに、輪郭2の各頂点との距離の最短を求めて、
その全部での最短が一定距離以下だったら・・・みたいにすればできるだろうけどね。

輪郭線近似した上で包含多角形(Convex Hull)を作ってから各頂点ごとに・・・
とすれば、異常に輪郭線入り組んだりして長い場合にも対応できるかも。
383デフォルトの名無しさん:2011/02/07(月) 02:40:58
cvCreateVideoWriter(filename, 0, fps, cvSize(width,height), 0) で保存したAVIファイルを
cvCaptureFromFileで読み込めないんですが どうしたらいいでしょうか?
384デフォルトの名無しさん:2011/02/07(月) 17:21:00
ファイルが全く読み込めないのか、変な映像が出力されるのかがわからんが、
一番最後の0を1にしてみるとか
385デフォルトの名無しさん:2011/02/10(木) 00:18:55
>>384
返答ありがとうざいます。
OpenCV自体が非圧縮を読み込みできないみたいでした。

非圧縮で保存できるのに、読み込めないって地雷はひどいw
386デフォルトの名無しさん:2011/02/10(木) 22:40:07
>>385
そのバグ前からあるけどimage->imageData += 0x400すれば正しくでるはず
387デフォルトの名無しさん:2011/02/12(土) 19:58:36
Intelが開発したってあるけど
AMD環境でもちゃんと動きますか?
388デフォルトの名無しさん:2011/02/12(土) 20:31:37
動作するし開発もできる
389デフォルトの名無しさん:2011/02/12(土) 21:15:55
>>388
ありがとう、安心しました
390デフォルトの名無しさん:2011/02/17(木) 19:01:45
48Bit(16Bit x 3)の画像処理について質問です。
ざっと見たところOpenCVは

ファイルの読み込みは48Bitに対応。
ファイルの書き込みは24Bitまで。

のようですが合ってますか?

で、そうだとして内部処理は48Bitで行なわれているんでしょうか?
もしかしてロードした時点で24Bitに落ちてるのでしょうか?
391デフォルトの名無しさん:2011/02/18(金) 22:28:37
はじめまして

当方学生でプログラミングはほぼ初心者なのですが
画像の解析にopenCV1.1をつかっています。
ハフ変換で画像中の円の検出をしたいのですが
デバッグ後に画像が表示されなくて困ってます

何を質問したらいいかも分からないほどの知識しかなくて申し訳ないのですが
どなたかよろしくお願いします。
392デフォルトの名無しさん:2011/02/18(金) 22:41:23
まずはソースを貼りなさい
初心者は特に勝手に省略しないこと
393デフォルトの名無しさん:2011/02/20(日) 12:47:59.49
質問です。

たとえばTIFFファイルをLoadImageで読むと適切なIplImageが生成されますが、
パイプでやってきたTIFFをIplImageに格納するにはどうしたらいいでしょうか?

CreateImageで生成してからTIFFの中のビットマップ情報を読んで入れていく
という方法をとればできるのはできると思いますが,それだとTIFFデータから
Bitmap情報を取り出すインターフェイスも必要になるので、OpenCVの機能で
できないものかなと。
394デフォルトの名無しさん:2011/02/20(日) 21:26:04.36
>>393
OpenCV 2.2 win32のソースを元に話すけど、
highguiモジュールのソースを読むと、
grfmt_tiff.cpp, grfmt_tiff.hppってのが
TIFFのエンコーダー、デコーダーだけど、なんかファイル名を与えて開く方法しかなくて、tif_win32.cってのがそもそも
ファイル名をもらって開くような形になってるだろうから、一旦ファイルを保存して開く以外の簡単な方法はないんじゃないかな。
それか自分でlibtiff叩くしかないような。

BasicImageDecoder::m_buf_supportedが0じゃないいくつかのフォーマットに関してはメモリ上からも開けるみたいだけどね。BMPとか。
395デフォルトの名無しさん:2011/02/21(月) 01:17:18.98
>>394
サンクス。最悪tif_win32.cを弄るという手もありますね。

ちなみにBMPをメモリから開く方法について、公式のドキュメントみても
見つけられなかったんですが、参考URLとかあったら教えてください。
396デフォルトの名無しさん:2011/02/21(月) 09:12:01.28
AVDマネージャで作成したAVDのデフォルトの保存先を変更できますか?
ちなみにエクリプスは3.6.1helionです。
397デフォルトの名無しさん:2011/02/21(月) 20:26:24.39
すいません、上はスレ違いです。
申し訳ないです。

398デフォルトの名無しさん:2011/02/22(火) 02:58:33.24
>>395
C版のインタフェースはわかんないけど。。。
http://opencv.jp/opencv-2svn/cpp/highgui_reading_and_writing_images_and_video.html
の、imdecodeってやつがそうじゃないかなぁ。
399デフォルトの名無しさん:2011/02/22(火) 05:13:58.18
>>398
あー!! Cの関数ばかり探してましたが、C++用は違うものがあるんですね。
全く気付きませんでした。これによるとtiffでも読めそうな感じですね。
やってみます。
400デフォルトの名無しさん:2011/02/22(火) 09:11:17.08
>>392
遅レスすいません。
ソースは長すぎて貼れませんでした・・・

http://oshiete.goo.ne.jp/qa/4416952.html

ここの回答者のソースコードをコピーして
file nameを自分の読み込みたいファイル名としてビルドしました。
しかしデバックすると    
 
Bad aregument(Bad image header)
in function cvCloneimage,.\caxarray.cpp(3615)

とエラーが返されます。
環境はOpencv1.1pre、VC++2008です。
どなたかご教授よろしくお願いします。
401デフォルトの名無しさん:2011/02/22(火) 09:44:57.54
>>400
提示されたリンク先のあなたのソースを見るに
まずCの基礎から学んだ方がいいような雰囲気もあるが……

とりあえずデバッグ実行で何が起こっているか
(何が原因でそのエラーが出るのか)を確認してみたら?

あと,とりあえずこのサンプルにでもあなた画像を読み込ませて
動くことを確認してみてはどうでしょう
ttp://opencv.jp/opencv-1.0.0/document/opencvref_cv_special.html#decl_cvHoughCircles
402デフォルトの名無しさん:2011/02/22(火) 11:32:30.64
>>399
いや、残念ながらgrfmt_tiffにはバッファから読む方法は実装されてないので、自前実装の参考にはなるかもしれないけど、使えないと思います。
403デフォルトの名無しさん:2011/02/22(火) 22:51:13.91
>>401
質問者は僕ではないです

いやホントにそれは重々承知なんですけどw
1から学びたいくらいおもしろい分野なんですけど
なにぶん残された時間が少なくて・・・残念です・・

とりあえず読み出すファイルをbmpにしてみたら
プログラムは動きました!
誤検出が多すぎでしたけど・・w

こんな初心者のために質問に答えてくださった方
本当にありがとうございました。
またお世話になるかもしれませんがその節はよろしくお願いします。
404デフォルトの名無しさん:2011/02/25(金) 18:11:24.66
GigEカメラから取込んだ画像をOpenCVで処理したいのですが、全くどこから手を
付ければ良いのか、、、ヒント頂けないでしょうか、bmpファイル程度は取込みは出来ます。
お願いします。
405デフォルトの名無しさん:2011/02/27(日) 16:53:10.58
>>404
まずはGigEカメラから取り込んだ画像を、自作のプログラムでファイルに保存するか
画面に表示するようなものを作ることができるかどうかかな。

それができればOpenCVのIplImage型の変数にコピーしていろいろできると思うが。
406デフォルトの名無しさん:2011/02/27(日) 20:50:40.51
やっとOpenCVでUVCのUSBカメラをキャプチャ表示できた…
UVCなのにこんな回り道しなきゃいけないのか。
(環境:Win7 64bit VS2008SP1 OpenCV2.2)

俺用メモ:
OpenCV2.2未満用っぽいサンプルを使う場合、
1.#pragmaのcv.lib, cvcore.lib, cvaux.lib, highgui.libは全てコメントアウトする
2.cv.libが必要な場面→opencv_core220d.lib/opencv_core220.libを追加の依存ファイルに
3.highgui.libが必要な場面→opencv_highgui220d.lib/opencv_highgui220.libを追加の依存ファイルに


そして今回ここ↓のページがものすごく役に立ちました。感謝。超感謝です。
俺の通った回り道なんて先人達が踏み分けてくれた開かれた道でしかなかったです。

UVCのカメラ画像をOpenCVで操作(Windows Vista sp1) 涙目ブログ/ウェブリブログ
ttp://t-tlt-t.at.webry.info/200810/article_2.html
EWCLIB
ttp://www.geocities.jp/in_subaru/ewclib/index.html
OpenCV/DirectShowでキャプチャした画像を表示する - 王様の箱庭 Wiki*
ttp://wikiwiki.jp/masayashi/?OpenCV%2FDirectShow%A4%C7%A5%AD%A5%E3%A5%D7%A5%C1%A5%E3%A4%B7%A4%BF%B2%E8%C1%FC%A4%F2%C9%BD%BC%A8%A4%B9%A4%EB

それと2.2からlibの扱いが変わったことについてここ↓のおかげで確認確信できました感謝です。
OpenCV2.1と2.2に見るビルド方法の違い - PukiWiki(AkiWiki)
ttp://tessy.org/wiki/index.php?OpenCV2.1%A4%C82.2%A4%CB%B8%AB%A4%EB%A5%D3%A5%EB%A5%C9%CA%FD%CB%A1%A4%CE%B0%E3%A4%A4
407デフォルトの名無しさん:2011/02/27(日) 20:59:51.19
補足:
UVCじゃないドライバ付きのUSBカメラなら↓のサンプルですんなり行ったんです。
(2.2なのでhighgui.lib→opencv_highgui220(d).libの追加は必要でしたけど)
http://opencv.jp/sample/video_io.html#capture

(Windows7)64bit環境で使える安いUSBカメラって大抵UVCなんですね。
UVCじゃないカメラはドライバが32bitしか対応してないし。

安かったUVCカメラを3台買った後、サンプル動かしてwktkからドン底でしたが
これで…もう3台買っといてもいいような気がしてきました。
408デフォルトの名無しさん:2011/02/28(月) 18:53:30.93
ハードルが高いこと分りました。GigEカメラの前にUSBカメラから初めます。アドバイス有難う御座います。
409406-407:2011/02/28(月) 22:44:07.07
あとがき:
結局USBカメラを4台追加注文しました。
しっかしPCの別系統(って言うのかな)のUSBポートに差さないと640x480の
2台同時表示でも片方のfpsが著しく落ちますね…。
fpsを落とさずに同時に取り込めるのはウチのPCだと3台が限界かなぁ。
USB3.0のポートに差したらOKかもとか淡い期待がないではないですが、
カメラが7台全て届いたら試してみよう。
410デフォルトの名無しさん:2011/02/28(月) 23:11:49.51
UVCは複数カメラ簡単にできるんだ。
よかったら、複数うまくいった型番教えて。
いま、複数カメラに興味ないけど、前は苦労した><
カメラ毎にUSBボード買ったりとか。
411409:2011/03/01(火) 03:24:33.35
>>411
UVCなら何でもいいような気もするけど俺が使ってるのは↓です。
俺が確認したのはカメラ2台までで3台以上はまだ試してないです。

WEBカメラ(小型USBカメラ・130万画素・一発接続・ブルー) 400-CMS005BL 【サンワダイレクト】:400-CMS005BL_O
http://direct.sanwa.co.jp/ItemPage/400-CMS005BL_O

カメラ毎にUSBボードとは大変でしたね…。
ただ今でもなお(認識の問題は別にしても)多数のカメラで
速度を出したいときにはボードが必要になるかもしれませんね。

追記:
昨日まで何の問題もなく動いていたプログラムが
突如cvCopyでエラーを出すようになった…。
再起動してもダメ。デバイスマネージャ上で認識はされてる。

結局、原因は不明のままだけどMS Expression Encoder4で
USBカメラをソースに指定して取り込みを試した(うまくいった)後、
プログラムを実行させたら問題なく動いた。なんだったんだろう…。
412デフォルトの名無しさん:2011/03/01(火) 17:32:16.06
エラーってどんなエラーなの?
コピー元よりコピー先のサイズが小さかったりするとエラー出た気がするけどそれじゃないの?
413デフォルトの名無しさん:2011/03/01(火) 18:48:38.32
>>411
ありがと。
安くて遊べそうなカメラですね。
414411:2011/03/01(火) 22:58:13.25
>>412
レスありがとうございます。
そうみたいです。cvCopy()の中のMat::copyTo()の中のmemcpy()でエラーです。
memcpy()の第1・第2引数は非NULLで第3引数は921600(=640x480x3)なので
領域越えてるみたいですね。

しかしまったく同じプログラムをExpression Enocderを使用後に
実行するとエラーを吐かないという現象は…EEの使用でたまたま都合のいい値が
デバイス(ドライバ?)にセットされたか何かかな。
プログラムが偶然に頼っているのはまずいから原因さがしてるけどcvCopy()に与えた
IplImage*はどちらも正しくimageSize=921600。うーんもし何かわかったら報告します。
415デフォルトの名無しさん:2011/03/05(土) 21:20:33.93
メモリのバッファオーバーは、OpenCVとか関係ない

普通のWindows環境なら、メモリの管理ページを超えないと落ちない
管理ページ内のバッファオーバーなら、そのページ内でメモリを壊しながら動き続ける
壊したメモリの値がおかしくなって挙動が変になる場合もあるがw

つまり同じプログラムでも、その呼び出しの前後関係によっては
メモリ管理の状況が変わるから落ちたり動いたりしてるだけ

…メモリのバッファオーバーのバグを直せば良いだけだがw
416デフォルトの名無しさん:2011/03/06(日) 19:13:06.60
OpenCV 2.2でwindows環境のビデオキャプチャ(cv::VideoCapture等)は
バグがあるんだかなんだかうまく動作しないよね。

なので外部ライブラリ上にあるようなewclib
の他に
VideoInput Library
ttp://www.atinfinity.info/wiki/index.php?OpenCV/videoInput%20Library%E3%81%AB%E3%82%88%E3%82%8B%E3%83%93%E3%83%87%E3%82%AA%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3

VideoMan Library
http://videomanlib.sourceforge.net/

等を使用することをおすすめする。
417デフォルトの名無しさん:2011/03/07(月) 02:27:08.82
>>416
Videoinput Library は現在のWindows版OpenCVでは
そもそも標準採用なので
わざわざ別のをリンクしないように注意
418デフォルトの名無しさん:2011/03/07(月) 10:23:54.85
>>417
Videoinput LibraryってOpenCV上からだと使えない関数があったような。
デバイス名取得とかってOpenCVでも出来たっけ?
419デフォルトの名無しさん:2011/03/07(月) 11:47:05.69
>>418
純粋にOpenCV上からではVideoinput Library が仮想関数の向こうに隠されているので出来ません
こっそりとヘッダは入っているので、私はincludeしてWindows機種依存の形で直接使いました
420デフォルトの名無しさん:2011/03/07(月) 15:33:42.41
>>417
そうなんだ!
別のリンクして使ってたよー( ̄□ ̄;)
421デフォルトの名無しさん:2011/03/15(火) 22:02:53.94
cvWaitKeyでキー入力を与えたいのですが、うまくいきません。
ターミナルから実行すると、端末の画面の方に文字が入力されてしまいます。
ウィンドウがそれを読み取ってくれないという感じです。

コンパイルエラーなどはなく、cvWaitKey(100)などとすると
ちゃんと100ms後に次に進むので、関数自体はきちんと動作しています。
考えられる原因は何でしょうか?

Mac OSX 10.5.8、Xcode 3.1.4、OpenCV 2.2
ここの1.画像表示のソースをビルドしています。
ttp://www.aianet.ne.jp/~asada/prog_doc/opencv/opencv_img_enh.htm
画像表示まではうまくいっています。OSX固有の問題なのでしょうか?
422デフォルトの名無しさん:2011/03/15(火) 23:03:51.21
それ、ウィンドウじゃなくて端末画面の方をアクティブにしてる、ってだけじゃねーの…
423デフォルトの名無しさん:2011/03/16(水) 00:38:01.16
>>422
どんなに画像のウィンドウをクリックしても、端末がアクティブのままになっているようです。
逆に、画像以外のウィンドウをクリックしても、画像のタイトルバーに色が付いたままです。
ウィンドウ作成関連で何かミスってるんですかね?
424デフォルトの名無しさん:2011/03/16(水) 01:43:10.15
>>423
恐らくアプリケーションバンドルにしないとイベントを処理してくれないと思われる。
実行ファイル名がappnameだとして
appname.app/Contents/MacOS/
のようなフォルダ階層を用意して
そこにappnameを配置すればいけると思う。
425デフォルトの名無しさん:2011/03/16(水) 02:26:22.79
>>424
ありがとうございます!
おそらく本来は、そのような配置にしたあとappname.appを実行するのだと思いますが
それでは起動できず(一瞬Dockが膨らんで終わる)、
MacOSの中に移したappnameの方を実行するときちんと動作しました。

あるいはそれで正しいのか、なんだか釈然としませんが
ひとまず先へ進めそうです。本当にありがとうございました。
426デフォルトの名無しさん:2011/03/31(木) 05:13:32.33
Opencvで顔画像認識をするプログラムを組もうとしているのですが、
cvHaarDetectObjects()
cvReleaseHaarClassifierCascade()
の2つの関数でなぜかエラーが起きてしまいます。
エラー内容は以下の通りで
"_cvHaarDetectObjects", referenced from:
_main in 顔画像認識サンプル.o
"_cvReleaseHaarClassifierCascade", referenced from:
_main in 顔画像認識サンプル.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

プログラムは以下のサイトを参考にしました。
ttp://gihyo.jp/dev/feature/01/opencv/0003?page=3

環境はMacOSX(10.6.6) ・Opencv2.2・Xcodeを使っています。
Windows7・Opencv2.2・VS2010でこのサイトのプログラムをコピペしてビルドすると、上手く動作しました。
どなたか解決策をご存知ないでしょうか?
427デフォルトの名無しさん:2011/03/31(木) 10:31:14.52
>>426
必要なものをリンクしてないだけでは。
428425:2011/03/31(木) 17:54:13.02
>>427
まさしくその通りでした。必要なライブラリファイルをリンクしていなかっただけのようです。ありがとうございました。
429デフォルトの名無しさん:2011/04/02(土) 01:55:51.03
初めの設定の段階で、Visual Studioでコンパイルするとhighgui.dllが無いのでプログラムが開始できませんと出ます。
なので、.dllの入っているところを片っ端からpathに突っ込んでも出来ませんでした。
環境変数を変える以外になにかやることはあるのでしょうか。
環境はWindows7-64bit,OpenCV2.2,VisualStudio2010EEです。
430デフォルトの名無しさん:2011/04/02(土) 04:51:10.68
>>429
リブート
431デフォルトの名無しさん:2011/04/02(土) 08:40:28.94
>>429
VisualStudioだけ起動しなおせば大丈夫な気がする。
432デフォルトの名無しさん:2011/04/02(土) 14:48:28.45
はやく画素アクセスが M(i,j,ch) みたいにできるようになってほしいのう
いちいち Mat_ にするのは面倒だ
433429:2011/04/02(土) 23:17:43.19
>>430>>431
VisualStudioを起動しなおしたらできるようになりました。ありがとうございます。
434429:2011/04/03(日) 02:21:10.81
連投&長文すいません。
内蔵しているカメラの映像をcvCaptureFromCAM関数で取得しようとしたのですが
映像を取得してくれません。このカメラはデバイスマネージャにはちゃんと
認識されていて、また、他の映像出力系のプログラムはデバイスマネージャには
見つかりませんでした。関数の因数も0,-1,200と試してみましたがどれも
失敗に終わりました。また、別のUSBカメラでもやってみたところ、同じく
映像が取得されませんでした。ちなみに、実行してるプログラムのソース
は参考書に載っているのを丸写ししただけなので間違いはないと思います。
この場合はまだ、OpenCVにカメラを認識させるなにかのプログラムが必要なのでしょうか
435デフォルトの名無しさん:2011/04/03(日) 04:42:14.88
UVCのカメラの場合、スタンダードなサンプルそのままでは取得できなかった(>>406)けど、
デバイスマネージャ上のイメージングデバイスは何と表示されてます?
内蔵カメラでUVCというのがあるのかどうかはわかりませんが、一応可能性のひとつとして。
436435:2011/04/03(日) 04:46:42.43
あるいは、同じくダメだったという別のUSBカメラがUVCじゃなければ、
問題の切り分けとしてUVC云々が原因ではないといえそうですね。
437429:2011/04/03(日) 13:31:16.74
>>435
Sony Visual Communication Cameraと書いてあるだけで、SonyのHPで調べても
Webカメラ ≪MOTION EYE≫ とだけ書いてありました。また、調べてみても
普通ならPCGA-UVC***みたいにデバイスマネージャに書かれるみたいです。
>>436
今手元に接続してたUSBカメラがないのでうろ覚えですが、
調べてみたところ下記のサイトにあるC?00台のやつっぽい形なので多分UVCは
対応してるみたいです。
なので>>406に書かれているHPの通りにやってみたいと思います。

UVC対応Webカメラ2010【ロジクール】-winとMacでwebカメラ
http://marble-papa.cocolog-nifty.com/blog/2010/01/2010-uvcweb-bca.html
ありがとうございました。長文失礼しました。
438429:2011/04/03(日) 13:34:06.76
連投すいません。
うろ覚えのUSBカメラは1.3-MP Webcam のC?00っぽいということです。
439デフォルトの名無しさん:2011/04/08(金) 01:04:08.42
IPPとの連携について質問です。

OpenCV2.2を64bit,TBBとIPPを一緒に使おうとしています。
OSはWindows7、IPPはバージョン7のビルド3、開発環境はVisualStudio2010です。

ttp://kaushalsolanki.com/2011/01/compile-and-set-up-opencv-for-visual-studio-2010-with-64-bits-support-ipp-7-0-and-tbb/
↑を参考にしてビルドしてみたところ、一通りlibとdllを作成できました。
この状態で、IPPはopenCVから呼び出しできるようになっているのでしょうか?

Hello World に cvGetModuleInfo を追記して実行したところ、
第二引数(version)には cxcore: 2.2.0
第三引数(loaded_addon_plugins)には 空文字
となりました。
これはインストール失敗またはVisualStudioの設定ミスでしょうか?

Hello World のインクルードディレクトリや追加の依存ファイルにはIPPのパス
やlibを設定、
環境変数PATHにもIPPとopenCVのdllへのパスを設定済みです。

ご助言よろしくお願いします。
440デフォルトの名無しさん:2011/04/14(木) 11:42:37.50
Rと組み合わせて使ってる人いませんか
441デフォルトの名無しさん:2011/04/14(木) 11:51:22.14
どっかには居るんじゃね?
442デフォルトの名無しさん:2011/04/14(木) 13:13:10.96
Rはググりにくいのが嫌だ
443デフォルトの名無しさん:2011/04/14(木) 14:41:15.25
SとかCとかDとか
444デフォルトの名無しさん:2011/04/14(木) 18:02:12.82
失礼します。
FindContoursで抽出した輪郭から、二値化した黒枠の内側のみを抽出したい場合はどのようにしたら良いのでしょうか?
サンプルを見るとApproxPolyを使っているのがありますが、5番目のパラメータの「近似精度」とは具体的にどんな精度なのでしょうか?
http://opencv.jp/opencv-1.0.0/document/opencvref_cv_contours.html
すいませんが、よろしくお願いします。
445444:2011/04/15(金) 13:31:20.44
446444:2011/04/15(金) 13:47:11.47
と、思ったら、これだと必ず外側の輪郭が必要なのね
CV_RETR_LISTで輪郭を全部抽出して、2値化してるし隣接する画素を参照して確認したほうが良いのか

個人的な独り言になってすまんかった
447デフォルトの名無しさん:2011/04/18(月) 19:04:10.71
パーティクルフィルターってRが昔から自動でやってた処理に名前つけただけじゃん
448デフォルトの名無しさん:2011/04/19(火) 09:35:36.63
>>447
ヒント:御用学者は原発だけじゃない
449デフォルトの名無しさん:2011/04/19(火) 23:25:42.01
最初のライブラリとかリンカとかから既に訳が分からないよ
初心者向けの日本語の資料ありませんか?環境は2.2+VisualC++2010で
450デフォルトの名無しさん:2011/04/20(水) 01:00:28.74
最近は入門書とかもあるから、それを読め
451 忍法帖【Lv=1,xxxP】 :2011/04/22(金) 13:54:27.07
iphoneで、リアルタイムに顔認識(顔の輪郭だけでいい)したいんだけど、
毎フレーム顔認識の機能を使うとリアルタイムでは出来そうにはないんだけど、
一回だけ認識してあとは、物体追跡でやったら、リアルタイムでできる
ものでしょうか、それとも他に方法ってあるんでしょうか?
よろしくおねがいします
452デフォルトの名無しさん:2011/04/22(金) 21:02:18.51
画像のモーメントの空間モーメントはx,yの次数がそれぞれ1のとき何を表すんですか?
453デフォルトの名無しさん:2011/04/24(日) 20:50:25.07
Huモーメント不変量は画像のどんな状態を表してますか?
454デフォルトの名無しさん:2011/04/30(土) 03:06:41.11
OpenCVは製品検査用途として充分なライブラリはあるのでしょうか?
下に挙げた処理が使えれば素晴らしいです。
やっぱりおとなしくMILやHALCONを使えってことになるんでしょうか。
モルフォロジー処理  粒子解析処理  パターンマッチング処理
極座標変換処理 バーコード読み取り(できれば) OCR(できれば)
その他基本的な処理(エッジ抽出・2値化・プロファイル演算)
455デフォルトの名無しさん:2011/04/30(土) 08:18:40.77
>>454
OpenCVのいくつかの技術は特許が取られているので、商用に利用する際は別途許諾を得るか、
特許が取られている機能を避け必要があるので気をつけてくだされ。
456454:2011/04/30(土) 10:13:38.52
レスありがとうございます。

そこらへん、キチンとケアしないとだめですね。

457デフォルトの名無しさん:2011/04/30(土) 11:56:28.76
OpenCVの画像処理ライブラリ群とImageJの画像処理機能は
どっちができることが多いでしょうか?
458デフォルトの名無しさん:2011/04/30(土) 12:15:31.41
そんなこと聞いてどうすんの
459デフォルトの名無しさん:2011/04/30(土) 12:36:54.14
ハァハァします
460デフォルトの名無しさん:2011/05/15(日) 00:47:35.33
画像処理エンジニア検定とか有るけど、あれって取得して意味あるんかな
461デフォルトの名無しさん:2011/05/19(木) 12:13:28.08
OpenCV2.1でつまづいてます><
環境はVista,Visual Studio2008Express Editionです。
OpenCV2.1をインストールして、
環境変数PathにC:OpenCV2.1\binを追加。
VisualStudioのツールでインクルード&ライブラリファイル追加。
プロジェクトのプロパティでリンカ→入力で必要なライブラリを追加。
しました。

試しに新たなプロジェクトでsampleのdft.cをコンパイルして実行すると
下記のようなエラーでうまく動作しません…
これは何が原因なのでしょうか?

スレッド 'Win32 スレッド' (0x16c4) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x1560) はコード -1 (0xffffffff) で終了しました。
プログラム '[5944] ファイル名.exe: ネイティブ' はコード -1 (0xffffffff) で終了しました。
462デフォルトの名無しさん:2011/05/19(木) 17:13:19.62
>>461
ソース2秒も見たら終了コードが-1になるケースは限られてるのがわかると思うけど。
463デフォルトの名無しさん:2011/05/19(木) 18:44:15.07
だ。
464デフォルトの名無しさん:2011/05/19(木) 21:38:48.74
いまどき2.1?
465デフォルトの名無しさん:2011/05/19(木) 23:18:16.72
今、最新versionいくつなの?
466デフォルトの名無しさん:2011/05/20(金) 10:49:16.99
OpenCVの動画ってFPSはいくつまで対応していますか?
cvGetCapturePropertyのCV_CAP_PROP_FPSを使用していますが、
30fpsくらいなら正常に取得出来るのですが、180fpsになると0.08とか全然違う値になってしまいます。
よろしくお願いします。
467デフォルトの名無しさん:2011/05/22(日) 15:49:46.30
>>461
で、解決したのかい。
468デフォルトの名無しさん:2011/05/22(日) 16:13:29.58
180fpsの動画ちょ。ためしてみる。
469デフォルトの名無しさん:2011/05/23(月) 08:19:26.20
でかいファイルのうpろだだと、どこがいいのかな?
470466:2011/05/23(月) 12:42:09.99
180fpsで900枚分(5秒)の動画をうpしました。(プロパティ上では181fps)
zipで圧縮しましたが、それでも186MBあります。
ダウンロードパスワードは「cv」です。
よろしくお願いします。
http://www1.axfc.net/uploader/B/so/85159.zip
471デフォルトの名無しさん:2011/05/23(月) 18:33:39.02
>>466
0.0833...になるね。対応してないのかな?フレーム数900は確認できたけど、再生ソフトだと4秒になるよ?
472デフォルトの名無しさん:2011/05/23(月) 21:52:36.86
aviファイルのopenに失敗してたりはしてない?
473デフォルトの名無しさん:2011/05/23(月) 22:46:05.66
fpsの取得が失敗しても処理に影響することってあるんか?
可変じゃないなら事前に調べればいいだけだし
474466:2011/05/23(月) 23:28:14.07
>>471
再生ソフトの秒表示が端数切捨てってことは無いでしょうか?
fpsはやっぱりおかしいですよね。

>>472
とりあえず、オープンそのものは失敗にはなっていないです。

>>473
fpsは解像度やシャッタースピード等で可変になるんで、fpsを取得する必要があるんです。
最悪、一度再生して再生時間を計測するとかしないといけないのかな。
475デフォルトの名無しさん:2011/05/23(月) 23:43:11.84
>>466
Mac OpenCV 2.2.0 で試したところ150になったよ
画像自体は読めていたけどfpsはうまくいかないみたい
476デフォルトの名無しさん:2011/05/23(月) 23:49:34.82
ffmpeg.exeだと、181.25 fpsで取てれますね。OpenCVのほうもffmpegで情報取ってるとおもってたけど違うのかな?
XP OpenCVは2.2 ffmpeg.exeは29958。
477デフォルトの名無しさん:2011/05/24(火) 00:00:54.85
>>474
openCVのバージョンとオープンしてる関数はなんですか?cvCaptureFromAVI?
やってみたけどNULLを返すんだけどなぁ...
openCV1.1で追ってみるとCvCaptureAVI_VFW::open()のAVIStreamGetFrameOpenが失敗してるっぽいけど
ためしに&bmihをNULLに置き換えてみたら181.25を返した(windows7)
2.2はコンパイルする環境作ってないけどソース見た感じにおんなじような
478466:2011/05/24(火) 10:44:17.20
>>475
Macだと150ですか・・・近いですが少し微妙な値ですね。
フレームの取得(画像サイズ等)は出来るのですが、上手く動作しない感じです。

>>476
ファイルのプロパティやWindowsMediaPlayerでも情報は正確に取れているのですよね。
この違いは何でしょう?

>>477
OpenCVは2.1を使用していましたが、2.2にしても同じ結果でした。
オープンしている関数はcvCaptureFromFileです。
それをOpenCvSharpで使用しています。(OpenCvCharpには、FromFileとFromCameraしか無いので)
http://coderepos.org/share/browser/lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp/CvCapture.cpp?rev=26033
OpenCvSharpのソースを見るとファイルの有無しか確認していないので、そのまま通っているようですね。
フレーム数やWidth・Heightは正確に取れている辺りが物凄く謎ですが。
479デフォルトの名無しさん:2011/05/24(火) 14:26:06.84
C#でってことね。
openCVにしろOpenCvSharpにしろソースあるんだから、追っかけていけば謎は解けるんじゃないの
480デフォルトの名無しさん:2011/05/24(火) 16:30:40.45
ffmpeg.exeで正確なfpsが取得できるなら、それでプログラム組めばいいじゃん。
481466:2011/05/24(火) 17:37:51.13
fpsだけが対応していないようですし、ffmpeg.exeを使用すれば取得出来ますね。
http://www.milk-garden.net/blog/?p=356

とりあえずこれで取得してみて、ダメなら>>477さんのようにソースを修正してみます。
皆さんありがとうございました。
482466:2011/05/25(水) 17:57:52.25
自分用メモ
MediaPlayerを使って動画の時間を取得してみたけど、やっぱり30fpsを超えると取得出来なかった。
鬼門なのかな。

axWindowsMediaPlayer1.mediaCollection.add(axWindowsMediaPlayer1.URL);
double dblTime = axWindowsMediaPlayer1.Ctlcontrols.currentItem.duration;
483デフォルトの名無しさん:2011/05/26(木) 09:08:44.77
自分用メモとか書きつつ
>なのかな。
とか、マジキモイw
484466:2011/05/26(木) 10:48:46.04
キモくてすまんなw
キモついでに自分用メモ追加するw

cvSetCapturePropertyからCV_CAP_PROP_POS_FRAMESで最終フレームに移動して、
録画時間取得してフレーム数で割ったら簡単に出来た。
485デフォルトの名無しさん:2011/05/26(木) 13:20:16.31
もういいから
486デフォルトの名無しさん:2011/05/26(木) 14:26:07.04
今日の15時から17時にUSTREAMで
中部大の藤吉先生、広島大の栗田先生の講演中継あるよ
487デフォルトの名無しさん:2011/05/29(日) 13:49:24.92
画像理解の道は修羅の道だ
488デフォルトの名無しさん:2011/05/31(火) 20:58:56.84
HALCONやMILのライセンスって、幾らぐらいなんだろう?
489デフォルトの名無しさん:2011/05/31(火) 22:57:55.33
画像の一部を局所的に拡大する画像変換の方法を
模索しています。
たとえば、顔の画像の目の部分や口の部分だけを自然な形で
拡大するようなシーンを想定しています。
OpenCVのAPIでこういった変換に耐えうるものは
ありますか?
490デフォルトの名無しさん:2011/06/01(水) 00:04:04.10
自然な形ってのがあいまいすぎるわな。
変換に耐えうるってのも、主観的すぎてなんとも言えないわな。
491デフォルトの名無しさん:2011/06/01(水) 04:42:34.01
>>489に便乗して
自然な形ってのをぬいた関数はあるんでしょうか?
それこそカメラの前にかざした手だけを拡大したり,目の部分だけを拡大したり
492デフォルトの名無しさん:2011/06/01(水) 04:43:36.80
すみませんOpenCV2.2はVisual studio 2010で開発できます?
493デフォルトの名無しさん:2011/06/01(水) 07:48:15.45
>>491
「形を認識する」「そう判断するに至った領域を判別する」「範囲内で指定領域のみを切り出す」「なんらかのアルゴリズムで拡大する」
はすべて別物として考えて下さい
1,3,4は単純な処理としてはOpenCVでの得意分野です
画像認識は、現在のものはアウトラインや特徴点などで判別している関係上、2のどれが内側かってのは難しいですね
494デフォルトの名無しさん:2011/06/01(水) 08:36:10.66
>>489
つ 美人フィルタ
微分を使っているということなので、PDE関連の論文をあたったら?
495デフォルトの名無しさん:2011/06/01(水) 10:45:31.40
形状抽出は2値化してから順番に番号振るけど、
内側と外側の判別はある程度の座標を決めて、その中でも結局近くの画素から判別するしか無いと思う
496デフォルトの名無しさん:2011/06/01(水) 14:44:43.74
>>489
もしかして超解像がやりたいのか?
497デフォルトの名無しさん:2011/06/01(水) 19:51:26.09
サンプルコードのカメラキャリブレーションで遊んでるんですけど、歪み補正された画像が表示されない、て言うか画面真っ暗なんだけど何でなの?
498デフォルトの名無しさん:2011/06/01(水) 20:27:13.74
歪みねーな!

情報が少な過ぎるよ
499デフォルトの名無しさん:2011/06/01(水) 20:35:18.88
なるほど、とりあえず1枚で、ってしたのが不味かったか
500デフォルトの名無しさん:2011/06/02(木) 00:27:05.18
うほ
501デフォルトの名無しさん:2011/06/02(木) 07:27:41.17
大学の卒業研究でopencvを使って何かやりたいのですがいいアイデアないでしょうか?
502デフォルトの名無しさん:2011/06/02(木) 07:30:21.25
>>501
まず服を脱ぎます
503デフォルトの名無しさん:2011/06/02(木) 07:32:48.74
>>501
なんでOpenCVなの?
504デフォルトの名無しさん:2011/06/02(木) 09:03:07.31
>>503
画像処理系のことで何かやりたい、と教授に言ってしまったからです
opencv使ってなんかやれと言われたので、とりあえずインスコしてサンプルは走らせたとこなんですが、やるネタが思いつかないんですよ
505デフォルトの名無しさん:2011/06/02(木) 09:33:15.22
>>504
ネコの画像10000枚を学習させて写真の中のメコを検出するプログラム
506デフォルトの名無しさん:2011/06/02(木) 10:15:59.79
>>504
教授室の前にWebカメラ設置して、訪問者が男なら鍵をかけ、女なら解錠し、さらに美人なら自動でドアを開けるプログラム
もしくは、教授室の前を通る人間を判別して、美人のみを撮影するプログラム
507デフォルトの名無しさん:2011/06/02(木) 17:27:10.20
補正画像が出るようになったけど、画像の歪みが少ないから校正されてるのかわからん
508デフォルトの名無しさん:2011/06/02(木) 17:31:55.20
>>504
道路を通過した自動車を認識して、交通量を測定する

この間ひさしぶりに交差点で手動でカウントしてる人を見て
こんなの自動化できるだろーって思った
509デフォルトの名無しさん:2011/06/02(木) 17:46:30.77
仕事を作る仕事をしている人もいるのです
510デフォルトの名無しさん:2011/06/02(木) 17:58:06.93
あーなるほど、映像がすでに補正されてるのか、意味ねーじゃん
511デフォルトの名無しさん:2011/06/02(木) 23:30:11.38
研究でやるなら新しいことやれよ
512504:2011/06/03(金) 00:06:59.57
こんなレスが付くとは・・・ありがとうございます
たしかに学習させてなにかを判別するっていうのは面白そうですね簡単にできそうですし
美人判定なら顔がいかに左右対称ってのと人の顔の平均に近いかってかんじですかね
交通量測定面白そうですね これにするかもしれないです
新しいことやりたいですけど案が思いつかなかったんで・・・
513デフォルトの名無しさん:2011/06/03(金) 10:31:59.66
>>512
交通量を測定するなら、最低でも車種の選別と時間別の計測くらいは入れておけよ
論文書くなら、ナンバープレートをいかに遠くのカメラから正確に読み取るかで、新しい手法見つけりゃ特許まで取れるかもしれん
まー大抵の鮮鋭化手法は確立されてるから、かなり厳しいが
リアルタイムで遠距離や画像ボケによる失われた情報を復元するくらいのこと出来れば、教授から褒めて貰えるぞ
514デフォルトの名無しさん:2011/06/03(金) 11:01:58.32
>>512
研究と開発を分けてかんがえろよ
研究しろ
515デフォルトの名無しさん:2011/06/04(土) 08:21:51.55
トラックの向こう側に隠れて通過する車とかどうすんだよ。
516デフォルトの名無しさん:2011/06/04(土) 09:36:34.50
カメラふやせば?
517504:2011/06/04(土) 09:51:22.48
たしかに開発ライクになってしまいますね・・・うまくやります
交通量測定ならたしかに車種の判定とナンバープレートとかはできそうですね
レスしてくれた方色々参考になりましたありがとうございました

トラックに隠れる車は交通量だけならカメラ複数or上方からの撮影でいけそうですね
隠れる車のナンバープレート判定なら難しそうですがこれは目視でもできないので仕方なさそうですね
518デフォルトの名無しさん:2011/06/04(土) 09:55:42.86
頭使えよ
交通量測定の話からずれてる.ナンバープレートを認識,識別する作業は必要か?
安いフリーターやとって手軽にやってる交通量測定で上方カメラ設置できるのか?
サーベイもせずに2ちゃんでアイデアどうこうしようなんて研究向いてないよ
519デフォルトの名無しさん:2011/06/04(土) 10:34:34.50
>>504
出遅れた
ヒヨコのオスメス判別
520デフォルトの名無しさん:2011/06/04(土) 13:28:45.27
ナンバー発行地の識別とかはニーズがあるかも。
長期間の測定なら上方カメラ設置も出来るかも。
521デフォルトの名無しさん:2011/06/04(土) 14:35:54.11
最初から難しいことをあれこれ考えるのはいいが、たいていポシャる。
出来ることを一つずつ積み重ねるのがよいよ。ま、考えるの自由だが。
522デフォルトの名無しさん:2011/06/04(土) 20:11:51.96
Nシステムの悪口はよせ
523デフォルトの名無しさん:2011/06/06(月) 09:28:09.19
俺を画像だけでも自動的にイケメンに変換する処理
524デフォルトの名無しさん:2011/06/06(月) 13:33:35.36
ごめん

むり
525デフォルトの名無しさん:2011/06/07(火) 00:57:46.10
>>523
画像だけイケメンになって何の得になるというのかね
526デフォルトの名無しさん:2011/06/07(火) 22:55:47.29
いつになったらM(y,x,ch)みたいに画素アクセスできるようになるんだろ
527デフォルトの名無しさん:2011/06/08(水) 00:33:02.70
書けばいいんじゃ?
528デフォルトの名無しさん:2011/06/08(水) 15:00:15.13
ImageDataからポインタで指定しろよ
529デフォルトの名無しさん:2011/06/08(水) 16:01:46.42
openCVでパノラマ画像を作る方法って
特徴点検出→特徴点対応→貼りつけだと思うが
ただ貼りつけるだけになってしまって、画像が重なって表示される
改善する方法ない??
530デフォルトの名無しさん:2011/06/08(水) 16:11:23.12
東工の課題?
531デフォルトの名無しさん:2011/06/08(水) 22:55:43.24
>>526
マクロがあると聞いたような。
532デフォルトの名無しさん:2011/06/09(木) 11:00:09.15
>>525
リアルタイムで処理出来れば、スカイプ程度なら人気者
533デフォルトの名無しさん:2011/06/09(木) 11:54:05.02
>>530
課題ではないよ。
研究の基礎になるんだけど、そこができずに早速詰まってる。
534デフォルトの名無しさん:2011/06/09(木) 22:16:37.93
顕微鏡とかの複数の画像からのマルチフォーカスを作成したいんだけど、アルゴリズムとか書いてある本とかないですか?
ホームページとか論文でもいいけど。
535デフォルトの名無しさん:2011/06/10(金) 00:25:15.35
焦点 合成 アルゴリズム
とかでググると論文ぽいのも出てくるみたいだけど?
536デフォルトの名無しさん:2011/06/10(金) 09:35:14.77
>>534
どこで見たか忘れたがミジンコの"全焦点"画像のデモには感動したな
537デフォルトの名無しさん:2011/06/10(金) 17:55:20.28
失礼します。
輪郭を抽出して、その面積はcvContourAreaで求められるのですが、
輪郭の平均輝度を求める方法はありますでしょうか?
538デフォルトの名無しさん:2011/06/10(金) 21:05:15.57
輪郭の画素位置は追えるんだからできるだろ
539デフォルトの名無しさん:2011/06/13(月) 10:06:23.03
すいません、輪郭の「範囲内」です。
540 忍法帖【Lv=5,xxxP】 :2011/06/14(火) 12:48:05.34
輪郭抽出したらその中をスキャンすればいいだけだろ。
面倒だけど、難しくもない。
541デフォルトの名無しさん:2011/06/15(水) 22:26:43.90
cvLineで点線って引けないよね?
542デフォルトの名無しさん:2011/06/15(水) 22:48:23.51
頭使えよ破線はどうやってできてるんだ?
543デフォルトの名無しさん:2011/06/16(木) 00:01:24.47
>>542
だいたい分かるけど・・・
凸包できますかね?
544デフォルトの名無しさん:2011/06/16(木) 00:17:35.28
>>543
リファレンスって知ってる?
545デフォルトの名無しさん:2011/06/16(木) 01:03:30.84
>>544
543ですが、日本語がちょっとおかしかったです。

凸包を点線で描写したいんですが、できますか?
546デフォルトの名無しさん:2011/06/16(木) 07:38:26.74
画像を左上の画素から右下の画素まで読んで各色の数を数えたいのですが、
どうすれば1画素ずつスキャンできますか?
547デフォルトの名無しさん:2011/06/16(木) 09:56:16.07
548デフォルトの名無しさん:2011/06/17(金) 00:04:35.92
画像認識の知識がなく、どこで聞いたらよいかわかんないんで失礼します。

カメラの画像等で、背景が黒系で、白塗りの円を数十個マークしてある状態で、
このマークの数をカウントするアルゴリズム考えています。
工場のラインで、マーキングしてあるモノを数えるイメージ?

私としては、マークは定型なので、円を検出してカウントしようかなと考えているのですが、
その手法としてハフ変換というものを用いるらしいんですが、結構処理が大変っぽいらしいので
たぶんそんなに厳密にやらなくても円を検出してくれると思うんですが、処理速度が速くて、
良い方法ありませんか。
なるべく処理速度が速いアルゴリズムにしたいです。
549名無し募集中。。。:2011/06/17(金) 01:35:18.01
単純なカウントならラベリング又はblobを使うといいよ
550デフォルトの名無しさん:2011/06/17(金) 10:23:04.82
cvFindContours
で、良いんじゃね?
551デフォルトの名無しさん:2011/06/17(金) 22:30:38.05
http://blog.livedoor.jp/hen_cyberne/archives/51072839.html このサイトのステレオ平行化プログラムを動かしたいのですが以下のエラーが出てしまいます

SurfMatch2_1.cpp matcher.match(descriptors1,matches);のところでエラーが出てしまいます

エラーは長いので次に書きます
開発環境はVS2010、OpenCV2.2です よろしくお願いします
552デフォルトの名無しさん:2011/06/17(金) 22:33:19.74
Error: オーバーロードされた関数"cv::BruteForceMatcher<Distance> :: match[代入Distance=cv::L2<float>]"のインスタンスが引数リストと一致しません
error C2664: 'void cv::DescriptorMatcher::match(const cv::Mat &,std::vector<_Ty> &,const std::vector<cv::Mat> &)' : 2 番目の引数を 'std::vector<_Ty>' から 'std::vector<_Ty> &' に変換できません。
553デフォルトの名無しさん:2011/06/18(土) 09:21:19.28
個人のブログみたいだしコメント欄で聞けば?
554デフォルトの名無しさん:2011/06/18(土) 14:40:16.34
コメント欄で聞いてみることにしました
555デフォルトの名無しさん:2011/06/18(土) 23:46:56.10
以前は、動いていたプログラムが、正常に実行できたり、できなかったりします。
TCP/IP プロトコルで送られてきた、エレコムのUSBカメラで撮影したデータなのですが
cvShowImage関数を使って表示しようとすると、
「opencvClient.exe の 0x1007356e (cxcore200d.dll) でハンドルされていない例外が発生しました: ・・・・」
デバッグでステップインすると
cxcopy.cpp のstatic void flipVert( const Mat& srcmat, Mat& dstmat )関数の部分で
int t1 = ((int*)(src1 + i))[0];
src1 が空です。src1 は符号無しのchar 型のポインタ変数で
const uchar* src1 = src + (size.height - 1)*srcstep; このように定義されています。
const uchar* src = srcmat.data;
関連するsrc 変数はsrcmatという構造体のdataを指しています、ゆえに
この部分でsrc1 の値が入っていないので、アクセスバイオレーションが発生しています。
カメラが壊れて、データが壊れているのでしょうか?
環境 Openv2.0 & VS10
556デフォルトの名無しさん:2011/06/19(日) 00:26:26.00
エレコムに聞け
557デフォルトの名無しさん:2011/06/19(日) 00:39:22.11
知恵袋最強
558555:2011/06/19(日) 01:10:15.60
 皆さんどうもです。
このサイトを参考にC++ に移植して(クラス化)して、実装したのですが
今、試しに、コピペでコンパイルしましたが、やはり、同じところでエラーが出ます。
どなたか、このサイトのコードをコピペでコンパイルして、USBカメラを、繋げて
実行できるかどうか試して頂けないでしょうか・・・・_(^^)_
ttp://cv.nextfoods.jp/index.php?opencv%2Fsample%2Fstreaming
559デフォルトの名無しさん:2011/06/19(日) 09:08:31.88
ざっと見、203400とかイメージデータサイズが埋め込まれてるから、カメラが320x240じゃないと落ちそうだけどな

通信部分全部取っ払って、カメラのデータをそのまま表示してみりゃカメラが壊れてるかどうかなんてわかるんだろ

560デフォルトの名無しさん:2011/06/20(月) 10:28:13.26
画像が正常に取得出来てるかとか、
静止画を突っ込んで見るとか
src1の元にデータは入っているのかとか
見ればわかりそうだけどもな
561デフォルトの名無しさん:2011/06/21(火) 00:48:20.32
関数のアルゴリズムが知りたいです。
FPGA化するかもしれないので。
562デフォルトの名無しさん:2011/06/21(火) 09:19:47.30
ソース見れ
563デフォルトの名無しさん:2011/06/25(土) 20:28:32.48
Windows 7
Visual Studio pro 2010
OpenCV2.0
マルチスレッド (/MT)
このような環境で、リリースビルドでコンパイルしてできた実行ファイルを、配布したいのですが
OpenCV2.0のDLL の入っていない環境で実行すると当然
「highgui200.dllが見つからなかったため、このアプリケーションは開始できませんでした。」
エラーが出ます。
コンパイルオプションや、ビルドスイッチの設定で回避する方法があれば教えていただきたいのですが。
564デフォルトの名無しさん:2011/06/25(土) 21:18:06.96
どゆこと?
565デフォルトの名無しさん:2011/06/25(土) 21:18:42.18
>>563
OpenCVをスタティックリンクライブラリ化しないと、実行ファイルだけ配っては無理。
ttp://www.chino-js.com/ja/tech/opencv/static-link/

実行ファイルと同じ場所に highgui200.dll 他をコピーすれば実行できたと思いますが、普通に一緒に配布するではダメなの?
OpenCVを使っている事を明記しておけば、問題ないと思いますが・・・。
566デフォルトの名無しさん:2011/06/25(土) 22:15:24.26
>>565
>>563です
ありがとうございます、紹介して頂いたサイトを見て、自分の環境でも行えるように
して見たいと思いましたが、簡単にできそうもないので、DLLも一緒に配布したいと
思います。
567デフォルトの名無しさん:2011/06/26(日) 12:06:15.59
>>566 です
休みなので、スタティックリンクライブラリ化にチャレンジしてみるのですが
ライブラリイの出力先を、何処で指定するのでしょうか?
紹介して頂いた、サイトでは普通に、以下のような感じで、設定し、ビルドすると

[アクティブ ソリューション構成] ドロップダウンリストから、 「<新規作成...>」を選択しますと、[新しいソリューション構成] というダイアログが
表示されますので、[名前] に Release_Static と入力し、[設定のコピー元] から Release を選択します。
[新しいプロジェクト構成を作成する] チェックボクスはオンにします。これで [OK] ボタンを押します。

cv.lib C:\OpenCV\_make\release_static\
このように、出来上がっているようなのですが、自分の環境では上手く行きません?
現在の環境は
VC8
OpenCV2.0
です。
568デフォルトの名無しさん:2011/06/26(日) 13:13:22.67
>>567
です
構成プロパティ→C/C++→全般→出力ディレクトリでできました
569デフォルトの名無しさん:2011/06/26(日) 14:15:07.75
自己完結オメ
何かの時は参考にさせてもらうのぜ
570デフォルトの名無しさん:2011/06/26(日) 23:11:56.73
VCとOpenCVを最近さわりはじめた初心者で、詳しいことが分からなかったので
ここで質問させていただきます

パーティクルフィルタを実装しようとして、cvConDensation構造体を用いたプログラムをコンパイルしたところ
「'cvConDensation' : 定義されていない識別子です。」というエラーが出てしまうのですが、
OpenCV2.2にはcvConDensationは定義されていないのでしょうか?

環境は
Windows7
Visual C++ 2010 Express
OpenCV2.2
です

ご存じの方、よろしくお願いします
571デフォルトの名無しさん:2011/06/26(日) 23:25:54.08
インクルードファイル合ってる?
572デフォルトの名無しさん:2011/06/26(日) 23:30:57.38
>>571
ありがとうございます
opencv.hppをインクルードすれば、すべてのヘッダファイルが読み込まれるものだと
思っていたのですが、他にも読み込むファイルが必要なのでしょうか?
573デフォルトの名無しさん:2011/07/05(火) 14:06:17.75
ところでOpenCV2.3の人柱まだ?
http://opencv.jp/opencv2-x-tips/changelog_from_22
574デフォルトの名無しさん:2011/07/05(火) 23:51:43.24
いい加減画像格納のフォーマットは固めて欲しいもんだ
575デフォルトの名無しさん:2011/07/06(水) 00:00:48.34
え、変わったん?
576デフォルトの名無しさん:2011/07/06(水) 22:20:21.57
いや?
577デフォルトの名無しさん:2011/07/14(木) 22:44:13.28
openCV 2.0 に同梱されている、ffmpeg のライブラリの使い方が解説してあるサイトをご存知でしたら
教えてもらえませんか。また、ffmpeg のライブラリでカメラから撮影したデータをavi とかflv にエンコーディングは
できないでしょうか?
578デフォルトの名無しさん:2011/07/15(金) 02:59:09.42
>>577
根本から間違いすぎてる
OpenCVは何を使って動画を読んだか書いたかとか気にしないでいいように存在してる
古いやつには不具合はあれどそもそも標準で読み書きに対応してんだからそのままやればいい
他の手段を捨ててなぜかffmpegにこだわっての使い方限定なら多分スレ違い
そもそも何故2.0限定なんだろう
579デフォルトの名無しさん:2011/07/15(金) 03:22:28.63
>>578
自分の書いた文章を書き込んでから読み直したらひどかった、正直すまんかった
標準のcvCaptureうにゅうにゅは環境で勝手に読み込み方法を切り替えちゃうね
580デフォルトの名無しさん:2011/07/15(金) 07:41:33.23
OpenCVって「話題だし便利そうだから使ってみよう」と思って使ってみるんだけど
なんかどうでもいいところでハマってしまって「無駄に迂回してるだけなんじゃ」
と思ってしまうんだよね。なんというかできそうでできないことが多い。
581デフォルトの名無しさん:2011/07/16(土) 23:43:18.86
できそうでできないことね。例えば?
582デフォルトの名無しさん:2011/07/17(日) 01:50:52.36
OpenCV 2.3 and mac OSXな環境ですが、cv::VideoWriterがうまく動作しません。
cv::VideoWriter writer;
IplImage *query = NULL;
CvCapture *capo = cvCaptureFromAVI("newpart3.avi");
writer.open("outpart2.avi", CV_FOURCC('M','P','G','4'),29.97, cv::Size(720, 480));
while((query = cvQueryFrame(capo)) != NULL)
{
writer << query;
}
ソースはこんな感じで、outpart2.aviにはヘッダ情報のみしかない雰囲気です。
どなたかエスパーできる方いらっしゃいませんか?
583デフォルトの名無しさん:2011/07/17(日) 06:48:31.62
>>582
fourccを "avc1", "png " に変えて試してみろ
584デフォルトの名無しさん:2011/07/18(月) 16:48:53.53
>>583
うまくいきました!!ありがとうございますm(_ _)m
585デフォルトの名無しさん:2011/07/21(木) 09:07:44.52
MFCアプリでvideoInputを直に使っています.
showSettingsWindow()で設定ダイアログが出せるのですが
videoInputでは
・設定ダイアログを現在出しているかを判断
・設定ダイアログダイアログを閉じる
方法が提供されていません.
これらを行う良い方法はありませんか?
586デフォルトの名無しさん:2011/07/21(木) 18:06:23.73
つ[ findWindow() ]
587デフォルトの名無しさん:2011/07/27(水) 17:49:09.96
OpenCV初心者です。
パノラマ画像の生成について調べてたんですが、SURFは特許が絡んでるとの事。
代替の特徴量抽出で使えそうなものって何かありますか?
588デフォルトの名無しさん:2011/07/27(水) 23:01:27.98
goodfeaturetotrack
589デフォルトの名無しさん:2011/07/28(木) 11:22:51.55
OpenCV2.1のcvCalibrateCamera2()で計算された
カメラ行列Aと歪係数Dを用いて,
(1)校正に用いたチェスボードを撮影したカメラ画像をcvUndistort2()した画像に,
(2)(1)の画像のチェスコーナー点座標をcvUndistortPoints()した座標を
重畳描画してみたところ,位置が重ならずに困っています.

(1)を
cvUndistort2( 元画像, 結果画像, カメラ行列A, 歪係数D );
(2)を
cvUndistortPoits( 元点座標, 結果座標, カメラ行列,A 歪係数D, NULL, カメラ行列A );
としていますが,引数指定が間違っているのでしょうか?
590589:2011/07/28(木) 12:32:14.95
cvUndistort2()とcvUndistortPoints()とでは
必要となる計算の方向が逆だから同じコードで計算はされていないはずだ
→重ならない理由はそこらにあるのか?
→歪モデル式から逆計算せねばならないcvUndistortPoints()はちゃんとやっているのか?
…とか考えてcvUndistortPoints()のソース覗いてみたのですが
// compensate distortion iteratively
という個所で forで5回だけ回る謎のコードが書いてある…
この部分がドキュメントでの「 approximate iterative algorithm」に当たるのだと思うのですが
なんでこれで計算できるのかがさっぱりわかりません.
この個所の意味がわかる方いらっしゃいませんでしょうか…
591デフォルトの名無しさん:2011/08/17(水) 10:56:47.22
>>526
それC++でできるよ
というかなんでみんなC++使わんの?
592デフォルトの名無しさん:2011/08/17(水) 11:49:53.83
なんで皆がc++使ってないと分かるの?
593デフォルトの名無しさん:2011/08/20(土) 14:50:05.25
みんな=All the people
皆(みな)=A lot of people

みんな元気? と聞かれて いぇーい! と答える口?

なんでみんな元気って分かるんだろうね。
594デフォルトの名無しさん:2011/08/22(月) 01:29:41.69
いや、皆=everyoneだろJK
595デフォルトの名無しさん:2011/08/22(月) 09:18:56.34
みんなラッパー使ってC#で書いてるよ
596デフォルトの名無しさん:2011/08/22(月) 22:08:45.21
OpenCVSharp使ったせいで、ひさびさにIplImageとか使ったわ。
597デフォルトの名無しさん:2011/08/26(金) 16:03:05.41
死ね
598デフォルトの名無しさん:2011/08/26(金) 17:47:46.08
復帰?
599デフォルトの名無しさん:2011/08/30(火) 00:30:43.32
てst
600デフォルトの名無しさん:2011/09/04(日) 02:08:01.11
windows7 64bitのOSでVisual Studio 2010を使って最近OpenCVを使い始めたのですが、
ver2.3を用いた時になぜかビルドできなかったので、ver2.2を用いてしばらく使っていました。
ですが、webカメラを用いて画像(動画)を取得する動作をさせるプログラムを作った際に、グレーの画面しか出てこず、
うまくいかなかったので、調べた結果windows7 64bitモデルでver2.2を用いた場合はこのような症状が多発しているとのことで、
ver2.0を用いればうまくいくとの事だったのでて新たにver2.0でやり直そうとしたところCMakeを用いてソリューションをビルドしなくてはならないとのことだったので
(今まではCMakeを用いてなかったのですが)今回初めてCMakeを用いて設定したのですが、ソリューションをビルドしたときに作成されるはずのファイルのうち
重要なcv200.libだったり、highgui200.libだと言ったファイルが作成されないのですが、どうしたらよいのでしょうか?
601デフォルトの名無しさん:2011/09/04(日) 05:34:25.54
>>600
長い
602デフォルトの名無しさん:2011/09/04(日) 06:22:18.75
>>600
lib\Releaseやbin\Releaseあると思うけど
ビルドは成功しているんだよね?
どういったファイルが生成されたのかログを見たら
603デフォルトの名無しさん:2011/09/04(日) 16:43:56.60
Windows7 64bitOSとVS2010でOpenCV2.3.1を使おうとしているのですが、導入で躓いてしまいました
ネットから拾ってきたDxLibとの併用のサンプルプログラムを実行しようとしているのですが、
OpenCVのCvCaptureなどの構造体、及び関数がVS2010に認識されません。

VS側の追加のインクルードディレクトリに登録するのは、opencv\build\include\opencv2及び\opencv、
環境変数のPathに追加するのは、opencv\build\x64\build\vc10\bin。
これらで合っているでしょうか?
604デフォルトの名無しさん:2011/09/04(日) 16:54:28.76
opencv使ったことないから当てずっぽうでいうけど、
VSの追加のライブラリディレクトリか環境変数libに
opencv\build\x64\build\vc10\lib辺りを追加して
追加の依存ファイルにライブラリ名追加するのを忘れてんじゃないの?
605デフォルトの名無しさん:2011/09/04(日) 18:53:59.21
もうコンパイル済み使っちゃえよ
606デフォルトの名無しさん:2011/09/04(日) 19:48:38.02
ここがC言語初心者スレだ
607デフォルトの名無しさん:2011/09/04(日) 20:55:51.12
>>604
プロジェクトのプロパティ、リンカーの追加のライブラリディレクトリにopencv\build\x64\build\vc10\libを追加することでとりあえず赤線は消えました。
仰るとおりでした、ありがとうございます。

しかしコンパイル時にcvReleaseCapture等が未解決の外部シンボルのエラーになってしまいました。
これはまだ追加のライブラリや追加のインクルードに必要なフォルダが登録されていないということでいいんでしょうか?
608デフォルトの名無しさん:2011/09/04(日) 22:19:30.51
パス通してinclude忘れてるとかそんなオチだろ
609デフォルトの名無しさん:2011/09/04(日) 22:27:02.85
コンパイルエラーならインクルード、リンクエラーならライブラリ、どっちのエラーか
リンクならライブラリを指定してないんじゃないの。
610607:2011/09/05(月) 18:41:14.43
確認してみましたが、リンカーについては追加の依存ファイルの設定も追加のライブラリディレクトリも設定してありました。

導入手順を確認したいのですが、これ以上は初心者スレに行ったほうがいいでしょうか?
611デフォルトの名無しさん:2011/09/05(月) 18:49:19.46
>>610
リンクエラー(未解決の外部シンボルのエラー)になるということは、
プログラム内にも追加の依存ファイルの中にもその関数の実体がないということ。

cvReleaseCaptureならopencv_highgui2*.libだと思うけど、入ってる?
612610:2011/09/06(火) 21:11:33.69
>>611
確認してみましたが、opencv_highgui231.libは追加の依存ファイルに
登録されていました
613デフォルトの名無しさん:2011/09/07(水) 09:48:52.35
OpenCV 2.3.0 の vc10\lib から検索してみたけど、cvReleaseCapture は opencv_highgui*.lib に入ってたよ。

C:> "%VS100COMNTOOLS%\\vsvars32.bat"
C:> for %f in (*.lib) do @(dumpbin /EXPORTS %f | findstr cvReleaseCapture && echo %f)
_cvReleaseCapture
opencv_highgui230.lib
_cvReleaseCapture
opencv_highgui230d.lib
614デフォルトの名無しさん:2011/09/12(月) 16:12:01.92
OpenCV2.3でOpenCV1.0のプログラム動かしたいんだけどエラーがめっちゃでるのね。これって1.0のプログラムをそのままコピペしたら動かないようになってるの?
615デフォルトの名無しさん:2011/09/12(月) 17:14:47.74
そもそもコマンド名から代わってるからな
一つずつ調べて書き直せ
616デフォルトの名無しさん:2011/09/12(月) 19:38:13.11
ありがとうございます!
617デフォルトの名無しさん:2011/09/12(月) 20:22:06.53
Cライブラリはあまり変わってないと思うけどな。
highguiあたりで引数が増えたりがあったけど。
618デフォルトの名無しさん:2011/09/12(月) 20:48:01.74
>>614
_c.hの方をincludeすると幸せになれる
619デフォルトの名無しさん:2011/09/13(火) 18:51:59.56
bmpをロードしてcvShowImageで表示しようとしたら、12秒くらいかかって真っ白なウィンドウしか表示しない。
スレッド上ではうまく動かないとかあるんでしょうか?
620デフォルトの名無しさん:2011/09/13(火) 19:31:25.86
しらんがな!とか言いようが無い。
621デフォルトの名無しさん:2011/09/14(水) 01:24:17.68
ここは質問よろしいですか?
格子状に縦と横の線が垂直に交わっていて、その交点を抽出したいのですがうまくできなくアドバイスが欲しいのです。
関数 cvGoodFeaturesToTrack() を使ってコーナーとして検出できるのかなと思ったのですが、背景が暗い白、格子線が背景より少し明るい白のためか、誤検出が多いのです。
恐縮ですが知恵、知識を拝借願えないでしょうか。
622デフォルトの名無しさん:2011/09/14(水) 01:43:46.36
どう誤検出なのかぐらいは書きましょう。二値化なりすれば?
623デフォルトの名無しさん:2011/09/14(水) 08:31:02.66
誤検出は交点をとらず、ゴミや照明の角度による影、線の中腹(線上の交わっていない部分)などを検出していると思います。二値化ですか、やってみます。背景と格子線が似た色なので閾値が決められず保留にしていました。
624619:2011/09/14(水) 12:12:25.55
bmp自体のロードは成功していて、別スレッドでOpenGLを使っていたのが拙かったのかもしれないです
OpenGLのウィンドウへコピーしたら表示されました
625デフォルトの名無しさん:2011/09/14(水) 12:58:20.65
>>623
クラスタリングで減色すればいいのでは
626デフォルトの名無しさん:2011/09/14(水) 14:22:58.51
>>621
cvGoodFeaturesToTrackは使ったこと無いから的外れかもしれんが、特徴点抽出だから余計な点まで抽出してるのかも
http://wikiwiki.jp/masayashi/?OpenCV%2FGood%20Features%20to%20Track

余裕あったらcvFindContoursで格子の輪郭(出来れば矩形のみ)を抽出して、それぞれの頂点から交点を求めても良いかもしれん
http://imagingsolution.blog107.fc2.com/blog-entry-202.html
ただ、色が近いと二値化しても角が丸くなっちゃって、交点がずれたり矩形と認識されない可能性もあるから、保証は出来ん
627デフォルトの名無しさん:2011/09/14(水) 23:34:21.66
すみません、質問させてください。
Visual C++ 2010 ExpressとOpenCV 2.3.1を合わせて導入したのですが、
(OpenCVはコンパイル済みのOpenCV-2.3.1-win-superpackを使用)

Debugでビルドした実行ファイルは正常に動作するのですが、
Releaseでビルドした実行ファイルがすべてクラッシュしてしまいます。

正常に実行出来るようにするには、どういった点をチェックすればよろしいでしょうか。
628デフォルトの名無しさん:2011/09/14(水) 23:46:04.54
連投になってしまい申し訳有りません。少し実験して状況を確かめてみました。

Visual C++ 2010の[リンカー] - [入力]設定欄で
末尾にdがつくlibファイルを先に入力するとDebugは正常に動くがReleaseは動かず、
末尾にdがつかないlibファイルを先に入力するとReleaseは正常に動くがDebugは動かないようでした。

両立させるにはどのように設定すればよろしいのでしょうか?
629デフォルトの名無しさん:2011/09/15(木) 00:01:32.16
うぜえんだよカス
630デフォルトの名無しさん:2011/09/15(木) 00:25:31.29
dがつくlibをreleaseモードで入力してんの?馬鹿なの?死ぬの?
631デフォルトの名無しさん:2011/09/15(木) 02:26:16.61
>>628
プロジェクトのプロパティ→構成 
Debugの方をdつく方にして
Releaseはつかない方セットする
632デフォルトの名無しさん:2011/09/15(木) 03:50:48.15
ああ、そんなことか
633デフォルトの名無しさん:2011/09/15(木) 03:53:18.46
dってのはデバッグのdなんだよ
634デフォルトの名無しさん:2011/09/16(金) 06:58:51.08
両立させることは不可能。なぜかたまにうまくいくこともある。
635デフォルトの名無しさん:2011/09/16(金) 08:59:39.98
Haar-likeで顔を抽出しROIをつかってウィンドウに抽出した顔の矩形部分を表示したいのですがなぜか定義したはずのCvRect rが
定義され ていないとエラーが出てしまいます。
どうやったらroiにrからの値を代入できるでしょうか?

ちなみに[breakpiont]ではrがありえない数字もしくはエラーになってしまいます。

ご教授の程よろしくお願いします。

以下部分的なソースコードです。



636デフォルトの名無しさん:2011/09/16(金) 09:03:18.91
CvRect roi;
CvRect *r;
省略
for(int i=0; i < (objects ? objects->total : 0); i++){
   r = (CvRect *) cvGetSeqElem(objects, i);
   if(r != NULL) roi = cvRect(r->x, r->y, r->width, r->height);
   cvRectangle(frame, cvPoint(r->x, r->y), cvPoint(r->x + r->width, r->y+r->height), CV_RGB(0, 255, 0), 4);
}
roi = cvRect(r->x, r->y, r->width, r->height);
cvSetImageROI(frame,roi);          //[breakpoint]
cvShowImage("顔検出",frame);
cvResetImageROI(frame);
637デフォルトの名無しさん:2011/09/16(金) 11:17:00.13
>>636
顔がひとつも検出されないときに
ループに入らないからrが未定義なのでは
638デフォルトの名無しさん:2011/09/16(金) 12:21:04.76
>>637
アドバイスありがとうございます。
おかげさまで解決しました。

一応解決方法として
roi = cvRect(0, 0, frame->width, frame->height);
と最初に定義することで解決しました。
639デフォルトの名無しさん:2011/09/16(金) 12:26:13.44
haar-likeのカスケード分類器を複数使って顔の部位を複数検出する
プログラム作ってるのですが、プログラムを10秒くらい起動し
ているとメモリの不正アクセスとかで落ちます。
なにか良い改善方法はありませんでしょうか?
640デフォルトの名無しさん:2011/09/16(金) 16:13:30.13
一回一回cvReleaseMemStorageでメモリを解放すればいいんじゃないかな
641デフォルトの名無しさん:2011/09/16(金) 22:41:57.11
>>640
アドバイスありがとうございます。
言われた通りに1回1回メモリ開放すればずいぶん長く起動できる
ようになりました。

ところで、カメラが家に2つあるので両方ためしたのですが
1つは正常に動作
もう1つはメモリの不正アクセスでエラー
となるのですが、カメラによってプログラムの動作もやっぱり
大きく変わってくるのでしょうか?
642デフォルトの名無しさん:2011/09/17(土) 08:20:42.18
たとえばカメラが対応していない解像度を指定しちゃってるとか
cvSetCapturePropertyでカメラの縦横解像度を指定できる
643デフォルトの名無しさん:2011/09/17(土) 09:55:53.09
>>642
対応してない解像度を指定しているとは盲点でした。
アドバイスありがとうございます。

ですが解像度はどうやら関係ないようでした。
FPSも関係ないようです。

ドライバの問題でしょうか?
ちなみにエラーするカメラは「ps3Eye」でドライバは有志のかたがたが
作られたものです。

644デフォルトの名無しさん:2011/09/17(土) 15:09:28.50
>>643
alexpのドライバは1年半前あたりの奴は安定性に問題があったけど今は改善されてる気がする。

これ使ってる?(左下のCL Eye Platform Driver)
http://codelaboratories.com/downloads/
645デフォルトの名無しさん:2011/09/17(土) 16:16:18.53
>>644
それ使ってます。
646デフォルトの名無しさん:2011/09/17(土) 17:03:40.39
質問です。
http://opencv.jp/sample/estimators.html#condensation
のサンプルコードをVC++で実行すると
'System.NullReferenceException' のハンドルされていない例外が .exe で発生しました。
追加情報: オブジェクト参照がオブジェクト インスタンスに設定されていません。
というエラーがでてしまうのですがどこか間違っているのでしょうか。
初歩的な質問で申し訳ありませんがよろしくおねがいします。
647デフォルトの名無しさん:2011/09/17(土) 17:34:17.10
>>645
だとすると何とも・・・
まあOpenCVのキャプチャコードは大してまともじゃないということと、
フリーのドライバだけに完璧じゃないということもあるし。

解決可能かどうかはともかくだけど、プログラム的には、どういう条件で起きるか、
例外がどこスレッドで、どこのメモリで、どういうスタック状態で起きているのかを精査するのは無駄ではないはず。

画像キャプチャ部分だけ他のライブラリ使う手もある。
648デフォルトの名無しさん:2011/09/17(土) 18:05:01.37
>>646
画像を表示させたりとか基本的なところは実行出来てるんだよね?
649デフォルトの名無しさん:2011/09/17(土) 20:14:13.84
>>648
USBカメラを選択したあとでエラーがでます。
少し調べたところ
1フレームキャプチャし,キャプチャサイズを取得する.
のあたりが問題なようですがよくわからなくて困っています。
650デフォルトの名無しさん:2011/09/18(日) 00:22:28.40
>>647
なるほど、確かに精査することで得るものもありそうですね。
ちょっと調べてみます。
お付き合いいただきありがとうございました。
651デフォルトの名無しさん:2011/09/18(日) 00:44:33.80
まともなプログラムが書けてないのが問題だったでござるの巻
652デフォルトの名無しさん:2011/10/04(火) 17:31:22.62
ver1.1のcvSVDについてなのですが

int main (int argc, char **argv) {
CvMat *W = cvCreateMat (6, 3, CV_64FC1);
CvMat *U = cvCreateMat (W->height, W->width, CV_64FC1);
CvMat *sigma = cvCreateMat (W->width, W->width, CV_64FC1);
CvMat *V = cvCreateMat (W->width, W->width, CV_64FC1);

int i, j;

for (i = 0; i < W->height; i++) {
for (j = 0; j < W->width; j++)
cvSetReal2D (W, i, j, i*j);
}

cvSVD (W, sigma, U, V, CV_SVD_V_T);

return 0;
}

としたらうまく動作しますが、
653デフォルトの名無しさん:2011/10/04(火) 17:33:57.25

void factorization (CvMat *W, int frame_count, int final_count) {
CvMat *U = cvCreateMat (W->height, W->width, CV_64FC1);
CvMat *sigma = cvCreateMat (W->width, W->width, CV_64FC1);
CvMat *V = cvCreateMat (W->width, W->width, CV_64FC1);

cvSVD (W, sigma, U, V, CV_SVD_V_T);

のように関数にCV_64FC1型の行列Wを関数の引数とした場合

Sizes of input arguments do not match (U matrix has unappropriate size)
in function cvSVD,. \cxsvd.cpp(1334)

となりうまくいきません。

分かる方いらっしゃいますか?
654デフォルトの名無しさん:2011/10/04(火) 19:17:23.15
>>653
上のでもWをcvCreateMat (3, 6, CV_64FC1); にしたら通らないのでは
引数の行列のサイズが違うといわれているけど
655652:2011/10/04(火) 21:39:27.16
よくわかりませんが横長の行列の時に上手くいかないみたいなので
Wを転置行列にしてからSVDを行うことによって解決しました。
654さんありがとうございました。
656デフォルトの名無しさん:2011/10/05(水) 14:44:53.57
opencv2.3.0をCMakeを用いてインストールして、Visual Studio2010を用いてプログラムを書いてるのですが、エラーのせいで全然実行できません。
このサイト→(http://ameblo.jp/8810-008/entry-10976608820.html)を参照してインストールしたので、一応プロパティシートも変更したりしました。
以下にソースコードと、エラー内容を載せるのでどこを変更したらいいかご教授ください。

おそらくソースコード自体はO'RIELYの『詳解OpenCV』を元に書いてるのでとくに問題はないと思います。
実際に、OpenCVの別のバージョン(1.0、2.2)では問題なく実行できていました。
ただ、ver1.0や2.2(どちらもインストーラーファイルにてインストール)ではWindows7の64bitで使用した際に、webカメラを指定すると
一瞬で終了したり、真っ黒な画面が表示されたり、そもそもwebカメラが見つからないと言ったエラーが出てくるので、バージョンを変更しました。
2.0ではそれらの問題がないとのことでCMakeをもちいてインストールしたのですが、ソリューションのビルドをしたところ、highgui.libなどいくつかのlibファイルが
生成されないと言ったエラーが起こってしまい、結局できませんでした。
もし、最初の質問に加えて、これらの問題の解決策についても、ご存じの方がいらっしゃいましたらご教授お願いします。
(ちなみに、ver2.0は右記サイトを参照してインストールしました。→http://imagingsolution.blog107.fc2.com/blog-entry-149.html


使用PC
OS:Windows7 (64bit)
657デフォルトの名無しさん:2011/10/05(水) 14:50:30.78
#include"stdafx.h"
#include "highgui.h"
#include"cv.h"
#include"opencv2\\opencv.hpp"
#pragma comment(lib,"D:\\OpenCV2.3.0\\build\\lib\\Debug\\opencv_core230d.lib") // opencv_core
#pragma comment(lib,"D:\\OpenCV2.3.0\\build\\lib\\Debug\\opencv_imgproc230d.lib") // opencv_imgproc
#pragma comment(lib,"D:\\OpenCV2.3.0\\build\\lib\\Debug\\opencv_highgui230d.lib") // opencv_highgui
#pragma comment(lib,"D:\\OpenCV2.3.0\\build\\lib\\Debug\\opencv_objdetect230d.lib") // opencv_objdetect

int main( int argc, char** argv )
{IplImage* img = cvLoadImage( "D:\\OpenCV2.2\\Chrysanthemum.jpg" );
cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE );
cvShowImage("Example1", img );
cvWaitKey(0);
cvReleaseImage( &img );
cvDestroyWindow("Example1");}

エラー内容↓
D:\OpenCV2.3.0\include\opencv\highgui.h(45): fatal error C1083: include ファイルを開けません。'opencv2/core/core_c.h': No such file or directory
658デフォルトの名無しさん:2011/10/05(水) 20:24:06.16
>>657
C言語ならcxcore.hじゃないの
エラーはD:\OpenCV2.3.0\include\opencv2\core\core_c.hが存在するなら
D:\OpenCV2.3.0\includeにインクルードのパスが通ってないと思うけど

そのサイトはファイルを直接編集しろとか言ってるけど
普通はツール→オプション→プロジェクトおよびソリューション→VC++ディレクトリで設定する
659デフォルトの名無しさん:2011/10/06(木) 00:46:07.10
オープンCVをアンドロイドで使いたいんですが本気の初心者にもわかるような
ホムペはありませんか?
無ければわかるようになるまで学ぶ方法(ネット、本でもおk)を教えてください。
660デフォルトの名無しさん:2011/10/06(木) 00:52:59.75
とりあえずAndroidという事はおいといて、
やりたい事がPCで普通に出来るところまで勉強すれば。
661デフォルトの名無しさん:2011/10/06(木) 01:20:54.25
>>660
visual studioとか買った方がいいんでしょうか?
662デフォルトの名無しさん:2011/10/06(木) 01:32:10.22
Androidで動くようになるまで5年くらいかかりそうやね?w
とりあえずVSは無料版でOK
663デフォルトの名無しさん:2011/10/06(木) 02:11:06.58
>>658
返信ありがとうございます。
一応cxcore.hをもちいたり、highgui.hの方に変更したり、プリコンパイル済みヘッダーの使用(プロジェクトのプロパティより設定)を、使用(/Yu)から作成(/Yc)に切り替えたりと、
色々やってみたのですが、やはり前二者に関しては同じエラーが、後者に関しては、別のエラーが出てしまい解決に至らなかったのでおっしゃる通りパスの設定やcore_c.hの有無等を確認したところ
パスは、環境変数の設定で追加してあるのに加えて、VC++ディレクトリのインクルードの方にも追加したのですが、うまくいきませんでした。
そこで、core_c.hの方を探してみると、なぜか生成されておらず、恐らくこれが原因かと思われたので、同じバージョンのコンパイル済みファイル(OpenCV-2.3.0-win-superpack.exe)内の...\OpenCV2.3\build\include\opencv2にあったファイルを持ってきて
もう一度ビルドするとビルド自体はうまく行きました。

そこで、今度はデバッグしようとすると「opencv_core230.dllがないため、プログラムを開始できません。・・・・」といったシステムエラーメッセージが出てきてしまいました。
しかし、opencv_core230.dllを探したところ、ちゃんと存在しておりました。
このエラーはなぜおこるのでしょうか?
664663(660):2011/10/06(木) 02:27:06.86
すみません上の書き込みをしたものですが、文章が変ですね。

エラーの解決策をご教授いただけますでしょうか?
665デフォルトの名無しさん:2011/10/06(木) 02:32:13.16
>>662
ありがとうございます。
無料版もあるんですか。
やってみます。
666デフォルトの名無しさん:2011/10/06(木) 11:42:41.11
すみません、opencvをやるに当たってC++とかも学んだ方がいいのでしょうか?
667デフォルトの名無しさん:2011/10/06(木) 12:02:36.51
当然
まあCでも十分といえば十分だが
668デフォルトの名無しさん:2011/10/06(木) 13:04:26.49
C++の知識があった方が圧倒的に楽だな
669デフォルトの名無しさん:2011/10/06(木) 14:09:24.74
>>666
10年間C++をしっかり勉強してからOpenCVに手を出すのがいいと思う
670デフォルトの名無しさん:2011/10/06(木) 14:12:38.13
ラッパー使うならC#も有り
でもやっぱりソースコードが読めるくらいの知識は必要だったり
671デフォルトの名無しさん:2011/10/06(木) 14:16:07.85
>>663
環境が複雑になってそうだけど
ファイルがないのではなく、別のバージョンのヘッダーを読んでいるってことはないかな
インクルードディレクトリに複数のバージョンのOpenCVのincludeディレクトリが入ってるとか

dllのエラーはVC++ディレクトリの実行可能ディレクトリにdllがあるディレクトリを追加するか
dllがあるディレクトリを環境変数PATHに追加すればいいと思う
前者の場合、VC上から実行したとき以外はエラーになるだろうからPATHに入れるのがいいと思う
672デフォルトの名無しさん:2011/10/07(金) 23:11:56.99
質問させて下さい
環境:Android2.3.3 OpenCV2.3.1

Matで読み込んだ画像をcvFindStereoCorrespondenceGC関数の引数に使いたいんですが、うまくいきません

Mat* image_left = (Mat*)addr_left; // jlong -> mat
Mat* image_right = (Mat*)addr_right;

CvSize size = cvGetSize(image_left);
CvMat* disparity_left = cvCreateMat( size.height, size.width, CV_16S );
CvMat* disparity_right = cvCreateMat( size.height, size.width, CV_16S );
CvStereoGCState* state = cvCreateStereoGCState( 16, 2 );
cvFindStereoCorrespondenceGC(image_left, image_right, disparity_left, disparity_right, state, 0 );
cvReleaseStereoGCState( &state );

CvMat* disparity_left_visual = cvCreateMat( size.height, size.width, CV_8U );
cvConvertScale(disparity_left, disparity_left_visual, -16 );

Matは引数に使えないんでしょうか?適切な型がわかりません
どなたか教えていただけないでしょうか
673デフォルトの名無しさん:2011/10/09(日) 12:53:28.06
質問です。

Opencvのカスケード分類器を用いて顔の認識を行っています。
検出される各領域に付けられる、それぞれのスコア(検出度)を出力したいのですが、
どこを参照すればいいですか?

唐突な質問で申し訳ないですが、宜しくお願いします。
674デフォルトの名無しさん:2011/10/10(月) 01:33:41.70
>>673
分類器を全て通過したかしなかったかの2値だと思う
675デフォルトの名無しさん:2011/10/10(月) 20:48:24.39
>>673
cvhaar.cppのcvRunHaarClassifierCascadeのstage_sumでも返したらいいんじゃね?
676デフォルトの名無しさん:2011/10/16(日) 21:18:46.11
OpenCV 2.2 で mac OSXですが、VideoWriterがうまく動作しません。
ソースは以下のような感じです.
VideoWriter VideoWriter("out.avi",CV_FOURCC('D','I','B',' '), 30, Size(Width,Height));
while(true){
Mat img;
  //ここでimgをロード(省略)
  VideoWriter.write(img);
}
情報が少なくて申し訳ないですがよろしくお願いします.
677デフォルトの名無しさん:2011/10/17(月) 01:11:43.76
>>676
まずはどう動作しないのか、どういうエラーが出るのかくらい書こうぜ
678デフォルトの名無しさん:2011/10/17(月) 09:46:30.06
多分imgの解放してないから、メモリリークしてるだけだと思う
もしくは>>582-583
679デフォルトの名無しさん:2011/10/20(木) 17:55:46.97
opencvのインストール時にエラーが出て先に進まなくなってしまったので質問指せてください。

当方vmwareを使用してatde2(linux)環境でopencv2.0をインストールしようとしています。
opencvのmakeまではうまくいくのですがmake installを行おうとしたところ以下のようにエラーが出てしまい、うまくいきません。

[100%] Built target traincascade
Install the project...
-- Install configuration: "RELEASE"
-- Installing: /home/atmark/opencv/release/share/opencv/OpenCVConfig.cmake
.
.
-- Installing: /home/atmark/opencv/release/include/opencv/cvwimage.h
-- Installing: /home/atmark/opencv/release/include/opencv/cxflann.h
CMake Error at src/cv/cmake_install.cmake:48 (FILE):
file INSTALL cannot find "/home/atmark/opencv/release/lib/libcv.so.2.0.0".
Call Stack (most recent call first):
src/cmake_install.cmake:38 (INCLUDE)
cmake_install.cmake:47 (INCLUDE)

make: *** [install] エラー 1
root@atde:/home/atmark/OpenCV-2.0.0/release#


原因がわからず困っています、必要であれば他の情報もお伝えしますので分かる方いらしたらよろしくおねがいします。
680デフォルトの名無しさん:2011/10/21(金) 10:19:13.16
file INSTALL cannot find "/home/atmark/opencv/release/lib/libcv.so.2.0.0".

そもそもなぜ今頃2.0なのか
681デフォルトの名無しさん:2011/10/21(金) 19:05:10.73
>679
普通にconfigure && makeからmake install行けたんだが(なぜか*.so.4.0.0とかなったけど)
cmakeでもpython切って通したが(こっちはちゃんと*.so.2.0.0)

とりあえず、
1. そのパッケージを取ってきたところ
2. cmake .した結果
が知りたい
682デフォルトの名無しさん:2011/10/21(金) 23:52:50.13
やたら低いバージョンの質問してくる奴がたまにいるけど何なんだろな
なんかメリットあるんだろうか
683406:2011/10/22(土) 17:53:48.16
ひさびさにOpenCVを触ってみたら2.3でUVCがサポートされていて俺歓喜w
格安Webカメラを並べてモーションキャプチャに車輪の再発明承知で挑戦・・・
ただマーカーとかキャリブレーションの小道具とかUSBの延長とかやってるとKinectの値段を超えそうな…

もちろん、UVCがサポートされていなかった2.2以前でもDirectShow経由でUVC使用可にするサンプルや情報を
公開してくださった>>406のページのみなさんへの感謝は忘れない!これがなければ半年前に心が折れていた…
684デフォルトの名無しさん:2011/10/23(日) 22:57:27.16
opencvをアンドロイドで使いたいです
どうやって勉強したらいいのか教えてください
もう2カ月くらい頑張りましたができる気配がありません
当方初心者です。
685デフォルトの名無しさん:2011/10/23(日) 23:17:02.01
まず服を脱ぎます
686デフォルトの名無しさん:2011/10/24(月) 00:51:49.39
>>685
ぬぎました
687デフォルトの名無しさん:2011/10/24(月) 00:57:12.59
どんな初心者用のホムペを見てもよくわからん言葉が出てきて詰みます
どこか初心者でもおkな情報源ありませんでしょうか?
本も堆く積みあげられてます。
688デフォルトの名無しさん:2011/10/24(月) 08:58:41.25
ぐぐれ
689デフォルトの名無しさん:2011/10/25(火) 23:07:38.99
>>688
ぐぐってダメだからここで聞いたんだっての
また時間置いてぐぐって挑戦してみるわ。
690デフォルトの名無しさん:2011/10/25(火) 23:28:18.41
どんな本読んでるの?
日本語のOpenCV本って10冊もないでしょ?
全部読んでもわからないならあきらめたほうがいい。
691デフォルトの名無しさん:2011/10/25(火) 23:44:34.86
よくOpenCV初心者っていうやつはそもそもC/C++初心者だよな
OpenCV以前の問題であることがほとんど
692デフォルトの名無しさん:2011/10/26(水) 00:02:32.08
>>690
諦めきれない

>>691
そうなんだけどな。
でも他にどうしようもないわ。
693デフォルトの名無しさん:2011/10/26(水) 00:20:14.19
よくわからん言葉がどういうものか書けば、つまづいているレベルもわかるし
アドバイスもしやすくなる
694デフォルトの名無しさん:2011/10/26(水) 03:46:42.97
まず10年間C++を勉強します
695デフォルトの名無しさん:2011/10/26(水) 07:41:39.17
というか、アドバイスのしようがない。
プログラム暦というか、技量がわかるような記述が無いし。
何をしたいかも明確でない。ただの愚痴しか書いてないんじゃな。
696デフォルトの名無しさん:2011/10/26(水) 14:00:00.72
OpenCV 2.3.1 for Android がいい感じ - GeekleBoard
http://d.hatena.ne.jp/ksksue/20110724/1311505685

androidでOpenCV(環境構築編) ? Android
http://team-hiroq.com/blog/android/android_opencv_setup_environment.html

いくらでも出てくるのになぁ
つーかC++で無くてもJavaで直接動くんだから、これで使えないなら才能無いと思ってプログラムの世界から身を引いたほうが良い
697デフォルトの名無しさん:2011/10/26(水) 23:53:00.48
>>693
さんくす
またやる気が復活したら相談にくるわ。

>>694
sine

>>695
まぁ、愚痴だから・・・

>>696
(2)−8
gcc、make、cmake、libidn、swig、subversionが必要ですので、リストから選択してください。

ここで詰んだ
cmakeはわかったんだが他の奴をどう選択すればいいのかさっぱりわからん。。。
ちなみにプログラム歴はいまやり始めたところ。
昔エクセルのマクロに挫折した。
698デフォルトの名無しさん:2011/10/26(水) 23:53:41.37
>>696
ちなみに
androidでOpenCV(環境構築編) ? Android
http://team-hiroq.com/blog/android/android_opencv_setup_environment.html
こっちの話ね。
699デフォルトの名無しさん:2011/10/27(木) 00:02:04.91
>697
同じように選択すればいいと思うが
検索できるなら入力して見つければいいだろうし、Cygwinは知らんがGCCとかmakeはdevかなんかのグループにあるんじゃないかな
ひたすらリスト内から探してチェック付けてインストール

まぁ、Linuxなりなんなりでやった方が楽と思う
700デフォルトの名無しさん:2011/10/27(木) 02:37:51.86
>>696 の前者がそのまますぎて詰まりようがない、こっちのがいいと思う
確か今のandroid SDKのえみゅってWindowsとLinux限定でWebカメラに対応したんだっけ?
だったら下手したら実機無しでもさくっと出来るね
701デフォルトの名無しさん:2011/10/27(木) 12:49:15.56
>>697
>gcc、make、cmake、libidn、swig、subversionが必要ですので、リストから選択してください。
>ここで詰んだ
あーそれはLinux環境で10年間C++を勉強するしかない
まずバージョン管理しながらコードを書いて
きちんとしたビルドシステムが使えて
ジェネレーターを使って他スクリプト言語へのバインディングも作れるようになる

その過程で全てが分かるであろう
702デフォルトの名無しさん:2011/10/27(木) 13:27:25.24
C++信者怖い
703デフォルトの名無しさん:2011/10/27(木) 21:12:19.21
>>701
そりゃわかるだろうなw
704デフォルトの名無しさん:2011/10/27(木) 22:45:44.97
Octave(MATLABのほぼコンパチフリー版)からたたくってのはどう?
ttp://www.kkaneko.com/rinkou/octave/

俺が勤めてた会社の先輩で、脱サラしてどこかの教授になった人は
MATLAB使えてもCは使えなかったみたいだし。
705デフォルトの名無しさん:2011/10/28(金) 00:16:34.74
2.2でUSBカメラ(インストーラつき)で映像を取り込もうとしたのですが、
TVチューナーが優先的に認識されてしまいます。
認識するカメラを直接指定することは可能ですか?
(cvCaptureFromCAM(0) の引数を変更するだけでは駄目でした)
706デフォルトの名無しさん:2011/10/28(金) 00:36:27.53
今気づいたけどcvCaptureFromCAMってcvCreateCameraCaptureを#defineしてるだけか。

自分の環境(2.3.1)ではcvCreateCameraCapture(int index)のindexで指定できてますね。
0指定だと別のカメラ(TVチューナ)が、1指定なら何も表示されないってパターンのときは、
一度Microsoft Expressionで当該カメラの画像を表示してやるとなぜかその後うまくいくことがしょっちゅうです。
707デフォルトの名無しさん:2011/10/28(金) 00:53:13.53
Expression Encoderじゃなくてもいいですが、一般のUSBカメラを使うアプリ(ドライバ付属のもの以外で)で
使えるかどうかを…切り分け済みならすみません。
自分はWebカメラが安物のせいかよく繋ぎ直しで認識させてます。
あと幅高さを320x240にしてみるとかですかね。ただ幅高さは変な値を入れても
勝手にサポートしている近い値に修正される節があるので、原因とは考えにくいですが。
708デフォルトの名無しさん:2011/10/28(金) 00:56:58.72
>>706
0指定=>TV
1指定=>コンソール上に『映像を取得できません』とポップアップで
『5-3.exe の 0x004122a3 でハンドルされていない例外が発生しました:
0xC0000005: 場所 0x00000020 を読み込み中にアクセス違反が発生しました』
というエラーが出ます。

Microsoft Expressionで当該カメラの画像を
表示してみた後でも同様でした。
開発環境はVisualStudio2010です。
709デフォルトの名無しさん:2011/10/28(金) 01:06:21.04
>>707
先走って書いてすみませんでした
他のアプリでは動作確認済みです。
先程から助言ありがとうございます!
710706-707:2011/10/28(金) 01:08:23.86
>>708-709
いえ、力になれずに申し訳ないです。
http://opencv.jp/sample/video_io.html#capture
にある「カメラからの画像キャプチャ」のサンプルで引数を1にして動かないなら俺レベルですとお手上げです。
EEで表示できてるということはカメラ側orドライバ側の問題とも考えにくいですよね。
711デフォルトの名無しさん:2011/10/28(金) 01:16:28.21
>>710
ARToolkitの開発でこのカメラを使用した際も、TVチューナーが優先認識されてしまったのですが、
そのときはhttp://kougaku-navi.net/ARToolKit.htmlを参考に
入力カメラを直接指定することで解決しました。
OpenCVでも同じことができればよいのですが
712デフォルトの名無しさん:2011/10/28(金) 06:45:17.06
Windows版OpenCVでステータスバーやボタンなどQTを用いた機能を使いたいのですが、どうやればいいのですか?
QTを別途インストールが必要?
713デフォルトの名無しさん:2011/10/28(金) 10:11:36.03
C言語の質問スレでスレ違いだと言われたので、こちらで質問させてください
OPENCVを利用したプログラムで以下のURLの画像のような、元々の白黒画像を白と黒の輝度値を表示した画像に変換したいのですが
どうしていいか全く分からなくて、困っています
http://mcm-www.jwu.ac.jp/~physm/buturi07/robo/genri02.html
私の浅知恵のせいか、ネットで検索しても、よく分かりませんでした
714デフォルトの名無しさん:2011/10/28(金) 10:29:47.62
1. 入力画像を読み込む。
2. 入力画像の各ピクセルにアクセスして輝度値を得る。
3. 新たに作った出力画像の対応する位置に輝度値を描画する。
4. 出力画像を保存する。
おしまい。
715デフォルトの名無しさん:2011/10/28(金) 14:12:50.39
openCVを使うまでも無いな
716デフォルトの名無しさん:2011/10/28(金) 23:24:58.58
705です
デバイスマネージャでTVチューナーを無効化することで
USBカメラが優先認識されるようになりました(そらそうか)
717デフォルトの名無しさん:2011/10/29(土) 09:57:32.48
>>712
どっちかというとQtベースでOpenCVを使うって感じじゃないのか
718デフォルトの名無しさん:2011/10/29(土) 10:49:22.82
719デフォルトの名無しさん:2011/10/30(日) 01:04:12.02
常にデスクトップを監視して
image.bmp(デスクトップの背景画像の一部をトリミングした画像)が含まれているかを
認識し、ウインドウなどが開かれてそのimage.bmpの部分が隠れてしまった場合を取得したいのですが
どのようにすればよろしいでしょうか?常にデスクトップを監視してimage.bmpと比較する方法がわかりません・・・。
開発環境 VC++2010
720デフォルトの名無しさん:2011/10/30(日) 01:09:51.34
2乗誤差とかテンプレートマッチングはコスト高いから特徴量作れば楽かな
トリミングしたところの座標が分かればもっと楽だが
721デフォルトの名無しさん:2011/10/30(日) 17:11:43.91
>>712
以前 OpenCV 2.3.0 で試したことあるけど、Windows用バイナリ配布版では使えなかった。
でも、自分でOpenCVをビルドしたら使えるようになったよ。
1) QT libraries をインストール
2) OpenCV のソースコードを用意してCMakeを起動し、Qtを使うよう設定
3) C++コンパイラでビルド
4) http://opencv.itseez.com/modules/highgui/doc/qt_new_functions.html を試す→OK
722デフォルトの名無しさん:2011/10/31(月) 18:26:33.18
>>719
隠れた部分にはそもそも何も描かれていないのかも。
723デフォルトの名無しさん:2011/10/31(月) 18:31:27.40
シュレッダー文書、復元できたら380万円
http://www.yomiuri.co.jp/science/news/20111029-OYT1T00757.htm

OpenCV使って誰かやってみて。
724デフォルトの名無しさん:2011/11/01(火) 00:10:21.02
>>723
18歳以上の米国永住の人間が、はたしてこのスレにいるのか?
725デフォルトの名無しさん:2011/11/01(火) 01:17:09.50
ジグソーパズルはNP完全問題だって聞いたことがあるな。

ジグソーパズルはピースの境目が手がかりになるけど、
シュレッダー文書は、運がよければ文字が切れるが
運が悪ければ文章か単語の境目で切れるから
文脈の判断まで必要か。おまけに全部同型の長方形。

イランのアメリカ大使館のシュレッダー文書を、
ペルシャ絨毯織る女性たちが復元したころは
シュレッダーも単に縦に紙を切るだけで、横には切らなかったんだよね。
726デフォルトの名無しさん:2011/11/01(火) 02:00:45.94
データ見たけどかなり難しいと思うよ
727デフォルトの名無しさん:2011/11/01(火) 06:09:14.60
キャリブレーションで使うチェスボードのいい作り方って何かありませんか?

キャリブレーションパラメータ取得と歪み補正やってみたら逆に魚眼レンズに近づいたワロタ

(1) 内部点のサイズが4x5
(2) 液晶モニタに表示させたチェスボードを撮影
(3) パラメータ取得に使った画像数は16枚(解像度は800x600)
(4) 1000円のUSBカメラを使用
と手を抜いている部分が多々あるので仕方ないのか。

公式ページのサンプルコードでは(1)は10x7、(3)は25枚なんだけど
(3)はどうにでもなるとして、(1)を10x7にするとなかなか認識してくれない…
モニタではなく紙に印刷したチェスボードを撮影すると、紙の凹凸のせいかやっぱり認識されにくい。
用紙の特定の箇所に黒インクが集中するから波打つんだよなぁ。レーザープリンタ使えってことか。
ちなみにcvFindChessboardCorners()のflagsはCV_CALIB_CB_ADAPTIVE_THRESH|CV_CALIB_CB_FILTER_QUADS。
728デフォルトの名無しさん:2011/11/01(火) 09:21:20.12
実物でボード作りたいなら印刷屋に頼むのが手っ取り早いし
自分で紙に印刷するよりずっと信頼できるものができるよ.
モニタにパターン表示するのは(カメラ画像にフリッカーが写る場合があるのが難点だが)
特徴点が取れているならばそれでいいと思う.

校正精度が出ていないのは
多分,撮影の仕方の方に問題があるのではないかと予想.
全体的な特徴点分布を考慮して撮影するといい.

あと,安物のUSBカメラは
・触るとレンズvsセンサ面の位置がずれるものがある
 →撮影画像間でずれてたら意味なし.
  ずれてしまったら校正計算結果も無に帰す
・動体歪がすごい
 →カメラを安置した状態で撮影すること.
  手に持って撮影とかするとぐにゃぐにゃの絵が撮れてしまう
といったことに気をつけないとですよ.

経験的にcvFindChessboardCornersは明暗にそんなに強くないっぽいので
うまく点が取れない場合,前処理として自分で2値化した画像を渡したほうがうまくいく感じ.
729727:2011/11/01(火) 21:07:02.56
>>728
うおおおアドバイスてんこ盛りでありがとうございます!

印刷屋さんにお願いするのは費用的に最後の手段にしたいですね…。
でも時は金なりと考えるとアリかもしれませんね。

触ってレンズ・センサがずれるなんてことがあるとは…可能性が十分ありそうな価格でしたが
対策が思い浮かばないのでとりあえず、大事に扱う・祈る、を実践します。

そしておっしゃるとおり手でカメラを持って上下左右にかざしていたので、
動体歪みがすごいことになっているということだと思います。
(なるほど…すばやくカメラを動かしたときに長方形がサザエさんの
EDの家みたいに歪むのは動体歪みというものなんですね。)
アーム・三脚の代わりになるようなものを考えてみます。

ADAPTIVE_THRESHという賢そうな(?)オプションを渡していたので、てっきり俺レベルがちょっかい
出して良くなるものではないと思い込んでました。が、前処理をはさんで認識の頻度が上がれば
読ませる縦横コーナー数も増やせて良いこと多そうですね!2値化を試してみます。

「intrinsicは有効数字3桁ほどあるっぽいからこれだけ使ってdistortionはなかったことに…」と
妥協の道を進みそうになっていたところを救ってくださってありがとうございます!
730デフォルトの名無しさん:2011/11/02(水) 01:26:14.76
cvFindContoursで輪郭線を見つける場合って輪郭を追跡する開始座標は指定できますか?
例えば輪郭を見つけたい対象物の一番左の座標から開始するとか。
731デフォルトの名無しさん:2011/11/02(水) 01:36:30.52
できる。
732デフォルトの名無しさん:2011/11/02(水) 02:23:21.17
>>731
良ければ方法を教えて下さい。
よろしくお願いします。
733728:2011/11/02(水) 09:49:08.54
>729
distortionがあまり問題にならない{カメラ,アプリ}ならば無視するのもアリかな.

パターン撮影時は,N枚の画像から得た特徴点データをすべて纏めてみたときに
・特徴点が画像縁ぎりぎりまで存在すること
・特徴点分布が偏らないこと(画像中心側に多い とか 画像右側に多い とかはよくない)
に注意する.
・パターンとの距離も画像によっていろいろ変えるべき
という記述もどっかで見たことある気がするけど,これは本当かどうか不明.

2値化は画像次第だけど,特に,撮影画像上でパターン面の明暗変化があるような場合では,
cvAdaptiveThreshの結果を確認しながら自分で満足のいく結果を作ったほうが結局近道になると思う.
(その際フィルタ半径はデフォルトを使わずにかなり大きめに(チェスの四角が数個入るくらいに)するといいよ.)

あとは,やってると思うけど,コーナー点座標をサブピクセル精度にRefineする関数に
cvFindChessboardCornersの結果を食わせると良いかも.
734679:2011/11/02(水) 16:29:48.53
>>679
大変遅くなりました。
いまだに解決できていないので再度質問です。
基本的に以下のサイトを参考に同様のことをしようとしてるのですがうまくいっていないのが現状です。
ttp://www.kimura-lab.net/wiki/index.php/OpenCV%E3%82%92suzaku%E3%81%A7%E4%BD%BF%E3%81%86#SUZAKU.E3.81.A7.E3.81.AE.E5.AE.9F.E8.A1.8C

>>681
パッケージをとってきたところはcmake公式サイトとopencv公式サイトです
色々とバージョンをかえても発生するのでopencvのインタラクティブでの設定がおかしいのでしょうか・・
735679:2011/11/02(水) 17:51:05.00
色々やってみたらインタラクティブの各種設定ぽいことがわかりました。
どこが原因か何度か試してみます、いた汚し失礼しました。
736デフォルトの名無しさん:2011/11/02(水) 22:10:57.54
>>721
大方その手順で出来ました。有難う。
でも、かなり面倒だった。
737727:2011/11/02(水) 23:25:51.16
>>733
またまたアドバイスありがとうございます!

>distortionがあまり問題にならない{カメラ,アプリ}ならば無視するのもアリかな.
言われてみれば、カメラについては問題になりそうではありますが、アプリにとっては効果が薄いかもしれません。
というのもアプリは複数台カメラによるマーカー認識+3次元座標推定を考えていて、
マーカー認識時の誤差がレンズ歪みによる誤差を大きく上回るかもしれないからです。
ですので一度最後までやってみてどこの誤差が精度に最も影響しているかを判断したいと思います。

特徴点分布の広がりや偏りは気を払っていませんでした。
枚数を増やしつつこれらに気をつけようと思います。
距離も離れると認識してくれないので近くで済ませたものが多かったです。

さっそくcvAdaptiveThresh()やってみました。フィルタ半径を大きくしないと中に穴が空いちゃうわけですね。
現時点では(まだ三脚の代わりも用意しておらず)手探りで進んだり止まったりです。
まずは認識できるサイズを7x10かそれに近いサイズにしていきたいと思います。
あとアングル決めでのプレビューは前処理のみにして作業時のフレームレート低下を防ぎ、
アングル決定後にチェスボードを認識、という方法で進めていこうかなと思いました。

サンプルコードそのまんまですが、cvFindChessboardCorners()の結果をcvFindCornerSubPix()に渡してはいます。
ご丁寧なお心遣いありがとうございます!
738デフォルトの名無しさん:2011/11/04(金) 18:38:15.44
質問させてください。
cvConvexityDefectsはCvConvexityDefect構造体のシーケンスを返すとのことですが、
このcvConvexityDefect構造体のメンバにアクセスするにはどうしたらよいのでしょうか。
よろしくお願いします。
739デフォルトの名無しさん:2011/11/08(火) 02:35:16.22
これ使ってみたいんだが、だれか持ってない?

ttp://d.hatena.ne.jp/moriyoshi/20070324/1174687182
740デフォルトの名無しさん:2011/11/08(火) 07:52:17.28
何を?ビヨンセの動画?
741デフォルトの名無しさん:2011/11/08(火) 08:40:03.78
>>739
ライブラリのリンクが切れてるってことだろ
そんなの使わなくても php opencv でググればいくらでもあるだろ
742デフォルトの名無しさん:2011/11/10(木) 11:54:34.67
なぜOpenCVには配列にアクセスするための
cvGet2DとかcvGetReal1Dといった関数があるのだろう。
普通に配列にアクセスするのと違いでもあるのかな。
743デフォルトの名無しさん:2011/11/10(木) 14:31:14.66
>>742
SSEではメモリのアライメントを16バイトにする必要があって
最適化するためにはパッディングがいる。
そうすると普通の2次元配列では隙間が開いてアクセスしにくいので
accessorを通すようになる。
また範囲をはみ出したアクセスを検出してデバッグ時に警告出したりするためにラップしとく便利。
他にもIplImageとCvMatを同じように扱いたいとか持っているデータがfloat,double,intなどの場合があって1要素のサイズが違うので型を意識してアクセスするのがだるいとか。
744デフォルトの名無しさん:2011/11/10(木) 16:55:01.20
>>743
ははー、すごすぎて私の理解を超えかかってしまっているのが
我ながら情けないですが、
なんとなくわかりました。
いろいろと効用があるんですね。
詳しく答えていただいて本当にありがとうございました。
745デフォルトの名無しさん:2011/11/15(火) 21:13:58.67
kinectを使ってオプティカルフローをしようとしているのですがうまくいきません
capture.retrieve(cap, CV_CAP_OPENNI_BGR_IMAGE);でカラーイメージを取得した後
cap >> Img;でフレームを取得しようとしたのですが
型 'cv::Mat' の左オペランドを扱う演算子が見つかりませんというエラーが出てきて取得できません
vc++とopencv2.3、openniを使っています
フレームを取得するにはどうすればいいでしょうか
746デフォルトの名無しさん:2011/11/16(水) 00:53:01.25
質問するなら変数の型ぐらい書こうぜ
747デフォルトの名無しさん:2011/11/16(水) 08:44:23.45
>>746
あっとすみません!
capとImgどちらもcv::Matです
748デフォルトの名無しさん:2011/11/16(水) 13:07:08.77
カラーイメージを取得した後、フレームを取得するにはどうすればいいでしょうかって、
フレームってなに?
749デフォルトの名無しさん:2011/11/17(木) 14:06:43.74
普通は動画の1画面
fpsとかでググれ
750デフォルトの名無しさん:2011/11/17(木) 14:16:44.74
既に取得済みのカラーイメージとなにが違うの?
751デフォルトの名無しさん:2011/11/17(木) 14:55:32.18
厳密に言えば違うけども、普通に考えれば同じかと
どの命令を実行してそのようになったのかエスパーじゃないからわからんが、
動画か連続撮影になってて次の画像を要求しているんじゃないかと妄想してみる
IplImageは表示出来たのか?
752デフォルトの名無しさん:2011/11/18(金) 00:55:13.46
OpenCVはそこそこ使いやすいけどkinectをきっかけとして初めて触るという状態で
使いやすいというほどにはわかりやすくないよね.

cv::Mat を使った簡単な画像ビューワでもつくってみて慣れるべきじゃないかな.
753デフォルトの名無しさん:2011/11/18(金) 09:17:20.48
画像処理の基礎知識すらないゲヲタが、
いきなり3次元処理しようとしてわけわからんとか言ってるだけにしか見えないんだけどね
754デフォルトの名無しさん:2011/11/18(金) 11:00:18.03
画像処理の基礎知識すらない人がそこそこ使えるというのがOpenCVの素晴らしさだと思っていたけど
基礎知識以前の基礎知識がなければなるほど使えるわけもないな。
755デフォルトの名無しさん:2011/11/19(土) 14:28:03.48
>>754
画像処理の詳細知識がなくても使えるのがOpenCV。基礎知識がないとまともには使えない。
画像処理の基礎知識がなくても使えるのはImageMagickとか
だと思う
756デフォルトの名無しさん:2011/11/19(土) 14:55:22.67
とりあえずコンピュータビジョンやる前に、画像処理は学んでおいて欲しい。
OpenCVの画像処理系の関数を片っ端から試してみるくらいはね。
757デフォルトの名無しさん:2011/11/19(土) 15:55:27.39
知識たって大したものは無いからすぐできるよ。それよりフーリエ変換・展開をしらなかったりしたらそっちの方が大変だろうね
>>754
758デフォルトの名無しさん:2011/11/19(土) 16:29:06.89
大変だろうね
759デフォルトの名無しさん:2011/11/19(土) 17:06:44.14
いまどきフーリエ変換なんて使わないだろ
760デフォルトの名無しさん:2011/11/19(土) 21:02:00.13
>>759
直接つかわないにせよ色々な基礎知識として必要.「高周波成分」とか「直流成分」なんて言葉が
フーリエと全然関係ない分野で記述用語として使われるから.
761デフォルトの名無しさん:2011/11/19(土) 21:23:32.94
なんでだ?2.0をCMake2.8.6つかってビルドしたんだが、visualstudio2010でソリューションのビルド
をしても、cv200d.dllとかhighgui.dllとかが生成されないんだが・・・。

同じようなエラーが起こった人はどんな対処をしたのか教えてください。

os:windows7 64bit
762デフォルトの名無しさん:2011/11/20(日) 11:52:49.40
>>761
VisualStudioを「管理者として実行」してみた?
763デフォルトの名無しさん:2011/11/21(月) 06:58:54.00
MSのLifecam studioとかロジのC910とかソニーのPSeyeって60fpsで撮影できるらしいけど
OpenCVでも60fpsで撮影できるのかな?
できるならどれか買うんだが。
764デフォルトの名無しさん:2011/11/21(月) 16:26:31.06
俺が過去にモノクロVGAで試した時は、30fpsは出来たけど、300fpsは出来なかったなー
まぁお遊びだったし環境もバージョンも変わったから聞き流してくれ
765デフォルトの名無しさん:2011/11/21(月) 17:02:07.04
>>762
返信ありがとうございます。
一応さっき帰ってきてからもう一度やりなおしててみたんだが、やはり生成されない・・・。
Debug、Release共に.pdbという拡張子のファイルではhighguiだったりcv200だったりは存在するんだが・・・
766デフォルトの名無しさん:2011/11/21(月) 17:18:23.71
エラーが起きたのならエラーメッセージを書け。
ソリューションの設定でdllの生成場所を確認せよ。
767デフォルトの名無しさん:2011/11/22(火) 23:19:13.57
>>766
エラーメッセージ書かないでクレクレとか意味不明ですよね。すみません。

エラーメッセージは
error C3861: 'back_inserter': 識別子が見つかりませんでしたC:\Users\○○\Desktop\OpenCV2.0\src\cv\cvmodelest.cpp
error C3861: 'back_inserter': 識別子が見つかりませんでしたC:\Users\○○\Desktop\OpenCV2.0\src\cv\cvmodelest.cpp
error LNK1104: ファイル '..\..\lib\Debug\cv200d.lib' を開くことができません。C:\Users\○○\Desktop\OpenCV2.0\build\src\highgui\LINK
の3種類でした。

一応参照までに下のアプロダにエラー画面を画像で貼りつけました。
http://uproda.2ch-library.com/lib455135.jpg.shtml

インストールの際に参考にしたHP↓
http://imagingsolution.blog107.fc2.com/blog-entry-179.html

768デフォルトの名無しさん:2011/11/22(火) 23:37:33.73
lib ファイルが作られてないのかな
769デフォルトの名無しさん:2011/11/23(水) 00:02:41.70
>>767
STLでエラーが出てるな。

てかOpenMPはVCで標準で入ってると思うのだがなんでこの参考サイトはOpenMP入れてないんだろ。
770デフォルトの名無しさん:2011/11/23(水) 00:05:04.58
>>768
一応エラーメッセージ(上の画像はDebugのみですが)ではそのように表示されてますが、dllファイル自体も生成されていないです。
VC++ 2008 Expressで同様にCMakeを使用してインストールした場合にはうまくいきましたが、VisualStudio2010の場合はどうしてもうまくいかないみたいです。
771デフォルトの名無しさん:2011/11/23(水) 00:07:37.39
back_inserterが無いって言ってるんじゃない
openCV2.0が手元にないんだけど、多分
cvmodelest.cppのインクルードファイルに
#include <iterator>
を付け加えれば通りそうだけど。

つかOpenCV2.3.1使えばいいのに

772769:2011/11/23(水) 00:17:06.86
連投スマソ

>>767
ためしにこっちでもやってみたらこっちでもなった
結論から言うと
cvmodelest.cppとcvhog.cppで
#include<iterator>
すればいけた。

773デフォルトの名無しさん:2011/11/23(水) 00:38:15.57
>>769 >>771
早速の回答ありがとうございます!
指示通りやってみたところ望みのファイルDebugおよびReleaseがうまく作成されました。

OpenCV2.3.1のほうは一度試してみたのですが、ちゃんとPathが通ってるのになぜかリンクのエラーが出て
うまくビルドができないので、2.0でやり直してみることにした結果がこうなりましたww

恥ついでに教えていただきたいのですが、今回のエラーはどういう点がポイントだったのでしょうか?
774デフォルトの名無しさん:2011/11/23(水) 18:56:28.30
>>773
VisualStudioが2010になって<vector>や<algorithm>をincludeしても
<iterator>がincludeされなくなったみたい。
775デフォルトの名無しさん:2011/11/23(水) 20:11:08.04
>>774
ご返事ありがとうございます。
なるほど。つまりは仕様だったわけですね。
それで手動でincludeする必要がでてきたわけですね!

解決策だけでなく、原因についてまでおしえていただき、どうもありがとうございました!!
776デフォルトの名無しさん:2011/11/23(水) 22:16:15.76
リンカ、ローダ、実行時環境がらみの話ってのはみなさんどうやって勉強しましたか
777デフォルトの名無しさん:2011/11/24(木) 04:40:03.73
色々触っていく内に自然と。最初はboost系だったかな
778デフォルトの名無しさん:2011/11/24(木) 17:22:26.11
当方、OpenCVは愚か、C++プログラミングすら初心者なのですが、ご教授いただけると助かります。

http://opencv.jp/opencv2-x-samples/point-cloud-rendering
上記サイトのPoint Cloud Renderingに興味を持ち、当方のPCでも動かしたいと思い、
webページにあるサンプルプログラムをコピペし、動作を試みました。しかし、安定のエラーが…

環境はWindows 7(64/32 bit*両方で試しました)にVisual Studio C++ 2010 Expressを導入後、
OpenCV.ver2.3.1(*試行錯誤で他ver(2.3.0/2.3.1)なども試しました)を導入したという状態です。

肝心のエラー内容の詳細は以下です。
1.Win 7 32bitの場合:
[エラーメッセージ]
3D.exe の 0x7645fc56 でハンドルされていない例外が発生しました
: Microsoft C++ の例外: cv::Exception (メモリの場所 0x001adbb0)。

[呼び出し履歴]
→kernel32.dll!7645fc56()
 -[下のフレームは間違っているか、または見つかりません。kernel32.dll に対して読み込まれた シンボルはありません。]
 kernel32.dll!7645fc56()
 opencv_core231d.dll!50eeb1dc()

プログラムをコピペし、[デバック] > [デバック開始]をすると上記のような状態になり、進められません。
どのような原因が考えられるのでしょうか? またどういった解決法がありますか?
サイトのコメントにも書き込んだのですが、解決法の具体的な手法がよくわからなかったので、
ここでご返答賜りたく、書き込みました。長くなってすみません。どうかよろしくお願いします。
779デフォルトの名無しさん:2011/11/24(木) 18:58:44.73
>>778
OpenCV 2.2 だと動くっぽいよ
このサンプルが投稿された日にはまだ2.3.0出てないし
780デフォルトの名無しさん:2011/11/24(木) 20:38:20.29
>>778
呼び出し履歴のソースが読める範囲で最後はどこ?
781デフォルトの名無しさん:2011/11/24(木) 22:50:50.42
fopenのチェックとかをしていないから
画像ファイルがないとかじゃね
782デフォルトの名無しさん:2011/11/25(金) 00:52:43.68
vs2010だとプロジェクトフォルダが出来ると思うから、その中の.vcxprojがあるディレクトリに画像入れないと正常に読んでくれないかと
783デフォルトの名無しさん:2011/11/25(金) 00:59:39.06
やってみたら、画像等設定しても2.3.1だと同様のエラーが出て動かなかったが、2.2だと動いた。
784デフォルトの名無しさん:2011/11/25(金) 12:30:14.97
>>778です。
連投、申し訳ありません。記入漏れがあったので追記を…

2.Win 7 64bitの場合:
[エラーメッセージ]
3D.exe の 0x********(←忘れました) でハンドルされていない例外が発生しました
: Microsoft C++ の例外: cv::Exception (メモリの場所 0x00******)。

[呼び出し履歴]
→kernelbase.dll!********()
 -[下のフレームは間違っているか、または見つかりません。kernelbase.dll に対して読み込まれた シンボルはありません。]
 kernelbase.dll!********()
 opencv_core231d.dll!********()

Win 7 64bitの場合はメモリアドレス?とカーネルの参照が違っているだけかと(32版と64版は全くの別PCです複数台で試行しました)。

皆さん返信ありがとうございます!
>>779
2.2でやってみようと思います。
>>780
初心者でよくわかっていなくて…。メモリアドレスの最後値はどこまでか、ということでしょうか?
>>781,>>782
画像を用意していないため、でしょうか。用意してみます。
>>783
なるほど...。結局kernel辺りのエラーがなんなのかよくわかりませんね…
2.2なら問題ないのかな。
785デフォルトの名無しさん:2011/11/25(金) 17:29:27.17
>>778,>>784です。今日行って****値を調べてきました。

2.Win 7 64bitの場合:
[エラーメッセージ]
3D.exe の 0x75e7b9bc でハンドルされていない例外が発生しました
: Microsoft C++ の例外: cv::Exception (メモリの場所 0x0024c8fc)。

[呼び出し履歴]
→KernelBase.dll!75e7b9bc()
 -[下のフレームは間違っているか、または見つかりません。KernelBase.dll に対して読み込まれた シンボルはありません。]
 KernelBase.dll!75e7b9bc()
 opencv_core231d.dll!5877b1dc()

なんか再起動の度に値が変わっているような…、あまり重要ではないのでしょうか。

今日は時間が取れなくて、2.2での試行はまだ試せてはいません…
拙考なのでしょうが、結局、Kernel辺りを解決しないと同じような結果になってしまうのではないかと危惧していまして…
2.2ならその辺もまとめて解決してくれるのかなぁ…、とりあえず明日にやってみようと思います。
786デフォルトの名無しさん:2011/11/25(金) 17:36:45.57
>>780様へ
[呼び出し履歴] が表示してくれている文章?で最後の行はどこか、ということだったのでしょうか?
もしそうだとしたら、
[呼び出し履歴] は
 KernelBase.dll!75e7b9bc() ←ここから
 -[下のフレームは間違っているか、または見つかりません。KernelBase.dll に対して読み込まれた シンボルはありません。]
 KernelBase.dll!75e7b9bc()
 opencv_core231d.dll!5877b1dc() ←ここまで表示してくれています


ちなみにエラーを出したメモリアドレス近辺はこんな感じでした。意味ないかもですが…
 75E7B9B5 push eax
 75E7B9B6 call dword ptr ds:[75E7115Ch]
→75E7B9BC leave    //←ここでひっかかっている?
 75E7B9BD ret 10h
 75E7B9C0 int 3

*自動変数
名前   値    型
 EAX  0024C850   -
 EBP  0024C8A0   -
787デフォルトの名無しさん:2011/11/25(金) 18:15:54.96
どう見てもスタック破壊です。
788デフォルトの名無しさん:2011/11/25(金) 18:50:05.22
>>785

>拙考なのでしょうが、結局、Kernel辺りを解決しないと同じような結果になってしまうのではないかと危惧していまして…

ちゃんと動くこと確認して書いてるんだからとりあえず2.2でやってみなよ

落ちてるのはデバッガで少しづつ追っていけばcv::projectPointsだと思うが、原因はよくわかんね
Mat &から InputArray に変わったせいかもね
789デフォルトの名無しさん:2011/11/26(土) 16:57:44.19

>>786です。 >>788様へ
当方のために、わざわざ試行していただきありがとうございました!
ご指摘いただきました通り、2.2にて試行してみました。
インクルードは#include <C:\OpenCV2.2\include\opencv2\opencv.hpp>
ライブラリは必要なものがよくわからなかったので、
#pragma comment(lib,"C://OpenCV2.2//lib//opencv_core220d.lib")のように
libフォルダ内全てを読み込ませてみました。

内容は変化したものの相変わらずのエラーが…
1>sagi3D.obj : error LNK2019: 未解決の外部シンボル "void __cdecl cv::reprojectImageTo3D
(class cv::_InputArray const &,class cv::_OutputArray const &,class cv::_InputArray const &,bool,int)"
(?reprojectImageTo3D@cv@@YAXABV_InputArray@1@ABV_OutputArray@1@0_NH@Z) が関数 "void __cdecl stereoTest(void)"
(?stereoTest@@YAXXZ) で参照されました。
1>sagi3D.obj : error LNK2019: 未解決の外部シンボル "void __cdecl cv::projectPoints
(class cv::_InputArray const &,class cv::_InputArray const &,class cv::_InputArray const
&,class cv::_InputArray const &,class cv::_InputArray const &,class cv::_OutputArray const
&,class cv::_OutputArray const &,double)" (?projectPoints@cv@@YAXABV_InputArray@1@0000ABV_OutputArray@1@1N@Z)
が関数 "void __cdecl projectImagefromXYZ_<unsigned char>(class cv::Mat &,class cv::Mat &,class cv::Mat
&,class cv::Mat &,class cv::Mat &,class cv::Mat &,class cv::Mat &,class cv::Mat &,class cv::Mat &,class cv::Mat &,bool)"
(??$projectImagefromXYZ_@E@@YAXAAVMat@cv@@000000000_N@Z) で参照されました。
1>C:\Users\kanrisya\documents\visual studio 2010\Projects\sagi3D\Debug\sagi3D.exe : fatal error LNK1120: 外部参照 2 が未解決です。
790デフォルトの名無しさん:2011/11/26(土) 17:25:02.12
そりゃ実行時エラーじゃなくて、コンパイル(リンク)エラーですが..

ライブラリは
opencv_core220d.lib
opencv_highgui220d.lib
opencv_calib3d220d.lib
の3つ。
そのエラーはopencv_calib3d220d.libの#pragmaがないんじゃないの?
791デフォルトの名無しさん:2011/11/26(土) 18:01:17.32

>>790
返信ありがとうございます。見当違いなエラーを載せてしまってすいません…
教えて下さったように必要ライブラリを絞ってみました。
#pragma comment(lib,"C://OpenCV2.2//lib//opencv_calib3d220d")も追加です。
そして…

1>sagi3D.obj : error LNK2019: 未解決の外部シンボル "void 〜
1>sagi3D.obj : error LNK2019: 未解決の外部シンボル "void 〜
1>C:\Users\kanrisya\documents\visual studio 2010\Projects\sagi3D\Debug\sagi3D.exe : fatal error LNK1120: 外部参照 2 が未解決です。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

……
うぅ…

ちなみに、>>781-782とあったので、
画像をhttp://opencv.jp/opencv2-x-samples/point-cloud-rendering の上から7行目くらいにある"データセットダウンロード"
から、kinectdepth.raw 、 kinectimage.png 、 l.png 、 r.png の4つを
C:\Users\kanrisya\Documents\Visual Studio 2010\Projects\3D\3D *(.vcxprojがあるディレクトリ)に追加もやりました。
プログラム文内にも要求はあったんですね。見落としてました。

しかし、このエラーは一体なんなんでしょうか…?
792デフォルトの名無しさん:2011/11/26(土) 18:38:42.37
>>789 >>791
なんかInputArrayとかOutputArrayとか見えるけど、それは2.3.1から導入されたクラスなんで2.2で出てくるわけないんだけどな
インクルードファイルへ2.3.1のパスが通ってたりすんじゃない?プロジェクトのプロパティのVC++ディレクトリを見てみれば

エラーがなんなのかはLNK2019を調べればわかる
793デフォルトの名無しさん:2011/11/26(土) 18:39:29.94
リンクエラーだよ。
未解決の外部シンボル〜ってのは、使われてる関数の実体が見つからないってこと。
794デフォルトの名無しさん:2011/11/27(日) 03:25:56.96
ここ見れば何のlibをリンクさせればわかるよ
http://opencv.jp/opencv-2svn_org/cpp/
795デフォルトの名無しさん:2011/11/27(日) 03:28:33.74
失礼。させればいいかわかるよ
796デフォルトの名無しさん:2011/11/27(日) 15:42:51.17
>>791です。
>>792なるほど、2.3.1から〜なんてあったんですね。たしかにインクルードファイルパス(2.3.1)
通したままでした。これが原因だったのでしょうか。直してきます!

>エラーがなんなのかはLNK2019を調べればわかる
ふむ! エラーで調べる、ですね。なんだか難しそうな響きです…挑戦してみます!

>>793
む、むずかしいです… でもご教授ありがとうございます!

>>794-795
おお! これは便利そうですね。大いに活用させていただきます。
教えて下さってありがとうございます!

……英語…?


とりあえずLNK2019エラーまわりから調べてきます!
797デフォルトの名無しさん:2011/11/29(火) 10:58:11.72
>>796です。
1>sagi3D.obj : error LNK2019: 未解決の外部シンボル "public: void __thiscall cv::Mat::copyTo(class cv::_OutputArray const &)
 const " (?copyTo@Mat@cv@@QBEXABV_OutputArray@2@@Z) が関数 "void __cdecl eular2rot(double,double,double,class cv::Mat &)"
  (?eular2rot@@YAXNNNAAVMat@cv@@@Z) で参照されました。
1>sagi3D.obj : error LNK2019: 未解決の外部シンボル "void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits<char>
 ,class std::allocator<char> > const &,class cv::_InputArray const &)" (?imshow@cv@@YAXABV?$basic_string@DU?$char_traits@D@std
 @@V?$allocator@D@2@@std@@ABV_InputArray@1@@Z) が関数 "void __cdecl stereoTest(void)" (?stereoTest@@YAXXZ) で参照されました。
***以下似たようなのが8行ほど
1>sagi3D.obj : error LNK2001: 外部シンボル ""public: virtual class cv::Mat __thiscall cv::_InputArray::getMat(int)const "
  (?getMat@_InputArray@cv@@UBE?AVMat@2@H@Z)" は未解決です。
1>sagi3D.obj : error LNK2001: 外部シンボル ""public: virtual void __thiscall cv::_InputArray::getMatVector
 (class std::vector<class cv::Mat,class std::allocator<class cv::Mat> > &)const " (?getMatVector@_InputArray@cv
 @@UBEXAAV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@std@@@Z)" は未解決です。
***以下似たようなのが12行ほど
1>C:\Users\kanrisya\documents\visual studio 2010\Projects\sagi3D\Debug\sagi3D.exe : fatal error LNK1120: 外部参照 29 が未解決です。
=ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ =

もう一度新規プロジェクトを立ち上げて同様(おそらく…)にしてやり直してみました。なんかPC起動の度にエラーが変わるような気がします…
(前はLNK2019のみだったのに…)
LNK2019については自分なりに調べてみました。まぁ、それでもよくはわからなかったのですが…
結局、lib等のリンクがうまくいっていないために参照できないと言っているのでしょうか?
798デフォルトの名無しさん:2011/11/29(火) 11:03:58.50
必要なライブラリをリンクしてないだけだろ
799デフォルトの名無しさん:2011/11/29(火) 11:10:18.55
>>797です。
連投すみません。
気になったのですが、インクルードの設定は以下のみでよろしいのでしょうか?

#include <C:\OpenCV2.2\include\opencv2\opencv.hpp>

>>790様にご指摘いただきましたopencv_core220d.lib ,opencv_highgui220d.lib ,opencv_calib3d220d.lib
の各.libに対して以下のような入力が必要、そういったことは考えられるのでしょうか?
#include <C:\OpenCV2.2\include\opencv2\core\core.hpp>
#include <C:\OpenCV2.2\include\opencv2\calib3d\calib3d.hpp>
#include <C:\OpenCV2.2\include\opencv2\highgui\highgui.hpp>

他にもC:\OpenCV2.2\include\opencvにも各種.hファイルがあったのでそれも気がかりです。
初歩的な質問かもしれませんが、>>797の件、インクルードの設定、
どちらかお分かりの方で返答していただけると助かります。
800デフォルトの名無しさん:2011/11/29(火) 11:19:04.53
>>798迅速なご返答ありがとうございます!
なるほど、やはりそれ関連のエラーということですか…
このプログラム(>>778)に関して必要となる.libは>>790様から3つだと
教えて頂き、以下のように設定を試みました。
#pragma comment(lib,"C://OpenCV2.2//lib//opencv_core220d.lib")
#pragma comment(lib,"C://OpenCV2.2//lib//opencv_highgui220d.lib")
#pragma comment(lib,"C://OpenCV2.2//lib//opencv_calib3d220d")

しかしながら安定のエラーです…
もしかしてまだ足りない.libがある、ということなのでしょうか…
このエラーはリンク失敗・不具合のときに出るのでしょうか?
必要.libが足りないときに出るのでしょうか?
ご教授いただけると幸いです。
801デフォルトの名無しさん:2011/11/29(火) 11:32:23.05
いっそ全部リンクしてみたら?
バージョンは直してね

#ifdef _DEBUG

#pragma comment(lib,"opencv_core232d")
#pragma comment(lib,"opencv_imgproc232d")
#pragma comment(lib,"opencv_highgui232d")
#pragma comment(lib,"opencv_ml232d")
#pragma comment(lib,"opencv_video232d")
#pragma comment(lib,"opencv_features2d232d")
#pragma comment(lib,"opencv_calib3d232d")
#pragma comment(lib,"opencv_objdetect232d")
#pragma comment(lib,"opencv_contrib232d")
#pragma comment(lib,"opencv_legacy232d")
#pragma comment(lib,"opencv_flann232d")

#else
#pragma comment(lib,"opencv_core232")
#pragma comment(lib,"opencv_imgproc232")
#pragma comment(lib,"opencv_highgui232")
#pragma comment(lib,"opencv_ml232")
#pragma comment(lib,"opencv_video232")
#pragma comment(lib,"opencv_features2d232")
#pragma comment(lib,"opencv_calib3d232")
#pragma comment(lib,"opencv_objdetect232")
#pragma comment(lib,"opencv_contrib232")
#pragma comment(lib,"opencv_legacy232")
#pragma comment(lib,"opencv_flann232")
#endif
802デフォルトの名無しさん:2011/11/29(火) 15:59:18.90
これはひどいながれ
803デフォルトの名無しさん:2011/11/29(火) 16:13:52.45
>>797
だからOutputArrayが出てくるってことは2.3.1のインクルードファイルを読み込んでるんだって
ヘッダファイルは2.3.1なのにライブラリが2.2だから型の合う関数が見つからないってエラー出してるんだろう
804デフォルトの名無しさん:2011/11/29(火) 20:52:16.72
たぶんVC++ディレクトリのパスで2.3.1の方に通してると予想
わからなければ一度2.3.1の方アンインストールするといい
805デフォルトの名無しさん:2011/11/29(火) 20:55:51.97
でもこの人フルパスでインクルードしてるんでしょ?
806デフォルトの名無しさん:2011/11/29(火) 21:38:12.64
フルパスで指定した2.2のopencv2\core\core.hppの中からincludeされてる"opencv2/core/types_c.h"は
インクルードパスから検索されちゃうんじゃね
807デフォルトの名無しさん:2011/11/29(火) 21:41:46.84
なるほど。それかも。
808デフォルトの名無しさん:2011/11/29(火) 21:42:57.99
ていうか、ヘッダにしろライブラリにしろ、ソースの中にフルパスで書くとかワイルドすぎる
809デフォルトの名無しさん:2011/11/30(水) 03:15:00.18
研究者のコードでもMakefileに
gcc hoge.c -I/home/foobar/project/hoge -O2 hoge
とか書いてあることがある
おまえら気をつけろよ
810デフォルトの名無しさん:2011/11/30(水) 12:42:42.16
お前らが環境変数 Path あるいは PATH の事を教えてやらないからこうなった
811デフォルトの名無しさん:2011/11/30(水) 12:50:11.26
コンパイルも通ってないのにPATHなんて関係ないじゃん
つか>>767にあるインストールの際に参考にしたHPの影響だろう
812>>767:2011/11/30(水) 14:38:42.61
>>811
なんかすみません・・・www
813デフォルトの名無しさん:2011/11/30(水) 14:46:15.42
>>812
いやすまん、URL書きたくなかったんで767って書いちゃった
「OpenCV インストール」でググるとトップに出てくるししょうがないよ
814デフォルトの名無しさん:2011/12/01(木) 09:19:30.88
変形前画像と変形後画像の点対応から最小自乗法で変換パラメタを求めたい.
扱う変換は{X方向拡大,Y方向拡大,回転,並進}だけにしたい.
(Affine変換には歪(skew)があるが,この自由度はいらないので除きたい)

Affine変換なら線形な(cvSolveが使える)形の式にできるのですが,
上記の変換を考えると,そういう形の式にどうしてもできません…
なんとかして線形的に解く方法はないでしょうか?
815デフォルトの名無しさん:2011/12/01(木) 09:50:31.66
変換パラメータってどういう意味だ・・・?
角度θ、スケールn% とか?
その場合だと、変換の順番や数によって答えはいくらでも出てくるから、一意に求めるのは無理だよね。
816デフォルトの名無しさん:2011/12/01(木) 10:25:45.34
言葉が悪かったでしょうか.
要するに変換するために必要な値 です.

>角度θ、スケールn% とか?
のような個々の変形要素(?)毎の値が得られれば使いやすいですが,
 変換後座標ベクトルV' = 変換行列M * 変換前座標ベクトルV
のM(例えばAffine変換なら2*3行列)の要素値の形でも構いません.

817デフォルトの名無しさん:2011/12/02(金) 00:22:31.23
X方向拡大=x、Y方向拡大=y、 回転=r、 並進=[t1、 t2]としよう
M=[x*cos(r), -y*sin(r),t1]
  [x*sin(r), y*cos(r),t2]
2x2の成分を眺めると、M(2,1)/M(1,1)=-M(1,2)/M(2,2)=tan(r)だから
M=[a,b,c]
  [d,e,f]
拘束条件 a*b+d*e=0
として未知数6,拘束条件1のラグランジュ未定乗数法で解けば良い
818デフォルトの名無しさん:2011/12/02(金) 06:34:05.79
>>817
M=並進・回転・拡大
としたのはなぜ?
一般的ではあるけど。

shearってskewとも言うのか・・・
819814:2011/12/02(金) 09:33:31.28
>817
ありがとうございます…しかし
>ラグランジュ未定乗数法で解けば良い
の部分が具体的にどうやって解くのかわかりません…

調べて見ると,各変数で偏微分した結果の連立方程式を
パラメタベクトル P = [a,b,c,d,e,f](転置) として
 行列*P = λ*P
の形にして,λを最小固有値として解く,というのがあったのですが
どう頑張っても自分には↑のような形にできないのですが…
それとも他の解き方があるのでしょうか?

(あと,自分で考えた条件だと a*d+b*e=0 になったのですが同じこと?)
820デフォルトの名無しさん:2011/12/02(金) 11:31:40.55
cvFindHomographyじゃいかんの
821デフォルトの名無しさん:2011/12/02(金) 12:27:24.31
>820
Affine変換や射影変換ではなく,
変形を 並進・回転・拡大 だけに制限したいのです.
形が歪まないで欲しい(長方形は変換後も長方形)というか.

データの実際の変形はアフィン変換や射影変換だったとしても,
それをできる限り近似する 並進・回転・拡大 だけの変換 を得たいのです.
822デフォルトの名無しさん:2011/12/02(金) 17:15:27.85
変換前後画像の組の例をいくつかどこかにアップロードしたまえ。
それと、回転や拡大の操作の順序は決まっているのか、どうなのか。順序が決まっていて一回ずつなら、簡略化できるかもしれない。
823デフォルトの名無しさん:2011/12/02(金) 18:52:21.75
歪まないで欲しいなら、拡大率はXとYに分けちゃ駄目じゃないか?
それを分けたら、長方形が正方形や平行四辺形になったりするよ。
824デフォルトの名無しさん:2011/12/02(金) 20:21:33.65
OpenCVで画像処理を新しく勉強する予定の初心者です
Windows7(32bit) Visual Studio C++ 2008にOpenCV.ver2.1を入れている環境で
まずは簡単なエッジ抽出プログラムを組んでみようと思ってます
試しにttp://img10.shop-pro.jp/PA01048/330/product/7862124.jpgの服ボタンの画像を
bmp方式で保存した後に以下のようなソースコードで輪郭抽出を行った所、内部の輪郭も抽出されました
欲しい部分は外側の円部分であり、内部の余分なエッジを除去したいのですが何かいい手法はありますか?

IplImage* img = cvLoadImage("C:\\Users\\7862124.bmp", CV_LOAD_IMAGE_GRAYSCALE); //グレイスケール画像読み込み
IplImage* img2 = cvCloneImage (img);
cvSmooth(img,img2,CV_GAUSSIAN,5); //ガウシアンフィルタ
IplImage* img3 = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
cvCanny(img2,img3,50,200); //Cannyエッジ

cvNamedWindow("OpenCVTest",CV_WINDOW_AUTOSIZE); //画像出力用のウィンドウを作成します
cvShowImage("OpenCVTest",img3); //ウィンドウに画像を表示します
cvWaitKey(0); //何かキーが押されるまで待ちます

cvReleaseImage(&img); //リソースを開放します。
cvDestroyWindow("OpenCVTest");
825デフォルトの名無しさん:2011/12/02(金) 21:39:29.76
>>817
ラグランジュの未定乗数方使わなくても、
(a,d)固定して、(b,e)について最小化(これは行列演算で一発でとけるよね)
(b,e)固定して、(a,d)について最小化(これは行列演算で一発でとけるよね)
上を何回も繰り返す

ってのをやっても、2乗誤差なら最適解に収束するね。
ラグランジュ未定乗数法が謎で抵抗あるなら、こっちやれば?
826デフォルトの名無しさん:2011/12/02(金) 21:44:21.16
>>819
それはラグランジュの未定乗数法で目的関数を設計したら、たまたま固有値問題に帰着できる場合があるってだけ。
>>817の定式化では固有値問題にならないんじゃね。

もしくは、制約なしでMを学習したあとで、2x2の回転行列部分を強引に直行化しちゃえば?
微妙にゆがんでるだけなら、大体それでOKでしょ。
強引に直行化する方法は、↓にのってるよ。固有値分解できれば出来る。
http://home.hiroshima-u.ac.jp/tamaki/study/20090924SIS200923.pdf
827デフォルトの名無しさん:2011/12/02(金) 23:01:12.35
828デフォルトの名無しさん:2011/12/03(土) 00:26:44.10
今までは他の言語でやってましたがこの度C++を始めました
行列計算はOpenCVが便利だと聞きました
白黒のグレイスケール画像を左から見ていき初期変動部分だけ残すような計算がしたいです
少し見辛いですが下の左行列を右行列として変換するような感じです

0 0 0 1 0 0 0 0 1 0
0 0 1 0 1 0 0 1 0 0
0 0 1 1 1 → 0 0 1 0 0
0 1 0 1 1 0 1 0 0 0
0 0 1 1 0 0 0 1 0 0

行を左から走査していき最初に変動した列の値だけを残して
残りは全て0に変更して取り除くような演算を行いたいです
単純にfor文で組めばいいのでしょうか?
829デフォルトの名無しさん:2011/12/03(土) 00:45:31.34
うん
830デフォルトの名無しさん:2011/12/03(土) 01:16:39.80
>>829
では、最初の1はifで検出を行えばよいのでしょうか?
その後、その1以降を各行列にそれぞれ=0と指定し続ければいいのですか?
0 0 0 1 0 0 0 0 1 0
0 0 1 0 1 0 0 1 0 0
  ↓もし1ならば、↓残りは全て=0
0 0 1 1 1 → 0 0 1 0 0
0 1 0 1 1 0 1 0 0 0
0 0 1 1 0 0 0 1 0 0
といった感じで
831デフォルトの名無しさん:2011/12/03(土) 01:17:01.19
opencv関係なくね?w
832デフォルトの名無しさん:2011/12/03(土) 01:17:43.75
>>828
その処理内容に特化した関数は知らないしありそうにもないと思うので、単純にfor+memset()でいいと思います。
833デフォルトの名無しさん:2011/12/03(土) 01:22:27.04
なるほど
834デフォルトの名無しさん:2011/12/03(土) 01:37:56.72
>>814
線形一発とはいかないけど、非線形最適化をしない方法を導出してみた。
回転行列をR、スケール行列(対角行列)をS、平行移動ベクトルをt、変換前後の点iを前mi、後ni、点の数はN個、行列転置を'、逆行列をinv()、L2ノルムを|| ||で書くよ。

求めたいのは、誤差e= sum || R*S*mi+t-ni ||^2 を最小化するR、S、t。
まずeをtで偏微分すると、
de/dt = sum ( ni-R*S*mi-t )
de/dtはゼロベクトルだから、回転前後の重心をmg、ngとおくと
t=1/N*sum(ni)-1/N*RS*sum(mi)
=ng-R*S*mg ...(1)
tがRとSの関数であるので、RとSを求めて最後にtを求めることにする。

(1)をeに代入すると、
e=sum || R*S*(mi-mg)-(ni-ng) ||^2
pi=mi-mg、qi=ni-ngとおくと、
e=sum || R*S*pi-qi ||^2
835デフォルトの名無しさん:2011/12/03(土) 01:38:47.84
次にeをSで偏微分すると、
de/dS=S*sum(pi*pi')-R'*sum(qi*qi')
de/dSはゼロ行列だから、P=sum(pi*pi')、Q=sum(qi*qi')とおくと
de/dS=S*P-R'*Q=0
S*P=R'*Q
S'*S=inv(P')*Q'*Q*P...(2)
Sは対角行列だから、(2)の対角成分の平方根がそれぞれx,y方向のスケールに相当する。

次にS*P=R'*Qより
R=( S*P*inv(Q) )'
だけど、Rは行列式が1の直交行列だから
U*D*V'=( S*P*inv(Q) )'...(3)
と特異値分解して
R=U*diag(1,det(U*V'))*V'...(4)
が欲しい回転行列R。det(A)は行列Aの行列式で、diag(a,b)はaとbが成分の対角行列ね。
836デフォルトの名無しさん:2011/12/03(土) 01:39:33.92
RとSが求まったので、(1)に代入すればtが得られる。
計算順で行くと、(2)->(3)->(4)->(1)。

気をつけるのは、miとniにノイズが多いと(2)が必ずしも対角行列にならなくて、
誤差の大きいSからRとtを計算すると誤差の影響が大きくなっていく。
だからより高精度にしたいなら上記計算で求めたのを初期値にして非線形最適化かな。
837デフォルトの名無しさん:2011/12/03(土) 02:12:39.47
>>826の言うように、スキューがほとんどゼロの時にアフィン変換から強引に直交化する方法も考えてみた

最初にアフィン変換行列を求めて、その2x2の部分行列をMとすると、
e=||M-RS||^2 を最小化するRとSを求めることになる。平行移動はアフィン変換そのままを採用。
ここで|| ||はフロベニウスノルムね。

de/dS=S-R'*M=0だからS=R'*M
S'*S=M'*MよりM'*Mの対角成分の平方根をスケールにする。
R=inv(S)*MよりU*D*V'=inv(S)*Mと特異値分解して
R=U*diag(1,det(U*V'))*V'

こっちの方が楽だね。アフィン変換はOpenCVに求める関数あるし。
どっちの誤差が大きくなるかはわかんないけど。
ところで>>825って収束時に拘束条件満たすの?
838デフォルトの名無しさん:2011/12/03(土) 02:14:32.51
>>834-836
平行移動の自由度2、拡大縮小の自由度1(XYのスケールが同じ)、回転自由度1の4自由度だったら、
min|| q-Rp-t ||^2
を、Rとtについて解けばよい。
R=|x y|
|-y x|
とパラメタライズすればよくね?
839デフォルトの名無しさん:2011/12/03(土) 02:24:05.17
>>837

>>825が拘束条件満たすかということだけど、
(a,d)固定して、(b,e)について最小化をするときに、a,dが定数だから、b,eの1次等式制約になるでしょ。
eをbで表せば、目的関数が変数一個(e)の2次式になって、制約なしの形になる。
これなら極値は簡単に求まるよね。

目的関数が2次式の場合、等式制約を満たすように2変数ペアで動かしながら最適化つーのは、よくやるね。SVMとかでもやってる。
840デフォルトの名無しさん:2011/12/03(土) 02:49:39.79
>>838
それは普通の相似変換じゃん
814が欲しいものとは違う

>>839
そもそも最適解に収束することが約束されてんの?
もしかして交互法ってやつ?よく知らないから文献あったら教えて
841デフォルトの名無しさん:2011/12/03(土) 08:54:56.97
初期値(最適解じゃないところ)をf_0(R_0, t_0)とすると、一回の処理で、f_1<f_0になるから、2乗誤差=f(r, t)>0(すべてのR,tについて)だから、何回も繰り返せば、どっかに収束するんじゃね。

XYのスケール比率が強烈に違ったりしなければ、普通に良さげな解がでるんでね?
842デフォルトの名無しさん:2011/12/04(日) 02:34:43.41
たぶん実用上はほとんどないんだろうけど、局所解に収束しそうでなんか嫌だな
843デフォルトの名無しさん:2011/12/04(日) 06:16:21.97
>>842
そうだな。まぁ、2次の非線形制約が付いてる時点で、局所解があるからね。
ラグランジュの未定乗数法つかっても、そこは同じだし。

>>836も言ってるけど、この辺のやり方で初期値計算して、そっから先は反復計算するしかねーな。
844デフォルトの名無しさん:2011/12/05(月) 05:36:59.12
おまえらが何言ってるかサッパリわからんorz
その辺勉強したいんだけど、オススメの本があったら教えてくれ。入門的なの。
845デフォルトの名無しさん:2011/12/05(月) 08:21:28.29
微積分の入門書でもあされば良いんじゃないかね
数学の話はその人がどれだけの知識を前提にするかで全然違うから
846デフォルトの名無しさん:2011/12/05(月) 09:57:30.91
ぶっちゃけソースコードから学べる数学の本が欲しい
ソースなら読めるんだが、数式になると訳わからんw
847デフォルトの名無しさん:2011/12/05(月) 10:13:40.66
微積分か。読んだが身についてないな。
前提で違うのはたしかにその通りだ。でかい本屋に行ってじっくり探してみるよ。
848デフォルトの名無しさん:2011/12/05(月) 10:56:53.15
良書は重要だけど、まずは
二次計画問題、線形計画問題、整数計画法、非線形最適化
とかでぐぐってみては?
849デフォルトの名無しさん:2011/12/05(月) 11:55:29.76
>>846
Numerical Recipes in Cは?
850デフォルトの名無しさん:2011/12/05(月) 22:44:18.60
Numerical Recipes はあまりいいコードとは言えないと思うけど。
あくまで理論と実装の確認に使うだけならオススメ。
851デフォルトの名無しさん:2011/12/06(火) 13:59:05.34
離れた並行ではない二線の延長上の交点を求めたいのですが
二線のサンプル画像をハフ変換による直線検出を行い
得られた直線a,bの交点の計算は最終的に線aの2点a1,a2と線bの2点b1,b2を
x = - (b1 - b2) / (a1 - a2)
y = (a1*b2 - a2*b1) / (a1 - a2)
で算出する事によって二線の交点x,yを出すと思いますが
傾きを求めるのに用いる合計4点はどうやって取得すればいいのでしょうか?
できれば二線の端と端の座標を取得してそこから計算を行いたいです
852デフォルトの名無しさん:2011/12/07(水) 05:57:05.82
複数枚の画像から、それぞれの画素の輝度の分散や最頻値を使用して画像を作成したいのですが
1画素毎に見ていって値を取るしかないのでしょうか
853デフォルトの名無しさん:2011/12/07(水) 07:13:49.44
>>852
それ以外にどんな方法があるのかい?

cvMat::at が遅いとかなら「複数枚」の画像を BYTE の(一重でも多重でもいいけど)配列に
読み込んでしまってから処理すれば相当速くなりますおし
854デフォルトの名無しさん:2011/12/07(水) 09:05:50.50
>>851
OpenCVが返すのが角度なんだからそっから4点を求めるより、そのまま傾きを求めるほうが直接的
855851:2011/12/09(金) 01:33:00.92
>>854
ありがとうございます
端と端の座標を取得したいのは線分でない列を別領域として分けたいからです
図にすると以下のような感じになります

                領域(その他)
-------------------------------------------------
         /  
        /
       /        領域(a)
      /
-------------------------------------------------


  交点          領域(その他)


-------------------------------------------------
      \
      \       領域(b)
        \
         \
-------------------------------------------------
                領域(その他)

そのために線分の端から端を座標取得したいのです
856デフォルトの名無しさん:2011/12/09(金) 05:39:53.95
>>855

普通は連立方程式のまま解くと思う。
857デフォルトの名無しさん:2011/12/11(日) 23:13:39.82
cvsmoothでアルファ有画像をぼかすと周辺のオールゼロ(透明黒)を拾って輪郭が黒く濁るのですが防ぐ設定は有りますか?
透明領域に同色を塗っとくとか無しで
858デフォルトの名無しさん:2011/12/12(月) 09:43:30.61
24bitアルファ無し画像に変換したらダメなん?
859デフォルトの名無しさん:2011/12/12(月) 10:34:15.16
>>857
ない.アルファチャンネル付き画像の扱いのバグは取れてないので各自工夫して回避する以外ない.
860デフォルトの名無しさん:2011/12/12(月) 12:02:18.26
>>859
了解、自分で書きますw
861デフォルトの名無しさん:2011/12/13(火) 19:36:05.06
int point_count = 100;
CvMat* points1; CvMat* points2;
CvMat* status; CvMat* fundamental_matrix;

points1 = cvCreateMat(1,point_count,CV_32FC2);
points2 = cvCreateMat(1,point_count,CV_32FC2);
status = cvCreateMat(1,point_count,CV_8UC1);

/* ここで点座標を埋めます ... */
for( i = 0; i < point_count; i++ )
{
points1->data.fl[i*2] = <x,,1,i,,>;
points1->data.fl[i*2+1] = <y,,1,i,,>;
points2->data.fl[i*2] = <x,,2,i,,>;
points2->data.fl[i*2+1] = <y,,2,i,,>;
}

fundamental_matrix = cvCreateMat(3,3,CV_32FC1);
int fm_count = cvFindFundamentalMat( points1,points2,fundamental_matrix,
CV_FM_RANSAC,1.0,0.99,status );
と書いてありました。

<x,,1,i,,>といった部分にどのように画像から求めた座標を埋めていくのかがわからず、作業が進みません。
また、カンマ間が空欄となっている部分(第2、5要素)には何を入れたら良いのでしょうか?
初歩的な質問かもしれませんが、わかる方がいらっしゃいましたら教えてください。
862デフォルトの名無しさん:2011/12/13(火) 19:39:35.99
>861 に関して。
書き込みに失敗してしまいました。すみません。
openCV2.2を使って、F行列を求めたいと思い
cvFindFundamentalMat関数を利用したいのですが、リファレンスを見た結果、
上のように書いてり、質問させていただきました。
863デフォルトの名無しさん:2011/12/13(火) 23:50:51.71
画像1のi番目のx座標って意味だ
ただのスカラーだから第2、5要素なんてない
F行列が何か知らずに関数の利用だけしようとするからわけがわからなくなる
864デフォルトの名無しさん:2011/12/14(水) 07:13:58.19
大津の方法で画像を二値化はできるけど
そのときの閾値だけを調べる方法ってありますか?
閾値を整数で出力したいのですが
865デフォルトの名無しさん:2011/12/14(水) 19:34:58.62
ソースコード見て値出力するように変えればいいじゃん
866デフォルトの名無しさん:2011/12/14(水) 19:51:07.39
>863
回答ありがとうございます。
自分でも一応F行列については調べて勉強はしたんですが、勉強不足だったみたいです。
もう一度勉強し直します。
867デフォルトの名無しさん:2011/12/15(木) 02:30:27.60
■■■■■■■■■■■■■■■
■■■■■■■■■■■ ■■■■
■■■ ■■■■■■    ■■■
■■  ■■■■■■  ■■■■
■■  ■■■■■■ ■■■■■
■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■

二値化した画像でこんな感じになっている時
黒い領域の輪郭をとって、内側に開いた白い穴を埋めたい、という時はどうすれば良いのでしょうか
クロージングでは消えないサイズの穴でどうしたものかわかりません
868デフォルトの名無しさん:2011/12/15(木) 05:43:22.49
>>864
cvthresholdの返り値が閾値
869デフォルトの名無しさん:2011/12/15(木) 08:15:54.12
>>865
>>868
ありがとうございました
870デフォルトの名無しさん:2011/12/15(木) 14:40:26.82
>867
「内側」の定義によると思うけど…
仮に「白い領域であって,領域内の全ての画素位置が画像縁でないもの」を「内側」とみなすとしたら
白い領域全てについてそのことを調べて,内側なら埋めればよいのでは?
871デフォルトの名無しさん:2011/12/15(木) 16:51:39.62
元の画像と、収縮した画像を反転させた画像のANDを取るとか
872デフォルトの名無しさん:2011/12/15(木) 18:08:22.02
>>867

ヒント:ラベリング
873デフォルトの名無しさん:2011/12/15(木) 19:22:52.02
874デフォルトの名無しさん:2011/12/16(金) 00:13:50.47
>>873
マジか。。1か月前に1.1版買ってしまったよ。。
875デフォルトの名無しさん:2011/12/16(金) 00:46:29.99
なぜ今頃1.1版が必要だったのか
876デフォルトの名無しさん:2011/12/16(金) 00:48:09.05
1kくぁ月早く手に入ったんだからいいじゃん
877デフォルトの名無しさん:2011/12/16(金) 00:51:43.08
おれに譲れ
878デフォルトの名無しさん:2011/12/16(金) 04:44:00.68
蝶本とどっちにするか迷ってる
879デフォルトの名無しさん:2011/12/16(金) 11:06:51.75
>>873-874
説明読むと実用的な使い方を重視した本かな
880デフォルトの名無しさん:2011/12/16(金) 22:45:05.21
マウスによるクリック入力とその演算について学んでいるのですが
http://wiki.livedoor.jp/mikk_ni3_92/d/OpenCV%3a%3a%a5%af%a5%ea%a5%c3%a5%af%c3%cf%c5%c0%a4%c8%c0%fe%c9%c1%b2%e8
上記のページのプログラムを参考にして4回クリックすると最初の2回のクリックで1つめの直線
後の2回のクリックで2つめの直線をcvLineで描くようなプログラムを組みました
これの発展として手動入力した2直線の交点をcvCircleで表示させるようなプログラムを作りたいのですけど
直交座標系ではない行列上ではどういう計算を行えばよいのでしょうか?
881デフォルトの名無しさん:2011/12/17(土) 00:00:56.76
座標変換
882デフォルトの名無しさん:2011/12/17(土) 02:22:41.29
アフィン変換の余白を埋めないか透明にする指定できますか?
883デフォルトの名無しさん:2011/12/17(土) 18:03:15.11

質問いいでしょうか
createsamples.exeで一つの画像からnum100のvecファイルを作成したのですが、
このvecファイルを5個ほど用意して一つに結合するやり方を教えてください。

num100のvecファイルが5個 → num500のvecファイルが1個にしたいのです

>>290を参考にしたのですがいまいち良くわからなかった…

ファイル結合ソフトを使用して結合しても、num100としか認識してくれません

アドバイスおねがいします
884デフォルトの名無しさん:2011/12/19(月) 00:11:04.86
cvsmoothの端っこをどう処理しているのか知りたいんですけど
関数の中身は見ることができますか?
885デフォルトの名無しさん:2011/12/19(月) 09:15:13.85
>>882
マスク画像にも同じ変換かけて
結果をANDとかORとかする
886デフォルトの名無しさん:2011/12/19(月) 10:39:23.14
>>882
borderModeの説明に思いっきり書いてあるじゃないか
887デフォルトの名無しさん:2011/12/19(月) 14:22:43.13
だからそれを訊いてんじゃないか
いちいちあるか分からないのに構造体みるほど暇じゃないんだよ
888デフォルトの名無しさん:2011/12/19(月) 14:39:31.51
せっかく日本語マニュアルまで用意されてんのに何なのかしら
889デフォルトの名無しさん:2011/12/19(月) 14:44:44.76
あっ関数の引数にあんのか、先に言えよ
890デフォルトの名無しさん:2011/12/19(月) 15:04:58.97
昔ならここでブチ切れるところだが、膝に矢を受けてしまってね。
891デフォルトの名無しさん:2011/12/19(月) 20:42:17.48
cvPointでそのまま計算に用いたい場合は
a = cvPoint(x-y,x+y)といったような指定でもいいんですよね?
892デフォルトの名無しさん:2011/12/20(火) 14:47:00.22
取り込んだ画像を左側に向かってずらして右側に真っ黒な空間を作りたい場合
2次元のアフィン変換を行えばよいのでしょうか?
893デフォルトの名無しさん:2011/12/20(火) 16:05:17.52
今まで研究室でmatlabを使ってましたが今度opencvに切り替える様に言われて
来年から新しく勉強を始める予定です
年末の休みに参考書を見ながら勉強したいのですが何かオススメはありますか?
894デフォルトの名無しさん:2011/12/20(火) 20:03:20.81
とりあえず出版されている本には全て目を通しておくといい
4冊くらいあった気がするが
895デフォルトの名無しさん:2011/12/20(火) 20:39:03.10
896デフォルトの名無しさん:2011/12/20(火) 22:27:52.65
open cv出始める簡単動画プログラムを参考に,windows form アプリ上で,webカメラから取得した画像を動画として保存したいのですが,うまくいきません。
cvWriteFrameを実行するとエラーになってしまいます。コンソールでは問題なくできたのですが,何が問題なのかわかるかたいらっしゃいませんでしょうか?
897デフォルトの名無しさん:2011/12/21(水) 09:37:42.53
まずFrameは正確にキャプチャ出来ているか?(サイズ、カラーパターン等)
次にVideoWriterの設定は間違っていないか?(特にcodecやフレームレート、最初は無圧縮にしとけ)
898デフォルトの名無しさん:2011/12/21(水) 09:53:37.20
試しに,windowに画像を表示させたら問題なく表示されます。
VideoWriterの設定も丸写しなんですが...
WriteFrameの第一引数を0にしたらエラーにはならないようでした(もちろん保存はされませんが...)
899デフォルトの名無しさん:2011/12/21(水) 10:48:20.24
このスレの住人が全員その本を持っていると思うなよ
丸写しって言われてもわからん
900デフォルトの名無しさん:2011/12/21(水) 17:31:28.96
すいません。そうですよね。
namespaceの外側に記入
CvCapture* capture;//画像
CvVideoWriter* rec;
IplImage* srcImage;

タイマーのイベント内に記入
capture = cvCaptureFromCAM(0);
srcImage = cvQueryFrame(capture);
cvCreateVideoWriter("movie.avi",CV_FOURCC('M','J','P','G'),50,cvSize(Image->width,Image->height),1);
と記入しています。
901デフォルトの名無しさん:2011/12/21(水) 21:39:03.41
せめてどんなエラーが出たかくらい書いてくれないと、超能力を使っても無理です
902デフォルトの名無しさん:2011/12/21(水) 23:15:57.62
>>900
cvCreateVideoWriterをrecに代入してないのは記入忘れだよね?
とりあえずCV_FOURCC('M','J','P','G')をCV_FOURCC('D','I','B',' ')にしてみたら?
903デフォルトの名無しさん:2011/12/21(水) 23:57:49.74
「エラーが出ました!」しか言わない自称OpenCV初心者(実はプログラム初心者)ってマジイラつく
904デフォルトの名無しさん:2011/12/22(木) 08:36:43.71
>>902 CV_FOURCC('D','I','B',' ') に変更したら保存出来ました。
みなさんありがとうございました。質問の仕方も勉強します。
905デフォルトの名無しさん:2011/12/22(木) 09:36:26.95
>>904
>>897で答え出てたなw
906デフォルトの名無しさん:2011/12/22(木) 23:47:45.45
ご質問があります.
気が向いた方,どなたか教えて下さい.
OpenCVで探索範囲を限定したテンプレートマッチングをするにはどうしたらいいでしょうか?
探索範囲だけ切り抜くしかありませんか?
cv::goodFeaturesToTrackのようにROIで範囲を限定してやることはできないでしょうか?
907デフォルトの名無しさん:2011/12/23(金) 00:56:28.16
ご質問キター
908デフォルトの名無しさん:2011/12/23(金) 01:03:40.05
>>907
教えて頂けると幸いです.
どうぞ宜しくお願い致します.
909デフォルトの名無しさん:2011/12/23(金) 01:31:40.44
「OpenCV  テンプレートマッチング」で100回ググれ
910デフォルトの名無しさん:2011/12/23(金) 01:55:01.15
>>909
それなりに探してはみたのですが,
中々,適当な解答が得られず困っています.
911デフォルトの名無しさん:2011/12/23(金) 04:47:52.71
>>1 詳しい解説トンスル  これなら韓国が怒るのも当然の気がする

日本人VS韓国乞食

(2011年現在)            日本人  朝鮮猿
ノーベル賞(自然科学分野)     15人   0人
ノーベル賞(人文学分野)       2人   0人
フランクリン・メダル(科学等)     7人   0人
ボルツマン・メダル(物理学)      2人   0人
フンボルト賞(人文、理、工、医、農) 9人   0人
キッピング賞(化学)           5人   0人
クラフォード賞(天文学等)       2人   0人
ブルーノ・ロッシ賞(天文学等)     2人   0人
IEEEマイルストーン(電子技術)   14件   0件
ウィリアム・ボウイ・メダル(地質学) 2人   0人
ホロウィッツ賞(生物学)        1人   0人
コッホ賞(医学)             6人   0人
ラスカー賞(医学)            6人   0人
ガードナー国際賞(医学)       10人   0人
ウルフ賞(科学、数学、医学、芸術) 11人   0人
プリツカー賞(建築)           5人   0人
フィールズ賞(数学)           3人   0人
コール賞(数学)              4人   0人
ガウス賞(数学)             1人   0人
ショック賞(数学・芸術)         3人   0人
ピューリッツァー賞(報道)        3人   0人
912デフォルトの名無しさん:2011/12/23(金) 12:39:37.05
MatにROIを設定->matchTemplate
なんでこれができない?
913デフォルトの名無しさん:2011/12/23(金) 21:01:02.50
>>912
有難うございます.
おかげさまでできました.
でも,オフセットは自分で足さなきゃならないんですね
914デフォルトの名無しさん:2011/12/29(木) 11:39:05.69
単純に行列計算のライブラリとして使うだけでも
ublasより数倍速い気がするんだけど
気のせい?
915デフォルトの名無しさん:2011/12/29(木) 12:46:06.33
Eigen使ってるからじゃね
ベンチマークとれや
916デフォルトの名無しさん:2012/01/02(月) 16:16:22.34
超初心者なんですけど、ご質問があります。
サイズの違う画像を合成する(小さい画像を上から重ねる)
方法を教えていただけませんか?

同じサイズなら下のリンクを参考にできたんですけど…
ttp://imagingsolution.blog107.fc2.com/blog-entry-246.html

ROIで範囲を指定すればいいっぽい所まで分かったんですけど、
ROIの使い方もよく分かりません。

よろしくお願いします。
917デフォルトの名無しさん:2012/01/02(月) 21:38:22.43
>ご質問
自分を持ち上げるな。
>超初心者
初心者超えたら中堅だろ。
918デフォルトの名無しさん:2012/01/03(火) 02:24:26.02
まず10年間C++を勉強しろ
919デフォルトの名無しさん:2012/01/03(火) 16:40:08.74
サイズを合わせればよい
920デフォルトの名無しさん:2012/01/03(火) 21:43:20.18
VS2010、OpenCV2.1を使用しています
double area = fabs(cvContourArea(Contour, CV_WHOLE_SEQ));
として輪郭内の面積を求めたいのですが
引数が足りないとエラーが出てしまいます
入力候補には「int oriented = 0」なるものが出てくるのですが、これはなんなのでしょうか
921デフォルトの名無しさん:2012/01/04(水) 21:20:00.64
>>920
どんなエラーなのかよくわからんが、Contourの中身が空なんじゃね?
922デフォルトの名無しさん:2012/01/05(木) 11:07:37.66
>>920
cvContourArea()は手元のOpenCV1.1のドキュメントだと2引き数だけど、
cvContourAreaとorientedで検索すると3引き数のcvContourArea()が見つかる。
そこの説明によると、
--
If zero, the absolute area will be returned. Otherwise the returned value mighted be negative
--
ということだ。
なので、
--
double area = cvContourArea(Contour, CV_WHOLE_SEQ, 0);
--
で医院で内科医?
923デフォルトの名無しさん:2012/01/05(木) 11:08:48.18
>>921
どんなエラーって、引き数が足りないと書いてあるじゃん。開き盲?
924デフォルトの名無しさん:2012/01/05(木) 11:35:06.01
2.3.1にしたらCvvImageがみつからない.
無くなった?
925デフォルトの名無しさん:2012/01/05(木) 13:12:52.35
>>916
ライブラリに頼ろうとするな
自分で画素を直接操作した方が楽
926デフォルトの名無しさん:2012/01/05(木) 23:04:24.64
CvSVM について質問があります.
多クラスの識別をひとつの識別器で行なう場合の CvSVMParams の重み設定はどのようにすればよいでしょうか?

    クラス  A    B    C
データ1 2    4    0    1
データ2 0    1    3    1
データ3 1    2    2    2
・・・
データn 0    2    3    2

上記のデータ例で Class列を正解クラス(クラスは0〜2の3クラス)とし,A〜Cを特徴量として学習させる場合,
1.クラス0,クラス1,クラス2の順で重みを設定する(クラス番号順)
2.クラス2,クラス0,クラス1の順で重みを設定する(読み込みデータの出現順)
のうちどちらでしょうか?
リファレンスを確認してみましたが,記載されていませんでした.

よろしくお願いします.
927デフォルトの名無しさん:2012/01/06(金) 15:12:45.84
VS2005使用.
複素数群Csの絶対値を結果受取用vector ABSsに入れる関数を以下のように書いたところ…

void Do( const std::vector< std::complex<double> > &Cs, std::vector<double> &ABSs )
{
ABSs.resize( Cs.size(), 0 );
std::transform( Cs.begin(), Cs.end(), ABSs.begin(), std::abs<double> );
}

普通はコンパイルが通るのですが,OpenCV2.3.1のヘッダを
#include "OpenCV2/opencv.hpp"
としてインクルードすると何故かコンパイルエラーになってしまいます.
(error C2914: 'std::transform' : 関数の引数があいまいなため テンプレート 引数を減少できません。
 みたいなエラーがたくさんでる)

とりあえずの対処方法として当該関数を他の翻訳単位に移動させれば回避できそうではあるのですが
気持ち悪いです.
原因等わかる方おられましたら ご教授願いたくよろしくお願いいたします.
928デフォルトの名無しさん:2012/01/06(金) 18:44:03.03
>>927
OpenCV2.3.1かな
"opencv2/contrib/retina.hpp"でincludeしてる

#include <valarray>

が原因なような気がする
929デフォルトの名無しさん:2012/01/08(日) 03:51:35.88
エッジの強度の調べ方をどなたか教えて頂けませんか?

特徴点を検出して、エッジの強度でマッチングさせたいのですが。。。
930デフォルトの名無しさん:2012/01/08(日) 08:31:21.44
>>927
何か名前が衝突してるんじゃないか
どこかのヘッダの using namespace を外せばうまくいくかもね。
931デフォルトの名無しさん:2012/01/09(月) 09:57:00.37
目で見た方向にマウスカーソルが動くソフトが欲しい。
欲しいのはこんなのです。

pc上部にあるカメラから目の位置を特定して、白眼の中の黒眼の位置から向いてる方向を判断する。
少しずつその方向にカーソルを移動させる。瞳孔位置判定してピンポイントに座標判断なんて高度なやつではない。
頭位置は完全固定、キャリブレーションで画面4すみの眼の形を学習する。

似たようなやつありますか?

932デフォルトの名無しさん:2012/01/09(月) 12:20:13.23
>>931
沢山ありそうだが。たとえば
ttp://www.youtube.com/watch?v=qgmONlusBV8
933デフォルトの名無しさん:2012/01/09(月) 12:58:04.56
>>932
早速試してみたんだが、軽くてすげぇなこれ。キャリブレーション部分がdirectshowと顔検出がopenCVでつくってあるのかな。

ただ、マウスカーソル動かないのが難点だ。。
934デフォルトの名無しさん:2012/01/10(火) 13:50:55.19
>>928
ありがとうございます.
valarray単体includeでも同エラーが発生することを確認しました.
valarrayをincludeすることによって何が起こるのかはさっぱりですが…

とりあえず opencv.hpp を使わずに,
ちゃんとそのcppに必要最小限なヘッダだけをincludeすれば今回は対処できそうです.
935デフォルトの名無しさん:2012/01/13(金) 23:09:59.54
卒業制作で交通量をカウントするプログラムの制作を予定しています。

オブジェクト検出を用いて動画中の車を
検出しようと考えているのですが、そこから
画面内から画面外へ通過した物体の数をカウントするには
どうすればいいでしょうか?
936デフォルトの名無しさん:2012/01/14(土) 01:40:03.92
カウントはトラッキングが命。
画面ないにラインを設けなさい。ラインをまたいだらカウント
937デフォルトの名無しさん:2012/01/15(日) 21:48:11.03
神奈川あたりでセミナーかサークルってありませんか?
938デフォルトの名無しさん:2012/01/16(月) 10:38:01.35
良いセミナー受けたきゃ東京行け
神奈川なら十分日帰り出来る距離だろ
939デフォルトの名無しさん:2012/01/20(金) 00:12:19.93
2.3.1解凍してもinclude\opencv2の中にopencv.hppしかないのはなぜなんだ?
940デフォルトの名無しさん:2012/01/20(金) 07:52:47.70
>>939
ソースならインストールプロジェクト実行時にヘッダーファイルがコピーされるようになってる
941デフォルトの名無しさん:2012/01/21(土) 09:39:35.40
特徴点を見つけてマッチングさせる方法教えて
942デフォルトの名無しさん:2012/01/21(土) 12:39:44.04
943デフォルトの名無しさん:2012/01/23(月) 08:20:43.37
2.3がまだ不安定な感じするから
まだ2.2を使っている
2.3を本格的に使ってる人いる?
944デフォルトの名無しさん:2012/01/23(月) 08:29:04.06
俺はいまだ2.1だ
945デフォルトの名無しさん:2012/01/23(月) 08:33:38.85
C++拡張って名前とか固定されてるの?
いつかインターフェイス変更されそうで怖いから
今だにCで使ってる
946デフォルトの名無しさん:2012/01/23(月) 09:50:04.06
>>943

trunk 追いかけてる.不安定さはあんまり観じないな.ハードウェアとかファイルIOまわりで込み入ったことしないせいだと思うけど.
947デフォルトの名無しさん:2012/01/23(月) 11:31:11.61
俺も2.1で止まってるなー
機能的に満足してるから、様子見してる間に中身だけどんどん変わってった感じ
948デフォルトの名無しさん:2012/01/23(月) 12:26:24.76
cv::Mat
のメンバー関数ぐらいは固定で変わらないと信じたい
949デフォルトの名無しさん:2012/01/23(月) 12:35:28.83
>>942
ありがとー。
使い方がまだよくわからない

950デフォルトの名無しさん:2012/01/24(火) 11:27:48.94
>>949
よくわからないなら蝶本読むか買ってみるのもいいよ
図解で詳しく解説してるし
951デフォルトの名無しさん:2012/01/25(水) 00:16:45.40
C++対応したとはいってもMouseCallBackをクラス内ではそのまま使えないのか…
952デフォルトの名無しさん:2012/01/25(水) 23:03:23.83
質問よろしくお願いします。
以下のプログラムなのですがコンパイルは出来るのですが実行したところ
r6010 abortと表示されて画面が表示出来ませんでした。
画像の位置も問題なく、Aのところでエラーが出ているようなのですが分かりませんでした。
もしよろしければアドバイスお願いします。
http://codepad.org/O7TqnhA6
953デフォルトの名無しさん:2012/01/25(水) 23:21:16.03
画像やxmlをおくパスを確認してみたら?
m.chiebukuro.yahoo.co.jp/detail/q1072179035
954デフォルトの名無しさん:2012/01/26(木) 01:02:24.20
>>952

C:\\opencv\\data\\haarcascades\\haarcascade_frontalface_alt.xml

にファイルはあるの?
955デフォルトの名無しさん:2012/01/26(木) 01:44:02.25
>>953-954
場所もカレントディレクトリーにコピーしてみたりと色々とやってるんですが
改善が見られず他に原因が分からないのでどうしようもない状態です。
ただもう少し頑張ってopenCVの設定を見直してみようと思います。
回答いただきありがとうございました。
956デフォルトの名無しさん:2012/01/26(木) 05:16:11.96
Windows7(64bit) OpenCV2.3 Visual Studio2010(32bit)の環境下でのコーディングを行なっているのですが、現在作成中のプログラムの中で

cvCalcHist
cvCalcBackProject
cvSplit
cvInRanges

を呼び出すと、呼び出す順番に関わらずcv::Exceptionを投げてきてプログラムが終了してしまいます。
openCVの以前のバージョンで試してみたりもしたんですが、解決することが出来ませんでした。
試しに、これらの関数をコンストラクタや別の処理の中で実験的に呼び出してみても、それぞれの箇所で同様にアクセス例外を投げてきましたので、
処理の流れ自体に問題があるとは考えにくいです。

解決策としてはどのような方法が考えられますか?知恵をお貸しください。
957デフォルトの名無しさん:2012/01/26(木) 09:15:45.18
残念ながら一気にかいけつは出来ないよ。
一つ一つ関数の呼び出し引数の確認と原因絞りこみが必要。今貴方がわかっている現象だけじゃエスパーできないっす
958デフォルトの名無しさん:2012/01/26(木) 09:32:05.22
>>956

Debug コンパイルなのにリリース用のライブラリをリンクしてる,
もしくはその逆.

とか?
959デフォルトの名無しさん:2012/01/26(木) 22:43:02.10
>>956
もしかしてマルチスレッドとマルチスレッドDLL併用してる?
960デフォルトの名無しさん:2012/01/29(日) 21:56:19.61
蝶本にSurf が乗ってない。せっかく買ったのに
961デフォルトの名無しさん:2012/01/30(月) 22:13:41.43
蜘蛛は目に映ったピンぼけ映像で獲物の距離を掴んでいるらしい。
単眼での物体距離認識libraryは作れるのかな
962デフォルトの名無しさん:2012/01/31(火) 01:26:21.51
OpenCV 2.3.1+MinGWで以下のような問題にぶつかりました。
解決策についてアドバイスをお願いします。

■現象
cv::imshow()で画像を表示しようとするとプログラムが落ちる

■環境
・Windows 7 32bit
・OpenCV 2.3.1
・MinGW 20111118 (gcc 4.6.1, g++ 4.6.1)
・CMake 2.8.6

■インストール方法
1. MinGWのインストーラ(mingw-get-inst-20111118.exe)から C Compiler, C++ Compiler,
MSYS Basic System, MinGW Developer ToolKit をインストール (インストールフォルダは C:\MinGW)
2. C:\MinGW\bin にパスを通す
3. OpenCV-2.3.1-win-superpack.exe を取ってきて展開
4. cmake-gui で Configure → MinGW Makefiles を選択、コンパイラは1.で入れた gcc, g++ を
設定して Configure → Generate (インストールフォルダはC:\opencv, オプションはデフォルトのまま)
5. コマンドプロンプトで mingw32-make, mingw32-make install してインストール
6. C:\opencv\install\bin 以下にあるファイル(*.dll, *.exe)をパスが通ってるフォルダに全部コピー

■コンパイル・実行
コマンドプロンプトから http://tinypaste.com/011cb45a をコンパイルして実行
$ g++ foo.cpp -o foo.exe -IC:\opencv\install\include -LC:\opencv\install\lib -lopencv_core231 -lopencv_highgui231
$ foo.exe

実行すると hoge, fuga までが表示され、タイトルバーが「Test」のウィンドウが表示される(背景はグレーっぽい色)。
直後に「foo.exeは動作を停止しました この問題の解決策を確認しています...」というメッセージが表示され、プログラムが終了する。

-lでOpenCVのライブラリ全部設定したりMSYSからコンパイルしたりも試したけど結果は同じでした。
GUIを使わないこんなの http://tinypaste.com/d901ce69 だと普通に動くんですが…。
963デフォルトの名無しさん:2012/01/31(火) 03:40:48.39
>>962
"Test"っていうWindowsがnamedWindowされてないからでは
964デフォルトの名無しさん:2012/01/31(火) 15:19:08.01
>>961
片目瞑っても大体の距離はわかるから、不可能では無いと思う
実際にやろうとすると、模様や影からパターンで推測になるだろうから、膨大な計算量になりそうだけども
965デフォルトの名無しさん:2012/01/31(火) 17:00:52.86
>>961
クモがやっている方式は
安物のカメラで使われているのオートフォーカス(コントラスト方式)とどのような違いがあるの?
966デフォルトの名無しさん:2012/01/31(火) 20:15:40.25
961が言ってるのはピンぼけ具合から距離を求めるってことじゃないの?
967966:2012/01/31(火) 20:56:09.98
あーごめん、>>966は忘れてくれ。
968デフォルトの名無しさん:2012/01/31(火) 21:18:29.32
logicoolの焦点変えられるカメラでコンストラストが最大になる焦点距離を
ピクセルごとに記録して距離画像っぽいの作成したことはある。
Halconにそんなのが紹介してあったので真似してみた。焦点距離計測とかなんとかいうやつ。
969962:2012/01/31(火) 22:45:05.79
>>963
レスありがとうございます。
cv::namedWindow でウィンドウを作ってみましたが、結果は同じでした…。
(テストしたコードは http://tinypaste.com/c9ec2e8b です)
970デフォルトの名無しさん:2012/02/01(水) 02:25:03.97
>>961
前ピンと後ピンでは厳密にはボケ方が違うから、それを認識できれば
単眼で距離を測ることは可能だと思うよ。
ただ、絞りの形が決まってないと難しいと思う。
971デフォルトの名無しさん:2012/02/01(水) 09:02:00.90
>>968
それが昔からあるコントラスト方式のAFそのものであることは分かる。

クモの研究者は、新しい距離計測技術につながると主張しているので、
なんらかの違いがあると思うのだが、それが分からん。
972>>969:2012/02/01(水) 09:13:39.69
いつもCの
IplImage *pImg = cvCreateImage(...)
使ってて
C++のインタフェースって使ったことないんだけど
画像のチャンネル数は指定しなくてもよいの?
(例えば CV_8U → CV_8UC1 としなきゃダメとか)
973デフォルトの名無しさん:2012/02/09(木) 13:37:10.58
違うPC環境で実行すると動画ファイルの読み込みが上下逆になったりするのは何故ですか?
974デフォルトの名無しさん:2012/02/09(木) 13:38:36.94
あと、USBメモリの中では正常なのに、動画ファイルごとHDDにコピーして実行すると上下逆になります
975デフォルトの名無しさん:2012/02/09(木) 13:43:27.85
USBメモリの方ももう一回実行しなおしたら上下逆になりました・・・
つまり1.0と1.1preだと読み込みが変わるんですね
976デフォルトの名無しさん:2012/02/09(木) 17:22:43.77
2.3.1 を使っているのですがCvPointやCvRectは
struct CvPoint;
のように前方宣言(で言葉合ってるかな?)できるのですが
CvSizeだけ何故かtypes_c.h内で無名structのtypedefとして宣言されているために
struct CvSize;
のように前方宣言が書けません.
このような場合は あきらめてヘッダをincludeするしかないのでしょうか?
977デフォルトの名無しさん:2012/02/09(木) 21:42:36.96
今時1.0や1.1pre使って悩んでるハゲがたまに出てくるけど一体なんなの?最新版使うと死ぬの?
978デフォルトの名無しさん:2012/02/09(木) 22:43:32.59
研究で使ってるから環境変えるとめんどい
979デフォルトの名無しさん:2012/02/09(木) 23:30:18.42
環境ごとにバーチャルPC用意するだろふつう
980デフォルトの名無しさん:2012/02/10(金) 05:13:58.74
なら自分でソースコード見て直せば〜
981デフォルトの名無しさん
1.0や1.1は捨てちゃえば良いのに

と、2.1を使い続けてる俺が言ってみる