【Intel】OpenCV総合スレ【画像処理】2

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

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

関連リンクなどは
>2-10くらい
2デフォルトの名無しさん:2008/12/29(月) 09:48:03
【関連スレ】
画像処理 その8
ttp://pc11.2ch.net/test/read.cgi/tech/1168868527/

【関連リンク】
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

こめIntel、画像処理ライブラリ「OpenCV 1.0」を公開
http://journal.mycom.co.jp/news/2006/11/08/360.html
3デフォルトの名無しさん:2008/12/29(月) 09:49:34
4デフォルトの名無しさん:2008/12/29(月) 09:54:41
5デフォルトの名無しさん:2008/12/29(月) 10:10:06
次スレ立てたところで質問です。
動画から物体Xを捜してその物体Xだけを綺麗に抜き出したいのですが上手くいきません。
なにかいい方法教えてください
ちなみに物体Xは例えば袋とかの時もあり、常に直線のみや曲線のみで構成されてるとは限りません。

とりあえずその物体Xの特徴からある程度の位置を割り出してその辺りの部分だけを抜き出す。
ここまではおおざっぱにですがどうにか成功しました。次は
グレースケール化→二値化→cvFindContoursで輪郭抽出またはエッジ抽出
でやってみたのですが二値化の時点で微妙に欠けたりはみ出たりして輪郭もエッジ
もうまくとれません。綺麗にその物体Xを抜き出す処理の手順とできれば使用する
関数も教えてもらえたら助かります
6デフォルトの名無しさん:2008/12/29(月) 17:06:57
…エスパーさん、出番でーす
7デフォルトの名無しさん:2008/12/29(月) 17:46:57
熱した針金をあててやるといい
8デフォルトの名無しさん:2008/12/31(水) 01:22:17
cvHaarDetectObjectsが入力画像を上下反転させないと認識してくれないんですが
仕様ですか?バグですか?
後々も座標上下反対に考えないといけないんでコマリマックス
9デフォルトの名無しさん:2008/12/31(水) 10:28:54
君のカン違い
10デフォルトの名無しさん:2008/12/31(水) 18:17:56
cvFindContoursで得たCvSeqの輪郭の内側の部分だけを抜き出すにはどうすればできますか?
cvNextTreeNodeで輪郭ひとつ抜き出してCV_GET_SEQ_ELEMで座標みて外側を黒に、
内側を白に塗りつぶしてマスク作ってコピーするしかない?
もっと簡単に出来る方法あれば教えてください
11デフォルトの名無しさん:2009/01/03(土) 19:45:51
>5
画像処理は基本的に個別対応しかない。
テンプレートマッチング&Sobelなどの基本操作で無理ならば、対象画像を示す以外に回答は出ない。
12デフォルトの名無しさん:2009/01/04(日) 19:02:32
cvCaptureFromeAVIって関数あったけど,OpenCVが1.10になったとき
読めるAVIのコーデックの種類とかって増えたりした?
13デフォルトの名無しさん:2009/01/05(月) 00:05:35
>>2
以下2件デッドリンク.次スレから削除よろしく
OpenCVメモ - PukiWiki
ttp://nautilus.cs.miyazaki-u.ac.jp/~yoshi/pukiwiki/index.php?OpenCV%A5%E1%A5%E2
OpenCV による画像処理
ttp://www-cv.mech.eng.osaka-u.ac.jp/~hamada/openCV/
14デフォルトの名無しさん:2009/01/05(月) 00:13:14
>>12
前バージョンからシステムに依存してたから関係ないと思う.
WindowsならCCCP導入後にH.264とか読み込めるからさ.
15デフォルトの名無しさん:2009/01/05(月) 19:49:25
cvStereoRectifyで使用してるアルゴリズムの元論文って知ってる人いない?
Uncalibratedのときはhartleyって載ってるんだけど
16デフォルトの名無しさん:2009/01/06(火) 11:42:57
OpenCV用にPCを一台組みたいんだけど、やっぱり、Intelを使った方がいいのかな?
今のテスト環境は、AthlonX2 4000+で速度的に不満が無いレベルだからkumaを使えば
もう少し幸せになれるかなと思ってます。
ソースを読む限りは特にSSEやマルチスレッドを使ってる訳では無さそうなので、
クロックとキャッシュ容量で差がつくのかなと考えてます。
だけど、タダで使わせて貰ってるんだからIntelに貢献するべきかな?
1712:2009/01/07(水) 02:26:42
>>14
ありがと,OpenCVじゃDX50くらいしか読み込めないと思ってたから.
18デフォルトの名無しさん:2009/01/07(水) 11:20:41
>>16
速度的に不満がないならこれ以上幸せになりようがないと思いますw
ハード板住民垂涎の品のみで周辺機器が構成されているなら
CPUにお金使ってもいいんじゃないwもう他に使い道ないでしょwww
19デフォルトの名無しさん:2009/01/07(水) 21:57:03
サンプルプログラムの中の(エッジの検出 cvSobel,cvLaplace,cvCanny)と
(画像の二値化 cvThreshold, cvAdaptiveThreshold)についてなんですが、
サンプルプログラムを実行するとそれぞれ
edge.c:21: error: too few arguments to function 'cvSobel'
edge.c:22: error: too few arguments to function 'cvConvertScaleAbs'
edge.c:25: error: too few arguments to function 'cvLaplace'
edge.c:26: error: too few arguments to function 'cvConvertScaleAbs'
edge.c:29: error: too few arguments to function 'cvCanny'
及び
nitika2.c:26: error: too few arguments to function 'cvSmooth'
nitika2.c:35: error: too few arguments to function 'cvAnd'
nitika2.c:39: error: too few arguments to function 'cvSmooth'
nitika2.c:40: error: too few arguments to function 'cvAnd'
という同様のエラーが出てしまいます。
どなたか分かる方がいたら教えて頂けないでしょうか。
20デフォルトの名無しさん:2009/01/08(木) 02:33:36
>>19
辞書引こうよ.
引数が少なすぎます って意味です.
リファレンスをちゃんと読めば解決できるよ.
21デフォルトの名無しさん:2009/01/08(木) 16:27:36
>>19
C++としてコンパイルする。あるいは、
デフォルト引数を使えない言語としてコンパイルするなら、
ちゃんと足りない引数を自分で与えなきゃだめだよ。

って書いてあったよ。
22デフォルトの名無しさん:2009/01/09(金) 00:25:00
分かりました。
さっそく、いろいろ試してみたいと思います。
ありがとうございました。
23デフォルトの名無しさん:2009/01/10(土) 01:52:18
今 OpenC Vの IplImage 内のメンバ ImageDate 内の値を直接参照してたんですけど.
普通に値をとろうとして int にキャストしてたんですよ.
そしたらマイナスの値がでて正確なRGB値がよくわからずにいたんです.
+127とか(unsigned int)とかして正しい数値をとろうとしてもうまくいきませんでした.
それでリファレンスサイトのサンプルコードを見て,(unsigned char)で値を受けてからキャストしてみたんですよ.
そしたらようやく正確なRGB値を取ることができました.
質問ではないんですけど嬉しくって報告しました.
失礼しました.
24デフォルトの名無しさん:2009/01/10(土) 15:21:43
IplImage作った人はなんでcharでBGRの順にピクセル並べようと思ったんだろうな
なんか利点あるの?
25デフォルトの名無しさん:2009/01/10(土) 17:33:03
リトルエンディアンと相性が良くて,作ったのがIntelだから
26デフォルトの名無しさん:2009/01/14(水) 18:43:49
DEPTH_8U形式のイメージにcvFilter2Dで
フィルタをかけているんだけど、
結果が負のときってどうなるの
27デフォルトの名無しさん:2009/01/15(木) 10:09:28
cvMatとかをデバックプリントする簡単な関数ないの?
28デフォルトの名無しさん:2009/01/15(木) 19:01:20
>>26
結果が負って何?cvFilter2Dはvoid関数だったけど?
29デフォルトの名無しさん:2009/01/15(木) 21:14:19
ラプラシアンとかで画素が負になったらって事だろ。
30デフォルトの名無しさん:2009/01/15(木) 21:22:26
画素のcharの値が負ってことか?普通じゃん
出力してためせばいいじゃねえか
31デフォルトの名無しさん:2009/01/15(木) 23:11:00
>>26です。
リファレンスのサンプルだとcvSolveやcvLaplaceは
8U(符号無し)で入力して、16S(符号付)で出力をした後
cvConvertScaleAbsで8Uに戻してる。
cvFilter2Dも同じ様にするのかなと思ったんだけど、cvFilter2Dは入力と出力のタイプ
を同じにしないとエラーになるので、あれっ?っとなった。

自作のフィルタでためしたところ、負の画素はゼロになってるようなんだけど、
これであってるのかな?

32デフォルトの名無しさん:2009/01/19(月) 00:27:44
mixiの質問スレが低レベルすぎて泣ける
33デフォルトの名無しさん:2009/01/21(水) 00:56:35
前スレであった目の位置の特定で、
検出の精度をあげるソースってだれか持ってる?
34デフォルトの名無しさん:2009/01/23(金) 03:40:37
1.1preの方の変更点とかここでまとめて行こうぜ
35デフォルトの名無しさん:2009/01/23(金) 06:13:25
cvcreatematで20000*20000のマトリクスを使って計算しようとしたんですけど、
メモリエラーが起きて計算できませんでした。
エラーを回避する方法はないでしょうか
36デフォルトの名無しさん:2009/01/23(金) 07:00:08
>>35
いっぺんに計算する必要が無ければ分割したら?
37デフォルトの名無しさん:2009/01/23(金) 08:20:06
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
3835:2009/01/23(金) 09:10:24
そうですよね。
システムのメモリ確保領域をふやしたり、いろいろやってみましたけど、無理でした。
式を作り直して分割しないと無理そうですね。
やってみます。

39デフォルトの名無しさん:2009/01/24(土) 10:25:49
64bit OS使ってる?
40デフォルトの名無しさん:2009/01/26(月) 05:06:32
Windowsでopencv+ffmpeg環境を作ろうとしているのですが,
opencv1.1pre1に使うffmpegの推奨revはどこを参照すれば分かりますか?
動作報告も頂けるとありがたいです.
41デフォルトの名無しさん:2009/01/26(月) 06:03:01
質問です。
例えば、右上には黄色い四角、左下には赤い四角が有る
と言う事をOpenCVの関数だけを使って認識する事は可能ですか?
それとも、黄色い四角、赤い四角があるというだけで、
右上や左下は認識できないでしょうか?
42デフォルトの名無しさん:2009/01/26(月) 06:30:20
main関数がOpenCVのAPIじゃないからな。無理。
43デフォルトの名無しさん:2009/01/26(月) 06:34:08
>>41
物体があることは分かってる?
重心座標でよければそれぞれの物体を切り出した2値画像に
cvMoments, cvGetSpatialMomentでいけそうな気がします。
44デフォルトの名無しさん:2009/01/26(月) 20:19:10
数千枚の中から大きさが違うだけの同じ画像を見つけるためにcvMatchShapesを使ったのですが
同一画像はマッチ度10位前後になってしまいます。

小さい画像をcvLoadImageしてから大きい画像と同じ大きさに拡大したところ1位になりましたが、
大きい画像を小さい画像にして比較するとまたマッチ度は10位前後になってしまいます。
大きさの違うだけの画像を見つけ出すうまい方法ってありませんか?
45デフォルトの名無しさん:2009/01/26(月) 20:53:02
>>44
初心者にはお勧めしませんが、Linuxが使えるならGimpで出来ます。
46デフォルトの名無しさん:2009/01/27(火) 01:03:36
複数カメラの取り込みを、VideoInputを使って以下のページを参考にして作りました。
ttp://www.eml.ele.cst.nihon-u.ac.jp/~momma/wiki/wiki.cgi/OpenCV/複数台のカメラ.html
ソースはほぼこのままで、2カメラにしただけです。

するとUSBカメラ(device0)の方は固まりがちで1fpsもでないくらいなのに、
ノートPCに内臓されてるカメラ(device1)の方は解像度が高くしてもスムーズに動作します。
USBの方はYUY2->RGB24の変換をしてるみたいなのでここに時間がかかってるんでしょうか?

VideoInputの出力を貼っておきます。
***** VIDEOINPUT LIBRARY - 0.1991 - TFW07 *****
VIDEOINPUT SPY MODE!

SETUP: Looking For Capture Devices
SETUP: 0) USB モヌェ ヌミ、ケ
SETUP: 1) Integrated Camera
SETUP: 2 Device(s) found

SETUP: Setting up device 0
SETUP: USB モヌェ ヌミ、ケ
SETUP: Couldn't find preview pin using SmartTee
SETUP: Setting capture size to 320 by 240
SETUP: Media Type is YUY2 converted to RGB24
SETUP: Capture callback set
SETUP: Device is setup and ready to capture.

SETUP: Setting up device 1
SETUP: Integrated Camera
SETUP: Couldn't find preview pin using SmartTee
SETUP: Setting capture size to 320 by 240
SETUP: Media Type is RGB24 no conversion needed
SETUP: Capture callback set
SETUP: Device is setup and ready to capture.
4746:2009/01/27(火) 01:10:35
>>46
自己解決しました。
VideoInputのusb devices - PLEASE READ.txtを読んでませんでした。
USBポートの電源の管理の設定を変えるとで解決しました。

スレ汚しスマソ
48デフォルトの名無しさん:2009/01/27(火) 12:49:18
>>45
Gimpはレタッチソフトですよね?
サムネイルが作りたいわけではなくて、サムネイル画像を探したいんです。
それともLinuxバージョンのGimpのみに画像比較機能があるんでしょうか?
49デフォルトの名無しさん:2009/01/27(火) 13:45:21
>>48
scriptFuをマスターしている奴はおらぬか
50デフォルトの名無しさん:2009/01/27(火) 14:35:05
OpenCVで画像のエッジを抽出する際にガウシアンフィルタをかけて,
ラプラシアンフィルタをかけたあとで,ゼロクロス画像を得ることは可能ですか?
51デフォルトの名無しさん:2009/01/27(火) 19:26:32
自分でその順番通りに書けば得られるよ
52デフォルトの名無しさん:2009/01/28(水) 00:55:34
>>48
画像全体の大きさが違うだけで、
一部だけ切り取られたり回転したりしてないんなら
単純に大きさをそろえて差分をみればいいんじゃない?
53デフォルトの名無しさん:2009/01/29(木) 18:14:04
Learning OpenCVは読みやすいね
大学生レベルの英語ができる人なら普通に読めると思う
54デフォルトの名無しさん:2009/01/29(木) 21:27:03
夏に日本語版出るらしいけどな
55デフォルトの名無しさん:2009/01/29(木) 21:46:04
>>50
>ゼロクロス画像を得ることは可能ですか?
セクロス画像を得ることができますかに見えた俺はもう末期。
56デフォルトの名無しさん:2009/01/31(土) 23:06:48
CvCalibFilterって、リファレンスマニュアルにみつからないのですが
どこかに解説があるのでしょうか?
57デフォルトの名無しさん:2009/02/02(月) 03:33:16
ちょっと質問です.
ゼロクロス画像というのは,2値のみで表されるエッジ画像という認識であっていますか?
58デフォルトの名無しさん:2009/02/03(火) 09:06:43
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  intel owattel !!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
59デフォルトの名無しさん:2009/02/03(火) 11:26:05
ところがどっこい、もうIntel関係ない
60デフォルトの名無しさん:2009/02/05(木) 01:22:05
videoInputでキャプチャした映像を
cvCreateVideoWriterを使ってファイルに保存したいのですが
処理が重いので困っています
QVGAのカメラが2つあるだけでカクカクになってしまいます

非圧縮でやっているので、処理としては取り込みとキーの判定だけです
なのでなぜこんなに重くなるのかがわかりません
キャプチャした画をウィンドウ表示しているときはそんなに遅くないように見えるのですが
AVIにするのにそんなに時間がかかるのでしょうか。
それともカメラ2台でそんなに厳しいのでしょうか
61デフォルトの名無しさん:2009/02/05(木) 06:36:08
>>60
QVGAのピクセル数×3(色数)×15(くらいか?fps)=?
これを常時HDDに書き込んでいる。

バカデカいIplImageの配列を確保してCopyImageすりゃ速い。
SaveImageは後でやる。
62デフォルトの名無しさん:2009/02/05(木) 14:23:38
OpenCvに自分の作ったプログラムを投稿してみたいんですが、やりかたってわかりますか?
63デフォルトの名無しさん:2009/02/05(木) 14:26:04
>56
ソースコード読んでみたら?
64デフォルトの名無しさん:2009/02/05(木) 16:16:03
1.1preのサンプルってVC2008で動くんですか?
さっぱり動かんです。
65デフォルトの名無しさん:2009/02/05(木) 17:55:42
環境も書かずに動くだの動かないだの言っている奴がム板にいること自体が疑問
66デフォルトの名無しさん:2009/02/05(木) 18:11:31
osのことでしたら、xpです。
67デフォルトの名無しさん:2009/02/05(木) 18:17:57
>>64
動かないのはPCがイかれてるかキミの設定が悪いかだ,こんなところに書き込むより周りの人に相談しなさい
68デフォルトの名無しさん:2009/02/05(木) 18:20:15
氏ね
69名無し募集中。。。:2009/02/05(木) 19:21:23
こんな動作になる事を想定しているのに別のこんな動作になってしまうのだが
コードが問題なのではなくてVS2008が原因である事を確認するために
こんなテストをしてその結果がこうなったからだ。
くらい書いて欲しいって事かな、簡単に言うと。
70デフォルトの名無しさん:2009/02/05(木) 20:50:39
日本語でおk
7160:2009/02/05(木) 22:35:22
>>61
トンクス。
HDDの書き込み速度がわからないけど、
確かにメモリに入る限り詰め込んだ方がよさそうですね
やってみます。ありがとうございました。
72デフォルトの名無しさん:2009/02/05(木) 22:36:43
>>64
サンプル動かすのにVCかどうかなんて関係ないと思うけど、
なんなら自分でビルドし直したら?
7360:2009/02/06(金) 00:55:07
2カメラからキャプチャした映像を一度メモリにひたすら保存して
キャプチャ後にファイルに保存するようにしたところ
カクカク感が解消されました!

でも1カメと2カメでフレームレートが全然違います。
処理の順番に影響されるのかな?

つい最近リリースされたvideoInputはフレームレートが設定できるそうなので
明日か週末にでも試してみます
USBカメラでもうまくいくのかどうか
74デフォルトの名無しさん:2009/02/06(金) 02:54:03
1.1はインテルの何とかを前提にしてるみたいだから、
リビルドする時はそれに非対応の奴を選んで、
ついでにいくつか出る警告を無視してリビルドすれば
VC2008でもサンプルが普通に動いたな.

75デフォルトの名無しさん:2009/02/06(金) 06:27:32
    ∩_∩     人人人人人人人人人人人人人人人人人人人人人人人人人人人人人
   / / \\   < すごい新参感を感じる。今までにない何か酷い新参感を。       >
  |  (゚)=(゚) |   < 厨・・・流入してきてる確実に、コピペブログから、俺たちのほうに。  >
  |  ●_●  |   < 雑談はやめよう、とにかく最後までネタ作ってやろうじゃん。       >
 /        ヽ  < ネットの画面の向こうには沢山のゆとりがいる。決して一人じゃない。 >
 | 〃 ------ ヾ | < 戦おう。そしてともにネタを投稿しよう。                   >
 \__二__ノ  < ゆとりや厨の糞レスは入るだろうけど、絶対に流されるなよ。      >
              YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

76デフォルトの名無しさん:2009/02/06(金) 10:04:12
>>73
USBコントローラの帯域制限に引っ掛かってない?
videoInputでカメラの設定ダイヤログを開いてUSBの帯域を下げるか、別のUSBコントローラに刺すとか。
77デフォルトの名無しさん:2009/02/07(土) 01:32:21
>>74  
 http://opencv.willowgarage.com/wiki/VC2008Express
 上記URLに書いてある C:\Program Files\OpenCV\_make\opencv.vs2005.no_openmp.sln
 でリビルドすればいいということですか?
7873:2009/02/09(月) 01:10:17
さきほどvideoInput::setIdealFramerate()を試したところ、
2台ともうまく動きました。

>>76
アドバイスありがとうございます。
カメラの設定ではUSBに関する設定はできませんでした。

別のUSBコントローラというのは、単純に別のUSBポートと考えていいのでしょうか?
デバイスマネージャには以下のように「コントローラ」と「ハブ」が8個ずつ並んでますが、
http://www.csync.net/service/file/view.cgi?id=1234109080
そもそも4つしかないので違和感があります。
79デフォルトの名無しさん:2009/02/09(月) 07:16:07
>>78
デスクトップを組んだ事があれば分かると思うが、マザーボード上あるいは拡張ボードで
根っこから別のポートになっていれば独立したUSBコントローラ。
前と後ろのポートを使えば大抵別だと思う。
80デフォルトの名無しさん:2009/02/09(月) 20:27:32
46さんと同じように
ttp://www.eml.ele.cst.nihon-u.ac.jp/~momma/wiki/wiki.cgi/OpenCV/複数台のカメラ.html
のソースを使って複数台キャプチャーできるようにしたのですが、
画像にノイズが入ります。
ノイズはカメラ視野内に移動物体を配置しなければ発生せず、
画像サイズ(640*480)を小さく(320*240)するとほとんど目立たなくなります。

おそらくmemcpyのところでノンインターレース方式でデータを取得しているため、
前フレームのデータをコピーし終わる前に次のフレームのデータを取得してしまうことが
原因だと思うのですが、この問題を解決するにはどうしたらよいでしょうか?
81デフォルトの名無しさん:2009/02/13(金) 21:52:22
エピポーラ線書く関数ってなんかバグない?係数はおかしくないのに線の傾きがなぜか0になるんだが。
大した手間でもないから結局自分で書いたけど。
あとcvBlobslibも全然使えないね。地の画素値が0だとカウントしてくんないし。
だれか使い勝手のいいラベリング実装してないかね。
82デフォルトの名無しさん:2009/02/13(金) 21:54:58
↑間違えた。地の画素値が255だとね。
83デフォルトの名無しさん:2009/02/13(金) 23:51:50
反転すりゃ良いだけじゃないの?
84デフォルトの名無しさん:2009/02/14(土) 00:16:25
2値画像ならそれでいいんだけど多値だといろいろめんどい。
多値画像対応を謳ってるけど画像の4辺が255で囲まれてると対応してくれないんだよ。
多値画像だと単純に反転というわけにはいかない
85デフォルトの名無しさん:2009/02/14(土) 00:19:28
そりゃ我侭だろw
文句あんならソースに手を加えれば良い。
86デフォルトの名無しさん:2009/02/14(土) 14:48:39
ネットワークカメラからbmp画像を取得して動画にしているんですが、
録画するのに

カメラから画像をキャプチャし、ファイルに書き出すやりかたがわかりません

cvcaptureじゃ取り込めないみたいだからどーすればいいか分かる方いらっしゃいますか?
87デフォルトの名無しさん:2009/02/14(土) 17:34:16
88デフォルトの名無しさん:2009/02/14(土) 19:23:41
Ubuntu(VM)にOpenCVインストールしたんですけど
サンプルプログラム実行しようとしたら以下のようなエラーが出ました。
OpenCV ERROR: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support)
心あたりがある人いませんか?
※ make installやらbuild_all.shまで成功したのにcvNamedWindow()で失敗するみたいですが。
インストールの参考にしたのは以下のページです。
http://vision.kuee.kyoto-u.ac.jp/~yosimoto/opencv/opencv-howto/opencv-install.html
89デフォルトの名無しさん:2009/02/14(土) 20:34:11
Rebuild the library with Windows, GTK+ 2.x or Carbon supportすればいい
90デフォルトの名無しさん:2009/02/14(土) 20:42:34
>>87さん
そういうことです;;

ネットワークカメラから、そのプログラムを利用して録画したいんですが・・・
91デフォルトの名無しさん:2009/02/15(日) 14:33:28
>>90
ネットワークカメラのことがわからないんだけど、
OpenCVでは認識できないからキャプチャーできないってことかな
カメラの映像はBMPでとってくるしか手段がないの?

そうなら>>87の例のキャプチャ部分(cvQueryFrame())の変わりに、
そのBMPをcvLoadImageで読み込む処理を入れたらよさそう
92デフォルトの名無しさん:2009/02/15(日) 14:36:48
>>90
あ、あと肝心なことを言い忘れた。
ググレカス

ttp://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200809/08090011.txt
93デフォルトの名無しさん:2009/02/15(日) 15:07:17
Condensationを使って複数の物体を追いかけたいと思っていますが、
今ひとつ使い方が理解できていません。

http://opencv.jp/sample/estimators.html#condensation では
cvConDensInitSampleSetのupperとlowerで画像全体を指定していますが、
特定の初期位置がわかっているものを追いかける場合は
ここでその位置を与えてやればよいのでしょうか。

また、対象が複数ある場合はそれぞれのCvConDensationを用意するのでしょうか。
二つの位置が重なったとき、両方のパーティクルが片方についていかないための工夫があれば教えてください。
速度の違いがあれば分離できるのかな……
94デフォルトの名無しさん:2009/02/16(月) 22:32:12
初心者です。
OPEV_CVのコンパイルがどうしてもできなく困っているので教えて下さい。

OS Vista
コンパイラ Visual Stadio 2005 professional SP
.NET Freamwork Sp2
Open CVのインクルードファイルやライブラリ、プロジェクトの設定などは
http://chihara.naist.jp/people/2004/kenta-t/OpenCV/pukiwiki/index.php?%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB
を参考に行っています。
他のXPのPCで行うと動くのですが、なぜかVisutaで動きません。
OPENCVはOSに依存するのでしょうか?
自分のPCはVisutaなのほとほと困っています。

エラーはプログラムによって変化し、

C1083: include ファイルを開けません。'afxwin.h': No such file or directory

や、

fatal error LNK1104: ファイル 'cxcored.lib' を開くことができません。 cvsample
です。
他のPCで動きます。
また、VSもフルイントールしています。
95デフォルトの名無しさん:2009/02/16(月) 22:42:31
>>94
試しにVisual Studioを管理者として実行させてみ
96デフォルトの名無しさん:2009/02/16(月) 23:14:51
Visuta www
97デフォルトの名無しさん:2009/02/16(月) 23:36:27
>>96
俺は微笑ましい気持ちになった。今夜はよくネムレソウダ
98デフォルトの名無しさん:2009/02/17(火) 00:02:44
Vista環境だとインスト先とか変わる可能性があるから
パスがあってないんだろうな、
と思うけど、そもそもOpenCVの質問じゃないだろうから、
がんばれ、って言いたい・・・・・・・・・・・・・・・・


C1083: include ファイルを開けません。'afxwin.h': No such file or directory
                        ==============================
                        そんなファイルかディレクトリはないよ!
99デフォルトの名無しさん:2009/02/18(水) 00:07:26
100デフォルトの名無しさん:2009/02/18(水) 19:12:11
>>95、98
ありがとうございます。
原因なんですけれども、OpenCVのバージョンの問題でした。
良く見たら1.1を使用していました。
なので1.0を入れたらサンプルプログラムの方はすんなりと動いてくれました。
ただしビルドしたいプログラムは、MFCのところは動かなかったです。
原因はまだわかりません。XPだと動いてくれたのですが…
他も調べてみます。ありがとうございました。
101デフォルトの名無しさん:2009/02/19(木) 00:55:39
102デフォルトの名無しさん:2009/02/19(木) 00:57:08
103デフォルトの名無しさん:2009/02/21(土) 19:23:35
afxwin.hはMFCの一部だから
製品版VCが入ってないと無いんじゃね
Windows SDKのサンプルからコピってくればいいと思うが
104デフォルトの名無しさん:2009/02/21(土) 22:46:41
プログラミングを何も知らないのにいきなりOpenCVから始めようって人結構いるもんだね
105デフォルトの名無しさん:2009/02/22(日) 02:46:49
趣味じゃなくて、必要に迫られてはじめるとそうなるのが自然かもね
106デフォルトの名無しさん:2009/02/23(月) 07:21:35
>>93
>cvConDensInitSampleSetのupperとlowerで画像全体を指定していますが、
>特定の初期位置がわかっているものを追いかける場合は
>ここでその位置を与えてやればよいのでしょうか。
理論的には、その初期位置の確率を 1.0 、それ以外を 0.0 にすればいいわけで、
うん、それで実現できるんじゃないですかね。

>また、対象が複数ある場合はそれぞれのCvConDensationを用意するのでしょうか。
CONDENSATION は一応、トラックするオブジェクトの動き分布がガウシアンじゃなくても、
つまり、例えば複数個の Gaussian の重ね合わせとかだったとしてもうまくトラックできる、
というのが Kalman Filter に対してのウリだから、
1つの CONDENSATION で複数個のオブジェクトをトラックできるはずなんだけど、
実際にやってみると、あんまりうまくいかないんだよねぇ。
それぞれに対して1つ用意するほうがいいみたい。
>二つの位置が重なったとき、両方のパーティクルが片方についていかないための工夫があれば教えてください。
どっかで読んだ気もしたけれど、あまり「すごい工夫だな!」とは思わなくて覚えてないや。すまそ。

http://opencv.jp/sample/estimators.html#condensation
しかし、この例あまりよくないよね。
トラック状態が x,y だけの width とかのない点単位でのトラックだし、
そもそも表示が likelihood を反映せずに、全部の particle 表示しているだけだから、
なにやってんだろう、ってかんじに見えてしまう。
せめて、likelihood が一定以上なら表示、とかにしてくれないと。
というか、ボールらしさ、を表現するようにして、x,y,radius の状態をもつようにして、
最後の表示は mean を表示するとか、likelihood が max の particle を表示するように
するとかしてほしかった。
107デフォルトの名無しさん:2009/02/23(月) 07:37:13
>>44
>小さい画像をcvLoadImageしてから大きい画像と同じ大きさに拡大したところ1位になりましたが、
>大きい画像を小さい画像にして比較するとまたマッチ度は10位前後になってしまいます。
なんでだろうね。変なの。詳細考察きぼんぬ。

>>50
OpenCV にゼロクロス検出関数あったっけ?ないか。
自分で実装しないといけないのか。めんどうくさいね。
どこかに普通の C  実装はありそうだけど。

>>53
Learning OpenCV けっこう良かった。
理論もかいつまんで説明してあって、このかいつまみを読むだけでもなかなか。
ちなみにどっかにうぷされ(げふんげふん
108デフォルトの名無しさん:2009/02/24(火) 08:05:56
ExtraSURFのサンプルよりもマッチング条件を厳しくするのってどこいじったらいい?
あとOpenSURFと比べたことのあるひといる?
109デフォルトの名無しさん:2009/02/26(木) 08:22:13
pythonのopencvってswigで自動生成したの?
自動生成の後,多少手でいじってるの?
110デフォルトの名無しさん:2009/02/26(木) 19:06:27
swig
111デフォルトの名無しさん:2009/02/28(土) 11:38:47
画像処理ってどんな言語があってますの
いろいろ無駄な物作って慣れたら画像処理専門になりたいんだけど
112デフォルトの名無しさん:2009/02/28(土) 11:50:54
C++ 、C、Java、C#
113デフォルトの名無しさん:2009/02/28(土) 15:38:12
>>106
トンクス
114デフォルトの名無しさん:2009/03/01(日) 05:56:40
顔検出器のサンプルコード参考にして作成したんだけど
コンソールアプリケーションの方はうまく動いて、
フォームアプリケーションはなぜかエラーが起きるんだ・・・
環境はVC++2008
エラーの内容は
The error looks like this: Unspecified error (The node does not represent a user object (unknown type?))
in function cvRead, C:\Program Files\OpenCV\cxcore\src\cxpersistence.cpp (5040)
どうも
CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*)cvLoad( "haarcascade_frontalface_alt.xml" );
のところが原因らしい
なぜかフォームアプリケーションだけできないなんて・・・
誰か解決策を教えてくださいm(_ _)m
115デフォルトの名無しさん:2009/03/01(日) 14:00:33
>>114
haarcascade_frontalface_alt.xmlはある?
パスはあってる?
116デフォルトの名無しさん:2009/03/01(日) 17:07:37
>>115
あっています
上で書いたようにコンソールの方は正常に動いてくれるので・・・
http://opencv.willowgarage.com/wiki/FaceDetection
ここに書いてあるとおりopenCVのバグなんでしょうか?
117デフォルトの名無しさん:2009/03/01(日) 17:15:54
>>116
cvLoadHaarClassifierCascade使ってみたら?
118117:2009/03/01(日) 17:20:03
cvLoadHaarClassifierCascadeはxml読み込めないんだな。スマソ
119デフォルトの名無しさん:2009/03/01(日) 18:12:31
本当に困っているので誰か助けてもらえませんか?
120デフォルトの名無しさん:2009/03/01(日) 18:53:20
すいません自己解決しました
>>117を参考にして、次のように修正したら直りました
const char* name;
name = "haarcascade_frontalface_default.xml";
CvHaarClassifierCascade* cascade = 0;
cascade = cvLoadHaarClassifierCascade(name, cvSize(1,1));
ありがとうございました
121デフォルトの名無しさん:2009/03/01(日) 19:18:32
cvSize(1,1)って・・・それで動くんだ
122デフォルトの名無しさん:2009/03/01(日) 19:29:08
つか結局cvLoadHaarClassifierCascadeにしてもxmlの場合はcvLoadになるみたいだな。
123デフォルトの名無しさん:2009/03/02(月) 16:27:24
cvSize小さいと遅くなるんじゃない。
ウィンドウの最小サイズは、XMLに書いてある。
エラーの原因はC++にしててヘッダincludeしてなくて
デフォルト引数かABIが変になってるなど。
124デフォルトの名無しさん:2009/03/02(月) 19:43:37
>>123
結局>>120のソースだとcvLoadを呼ぶだけだからcvSizeは関係ないはず
第2引数はどんな値でもたぶん変わらない
125デフォルトの名無しさん:2009/03/07(土) 07:52:09
質問です
openCVのSVMって3以上の多クラス分類問題にも対応していますが、
ここで使用されてる手法って何ですか?
リファレンスで紹介されているhttp://citeseer.ist.psu.edu/burges98tutorial.htmlには
このことについて書いてないと思うのですけど(自分の見落としかもしれませんが
どなたか教えてください
126デフォルトの名無しさん:2009/03/07(土) 08:55:36
125です
すいません事故解決しました
openCVのSVCはlibsvmが元になっていて、libsvmのリファレンスページに書いてありました
127デフォルトの名無しさん:2009/03/12(木) 16:36:18
機械学習系だとopencv以外で便利なのはないかな
128デフォルトの名無しさん:2009/03/13(金) 09:03:25
ググレカス
129デフォルトの名無しさん:2009/03/15(日) 01:02:39
PlayStation3のCellでOpenCV
OpenCV on the Cell
http://cell.fixstars.com/opencv/index.php/OpenCV_on_the_Cell
130glrkXGLykzumzP:2009/04/14(火) 07:14:48
131デフォルトの名無しさん:2009/04/16(木) 18:02:48
最近opencvに貢献されたコードがc++になってるのなんなの
pythonから使いにくいんだけど
132デフォルトの名無しさん:2009/04/20(月) 20:18:24
opencvのpythonバージョンに関しての質問があります。
ピクセル値の参照って、どうやって行うのでしょうか?
c,c++だと、img->imageData[img->stepWidth * y + x];
みたいなことができたのですが、、、

どなたか教えていただけないでしょうか。
133デフォルトの名無しさん:2009/04/21(火) 02:47:00
1chならcvGetReal2D。multiならcvGet2D。
x,yではなく行,列なので注意。

SVNのC++化は極端だよな。各種Wrapperオワタな雰囲気。
134デフォルトの名無しさん:2009/04/21(火) 15:52:06
>> 133
おお。ありがとうございます。
大変助かりました!
135デフォルトの名無しさん:2009/04/22(水) 15:46:53
>>133
python使うようになったらc++は使わなくなったなあ
opencvはcだからいいのであってc++になったら他にもいいのは結構あるんだな
insight tool kitとかさ
136デフォルトの名無しさん:2009/04/27(月) 16:59:30
openCVのインターフェイス上で「画像の名前を指定して読み込む」みたいな方法ってありませんか?

今は、gluiを使ってやってるんだけど、それ以外ではglui使ってないので
なるべくgluiは外しておきたいんですよね。。
137デフォルトの名無しさん:2009/04/27(月) 19:09:42
ありますん
138デフォルトの名無しさん:2009/04/29(水) 02:26:31
マウスイベントとってダイアログ開いてcvLoadすれば
139デフォルトの名無しさん:2009/05/09(土) 20:51:19
cvLoadImageで画像を取り込んだんですが
cvShowImageで表示ができません

IplImageのimageDataを見ると、
文字化けしたような値が入っているので
ロードに失敗しているような感じなんですが…

解決法知っていれば、どなたか教えていただけないでしょうか?
画像ビューワーでは見れてます。

---------コード----------
IplImage *originalImage = cvLoadImage( "aaa.jpg", CV_LOAD_IMAGE_ANYDEPTH || CV_LOAD_IMAGE_ANYCOLOR);
if( originalImage == NULL ){
puts("読み込み失敗");
return 1;
}


cvShowImage( windowNameOriginal, originalImage );
140デフォルトの名無しさん:2009/05/09(土) 20:53:57
>>139
cvNamedWindowはちゃんとしてんの?
141デフォルトの名無しさん:2009/05/09(土) 21:03:26
>>140

してます
全体は
int main(array<System::String ^> ^args)
{
char windowNameOriginal[] = "Original";
cvNamedWindow( windowNameOriginal, CV_WINDOW_AUTOSIZE );



IplImage *originalImage = cvLoadImage( "aaa.jpg", CV_LOAD_IMAGE_ANYDEPTH || CV_LOAD_IMAGE_ANYCOLOR);
if( originalImage == NULL ){
puts("読み込み失敗");
return 1;
}


cvShowImage( windowNameOriginal, originalImage );
getchar();

return 0;
}

な感じです。
http://oshiete1.goo.ne.jp/qa4561803.html?ans_count_asc=20
の人と似た現象なので、VCの設定問題かもしれないです。
142139:2009/05/09(土) 21:38:32
getcha()で待ったのがガンだったみたいです
cvWaitKey(0);
に変えたら解決
143デフォルトの名無しさん:2009/05/10(日) 18:45:31
スレチだったらごめんなさい

画角が100°程度でOPENCVで使いやすいカメラってありませんか?
144デフォルトの名無しさん:2009/05/13(水) 19:27:10
>>143
一般的なUSBのやつだと75度くらいまでしか見当たらないなぁ。
145デフォルトの名無しさん:2009/05/17(日) 19:51:12
haarcascade_frontalface_alt2.xmlの結果を
引き継いだカスタムの
haarcascade_frontalface_alt3.xmlを作成する
というのは簡単でしょうか

146デフォルトの名無しさん:2009/05/18(月) 02:10:46
haarcascade_frontalface_alt2.xmlを学習したデータがないと無理じゃね
147デフォルトの名無しさん:2009/05/18(月) 08:55:12
>>145
haarcascade_frontalface_alt2.xmlの内容をフォルダ形式(txt形式)に直して、haartrainingの-dataにそのフォルダを渡せば続きのステージから学習はできるはず。
148デフォルトの名無しさん:2009/05/18(月) 21:33:08
>>144
ですよね・・・レスどもでした。
149デフォルトの名無しさん:2009/05/21(木) 23:14:31
>>143
値段は5万を超えるけど、アルゴが扱っているImageing source社の
産業用USBカメラ+CマウントレンズならOPENCVでも使えるし
画角100度以上が選べるよ。
150デフォルトの名無しさん:2009/05/21(木) 23:34:05
undistort2で歪み除去後の画像の光学中心が画像中心にならないんだけど
たとえばVGAサイズで以下のような内部パラメータのとき
320 0 340
A=0 320 250
0 0 1
補正前の画像中心(340, 250)が補正後(320, 240)に来るはずだよね?
なぜかさらにずれて(360, 260)になる。
試しに内部パラメータの画像中心を(300, 230)に設定すると補正後の中心は(320, 240)になる。
なんで????
151デフォルトの名無しさん:2009/05/22(金) 00:23:21
>>149
価格がぶっ飛んでますね・・・

金銭的に買えなそうです・・・でも情報ありがとうございました!
152デフォルトの名無しさん:2009/05/22(金) 01:20:04
画像の加算合成の関数とかないの?
自分で作っちゃったけど効率が悪い気がする
153デフォルトの名無しさん:2009/05/22(金) 18:16:04
うまく実行されたりされなかったりするんですが何とかならないですかね…
主にトラックバーの表示なんですが
154デフォルトの名無しさん:2009/05/23(土) 13:27:36
>>150なんですけど、ここの住人さんはカメラの歪み除去せずにOpenCV使ってるの?
もし歪み除去してたら同じ現象が起こるかどうか教えてもらいたいんですけど
155デフォルトの名無しさん:2009/05/23(土) 17:40:09
Windows環境の1.1preでcvCreateVideoWriterで、第2引数にCV_FOURCC_PROMPTまたは-1を設定しても、
コーデックの設定画面出さずに、しかも読み込めないaviっぽいファイル(真空波動研でエラー)を出すようになってしまった。
コマンドプロンプトの出力見ると、勝手にffmpegを使って出力してるみたい。
どうもffdshowを入れてから挙動が変わったっぽいけど、ffdshowをアンインストールしても何かが残ってるのか、元に戻らない…
こういう時って、OSのクリーンインストールとhighguiのリビルド以外でどうやったらVFW使うように戻せるか情報ってある?
156デフォルトの名無しさん:2009/05/24(日) 04:04:08
バージョン1.1からffmpegでDirectShow使い始めたらしく1.0の時よりだいぶ高速になってるよ。
ffmpegも更新が速いから次のバージョンではエラー無くなってるはず。
わざわざVFWなんて古いのに戻さなくてもいいんじゃない?
AVI保存のエラーはTMPGEncとかで非圧縮AVIに書き出しなおせば直ると思う。
157デフォルトの名無しさん:2009/05/24(日) 08:25:38
>>152

つ「cvAdd」
158デフォルトの名無しさん:2009/05/24(日) 08:31:26
>>150
画像が上下反転してるとかじゃない?要所要所で画像出力してみれば。
159デフォルトの名無しさん:2009/05/24(日) 10:59:35
>>158
画像をLoadImageした直後にUndistort2してるだけだから反転してないのは確認済みです
160デフォルトの名無しさん:2009/05/24(日) 12:42:32
>>159
ソース読めば分かるが、前バージョンからundistort2の内部が変更されたからねー
特に主点のあたりが
161デフォルトの名無しさん:2009/05/27(水) 19:19:04
SVNからチェックアウトしてOpenCVのソースコードを勉強しているのですが、
OpenCVのSobelフィルタのアルゴリズムがよくわかりません。
(一般的なSobelフィルタのアルゴリズムがわからないのではありません。)

どなたか解説できる方はいらっしゃいませんでしょうか?
162155:2009/05/28(木) 01:23:02
>>156
ffmpegでも実行時にビットレートやエンコードオプションの設定ができればいいんですけど、
cvCreateVideoWriterを使う限りはVFWでしか無理っすよね…

結局cvffmpeg110.dllをリネームして無理矢理VFWを使うようにしたけど、
今度はcvCreateFileCaptureあたりが動かなくなりそうだ…
163デフォルトの名無しさん:2009/06/03(水) 17:21:20
>>161
どこがどう分からないのかが分からない。ビット演算とかでやってるとか?
164デフォルトの名無しさん:2009/06/05(金) 13:09:27
OpenCVを使って文字認識をさせることはできますか?
165デフォルトの名無しさん:2009/06/05(金) 17:09:25
>>164
出来る。
画像処理とパターン認識入門って本が役立つと思う
166デフォルトの名無しさん:2009/06/06(土) 03:00:36

テンプレートマッチングとかできるの
あれ
167デフォルトの名無しさん:2009/06/06(土) 06:22:43
できるにきまってるじゃん。リアルタイムで。
168167:2009/06/06(土) 06:25:39
>>166
「あれ」ってなんのこと?OpenCV?

>>164
手書きの文字認識とかなら、テンプレートマッチングじゃなくて、
OpenCVのHaar-Like学習で手書き文字を学習させるといいかも。
169デフォルトの名無しさん:2009/06/06(土) 09:26:17
>>165
ありがとうございます。本屋で見てみます。

>>168
Haar-Like学習ってのは顔の検出アルゴリズムだけじゃなくて文字もイケるんでしょうか。
取りあえずやってみたいと思います。
170デフォルトの名無しさん:2009/06/06(土) 11:16:24
顔ちぇきってOpenCV使ってるのかな。
171デフォルトの名無しさん:2009/06/06(土) 12:18:25
シラネ
172デフォルトの名無しさん:2009/06/06(土) 15:57:33
へえすごいんだねOpencv
173デフォルトの名無しさん:2009/06/06(土) 22:48:13
OpenCVを使って顔認証することはできますか?

けっこうググったけど、あまりいい情報見つからず。
174173:2009/06/06(土) 22:54:37


ここでいう認証は登録してある、写真をもとに同一人物であるかどうか
という意味での顔認証です。

見つけるという意味ではないです。
175デフォルトの名無しさん:2009/06/07(日) 00:17:32
どのような手法を想定しているのかわからんけど
OpenCVに何を期待しているの?

顔認証したいならかなりの部分を自分で実装しないといけないんじゃないかと思うよ
ttp://www.face-rec.org/
このサイトに資料が充実してるよ
176デフォルトの名無しさん:2009/06/07(日) 01:47:20

ライブラリがそろってるわけでは無いのね
177デフォルトの名無しさん:2009/06/07(日) 02:42:16
池沼レス認証パターンを見つけたよ

一行目に

そして全てage
178デフォルトの名無しさん:2009/06/07(日) 05:29:57
「顔ちぇき」はまさに顔認証だな。OpenCVを使ってるかどうかは不明だけど。
OpenCVでやりたいなら、認識させたい顔をHaarLike学習させて、その顔ごとに
特徴ファイルを分ければ顔『認識』ができそうだな。
179デフォルトの名無しさん:2009/06/07(日) 05:41:12
でも内容的には今一なんだねOpenCVでやると
180デフォルトの名無しさん:2009/06/07(日) 12:37:53
だからお前はOpenCVに何を期待してるんだよ
OpenCVは画像処理/認識のライブラリであって
顔認識のライブラリじゃねーよ
181デフォルトの名無しさん:2009/06/07(日) 18:51:20
質問させてください。
Ver1.1で追加?されるMakeScanlinesがうまく動きません。
1つ目の引数のCvMatrix3の型で引っかかっているようなのです。
CvMatrix3でググってみましたがヒットしませんでした。
F行列はCvMat型で、キャストしてみましたがうまくいかず・・・
動かした経験のある方、助言していただけると嬉しいです。
182181:2009/06/07(日) 19:06:17
すみません自己解決しました…
純粋にキャストミスでしたorz スレ汚しすみません;;
183デフォルトの名無しさん:2009/06/07(日) 19:11:54
>>180
顔認識は画像認識だよね。
184デフォルトの名無しさん:2009/06/08(月) 00:10:51
顔認識は画像認識の応用だろ
185デフォルトの名無しさん:2009/06/08(月) 00:24:15
だからOpenGLは顔認識だと?
186デフォルトの名無しさん:2009/06/08(月) 01:51:30
まあ画像処理そのもののおうようでも有るしな
高度なのはダメといわれればそれまでだけど
187デフォルトの名無しさん:2009/06/08(月) 12:48:41
OpenCVは顔も含めて画像認識を楽にできるようにする「ライブラリ」だろ。
顔認識アルゴリズムを自前で実装するもよし、内蔵のHaarLikeを使うもよし。
>>179は自分で実装もチューニングもやったのか?
188デフォルトの名無しさん:2009/06/08(月) 14:31:22
OpenCVやり始めたんだけど動画が再生できないんだけどどうすりゃいい?
189デフォルトの名無しさん:2009/06/08(月) 15:06:08

ffdshowを入れればどんな動画も再生できるようになるんだな
この一番上のやつ

http://sourceforge.net/project/showfiles.php?group_id=173941
190デフォルトの名無しさん:2009/06/08(月) 15:07:09
>>188
どの段階で止まるかによる.
たとえば,AVI読み込み失敗ならコーデック不足.
191デフォルトの名無しさん:2009/06/08(月) 15:23:58
if(name == "デフォルトの名無しさん[] ") && (first_line == "あ\n") ) { ikenuma_flag = 1; }
192デフォルトの名無しさん:2009/06/08(月) 15:44:14

だけでは同一人物だとは限定できないよね
プログラムの基本だよ
193デフォルトの名無しさん:2009/06/08(月) 16:16:44
>>189のような偽物が出てくると認識率が下がってしまいます。
顔認識でも双子とかそっくりサンがでてきたら駄目でしょうね。
DNA鑑定だって100%はありえないですからね。
194デフォルトの名無しさん:2009/06/08(月) 16:18:58
数字が並んだテキストファイルをCvMatに読み込ませたいのですが
関数1つではできないのでしょうか?

1 2 3
4 5 6

というテキストがあったら
cvCreateMat(2,3)
と各入れる要素の読み込みまでしたいのです
195デフォルトの名無しさん:2009/06/08(月) 16:44:15
>>190
ありがとう。ffdshowインストールしたら動画再生されるようになった。取りあえずコーデックを全部いれといた。


次はUSBカメラを買ってきて再生してみる。お勧めのUSBカメラあったら教えてくれ。
196デフォルトの名無しさん:2009/06/08(月) 17:25:29

やっぱりいいや
これにするわ

http://www.amazon.co.jp/dp/B0001ZWN7M
197sage:2009/06/08(月) 18:41:32
質問させていただきます。
cvStereoCaribrateを使いたいのですが
引数の設定に悩んでいます

第4引数まで(以下リファレンスよりコピー)
object_points
オブジェクト点の結合行列,3xN あるいは Nx3.ここで, N は全てのビューにおける点数の合計.
image_points1
1 番目のカメラのビューにおける画像間対応点の結合行列, 2xN あるいは Nx2.ここで,N は全てのビューにおける点数の合計.
image_points2
2 番目のカメラのビューにおける画像間対応点の結合行列, 2xN あるいは Nx2.ここで,N は全てのビューにおける点数の合計.
point_counts
各ビューに含まれる点数のベクトル,1xM あるいは Mx1. ここで,M はビューの数.

結合行列という単語で引っかかっているのですが、
それぞれどういった内容の配列を与えればいいか教えてください
198デフォルトの名無しさん:2009/06/08(月) 19:56:48
OpenCVのキャリブレーションは全方位カメラや魚眼レンズでも使えますか?
199デフォルトの名無しさん:2009/06/08(月) 20:54:16
やったことはないけど歪み過ぎてチェスボードが検出できないと思う。
Matlabなら魚眼対応ツールあるけど
200デフォルトの名無しさん:2009/06/08(月) 22:50:15
PS2のUSBカメラが使えるらしいけど他のより性能いいの?使ってる人
201デフォルトの名無しさん:2009/06/08(月) 23:00:05
Webカメラのスレで聞いてみなよ
202デフォルトの名無しさん:2009/06/08(月) 23:12:20
>>200
USBカメラの中で最高の性能だよ。
人気で品薄になってるから見かけたら即買ったほうがいい
203200:2009/06/09(火) 01:50:57
>>202
まじっすか。買ってみる。OpenCVで使ったらFPS早くなるかな。
204デフォルトの名無しさん:2009/06/09(火) 04:51:55
>>198 >>199
いったんラフに極座標変換とかして平面にしてからキャリブレーションすればいいんじゃないか?
205デフォルトの名無しさん:2009/06/09(火) 22:36:54
>>198
OpenCVはピンホールカメラモデルを仮定してるから,これに従う投影像
ならいい.ということで全方位カメラは無理.
魚眼レンズは画像中心付近はピンホールカメラモデルに近似できない
こともないからなんとかなるかも.中心以外はレンズ歪みを補正しきれ
ないと思う.
206デフォルトの名無しさん:2009/06/10(水) 12:32:56
matlabの吐く.datファイル(数字が並んだだけのテキストファイル)をOpenCVに読ませる関数はないのでしょうか
207198:2009/06/10(水) 15:49:41
解答してくれた人ありがとう。いろいろ試行錯誤してみる
208デフォルトの名無しさん:2009/06/11(木) 22:25:28
>>206
OpenCVって16ビットの画像も扱えるんだから、CSVなんか使わないで
画像自体をCSVの代わりに使ったら?
CSVだと横の要素の制限(256?)があるし。
209デフォルトの名無しさん:2009/06/11(木) 22:48:42
>>208
pythonとか他の言語でも使うこと考えるとcsvが一番便利なんです
210208:2009/06/11(木) 23:53:09
>>209
なるほど。自前で実装するといいよ。
数字だけでいいんだったらfgetsで一行づつ読み込んで
「,」で分けて配列に入れていけばいいじゃん。
211デフォルトの名無しさん:2009/06/12(金) 00:28:10
>>208
嘘はやめれ。csvに列数の制限など無い
Excelの制限(65536x256)と勘違いしていないか
212デフォルトの名無しさん:2009/06/12(金) 09:05:32
へぇ
213デフォルトの名無しさん:2009/06/12(金) 11:11:45
動画ファイルを読み込んで、その動画の強弱に合わせてアーティスティックな映像を
出すなんてことはできますか?メディアプレーヤーの視覚効果みたいなものです。
214デフォルトの名無しさん:2009/06/12(金) 11:13:55
>>211
Excelに256カラムの制限なんてない。そりゃぁ、かつてはあったかも知らんが。
215デフォルトの名無しさん:2009/06/12(金) 11:26:02
Excel 2007 では、以前のバージョンの列数制限 256 列 (IV) から16,384 列 (XFD) に拡大された。

http://office.microsoft.com/ja-jp/excel/HP100738491041.aspx?pid=CH101030621041
216デフォルトの名無しさん:2009/06/12(金) 11:27:37
>>213
できる。
217デフォルトの名無しさん:2009/06/12(金) 13:49:35
>>213
できまっせ!
218213:2009/06/12(金) 14:42:16
いや、どうやったらできるかというか、その指針だけでもみんなに提案してもらおうと。
できるかできないかを聞いてるんじゃなくて。
219デフォルトの名無しさん:2009/06/12(金) 15:05:36
指針としては、まず動画ファイルを読み込んでみてそれができたら次を考える。
ちなみにメディアプレーヤーの視覚効果の入力は動「画」ではないんじゃね?
220デフォルトの名無しさん:2009/06/12(金) 15:20:23
指針

其の壱  動画を読み込む。

其の弐  動画の強弱を求める。

其の参  強弱に合わせて映像をアーティスティックに変化させる。

以上
221213:2009/06/12(金) 16:09:22
えーと、その流れだってことは何となく分かってます。大丈夫でエス。
ところで、動画が再生できないんだけど。。。 どうすればいい???
222デフォルトの名無しさん:2009/06/12(金) 16:10:21
では聞くが、「動画の強弱」とは一体何なのだ。
223213:2009/06/12(金) 16:13:33
なんなんでしょう。やっぱ明るさっすかね?
224213:2009/06/12(金) 16:33:26
これで動画が再生できるはずなんですけどなんかおかしいですか?
Visual C++ Express 2008で作ってます。


#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")

int _tmain(int argc, _TCHAR* argv[])
{
CvCapture* src;
IplImage* frame;
cvNamedWindow("動画");
src = cvCaptureFromFile("動画.avi");
while(1){
frame = cvQueryFrame(src);
cvShowImage("動画", frame);
cvWaitKey(33);
}
cvDestroyWindow("動画");
cvReleaseCapture(&src);
return 0;
}
225デフォルトの名無しさん:2009/06/12(金) 16:40:58
>>224
これ無限ループしないか?
226213:2009/06/12(金) 16:57:24
すまん。過去ログ>>189に動画の再生方法書いてあったぜ。
ffdshowってのでコーデックを入れればよかったんだな。
動画は再生できた。ただ>>225がいうように無限ループになる。

あとは動画の強弱の取り出し方だが、何かよい方法を提案してくれ。
227デフォルトの名無しさん:2009/06/12(金) 17:07:26
>>226
強弱ってのが何の強弱を意味するのかわからんが、画素値の平均とか標準偏差ならcvAvgとかcvAvgSdvとかでいいんじゃない?
228デフォルトの名無しさん:2009/06/12(金) 17:34:11
提案ねー。ピンボケしてたら弱い、クッキリしてたら強いってのはどう?
229デフォルトの名無しさん:2009/06/12(金) 17:35:58
色の変化が大きければ強くて変化が小さければ弱いってことでどうだろう。
230213:2009/06/12(金) 17:43:01
>>227
平均値を出してみた。いい感じで動画の明るさに応じて変化しているようだ。
で?っていう。


#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")

int _tmain(int argc, _TCHAR* argv[])
{
CvCapture* src;
IplImage* frame;
cvNamedWindow("動画");
src = cvCaptureFromFile("動画.avi");
while(1){
frame = cvQueryFrame(src);
printf("平均値は%fだ。\n", cvAvg(frame));
cvShowImage("動画", frame);
cvWaitKey(33);
}
cvDestroyWindow("動画");
cvReleaseCapture(&src);
return 0;
}
231デフォルトの名無しさん:2009/06/12(金) 17:45:00
>>228 >>229
おお。いいね。
232213:2009/06/12(金) 17:54:15
でもどうやったら。ちょっと調べてくる。
233デフォルトの名無しさん:2009/06/12(金) 20:38:55
213の口調はともかく
行動力に好感
234デフォルトの名無しさん:2009/06/12(金) 21:16:51
ブログを書く植物、その名も「緑さん」。
USBウェブカメラで撮影した映像でいろいろやってるみたい。
http://japan.cnet.com/news/tech/story/0,2000056025,20394905,00.htm
235デフォルトの名無しさん:2009/06/12(金) 23:54:08
癒し系だな
236デフォルトの名無しさん:2009/06/14(日) 21:41:59
あるノートパソコンでOpenCVをインストールしてサンプルプログラムを
実行したりしたんですけど、整数型しか使わないサンプルは動くんですが
小数型を使うプログラムは動かないみたいです。同じような症状が出た人
いますか?解決法があれば教えてください。
237名無し募集中。。。:2009/06/14(日) 23:22:52
「あるノートパソコン」以外では正常に動くのかね?
238236:2009/06/15(月) 00:52:21
>>237
はい、デスクトップPCでは動きます。ちなみに動かないのはミニノートPCです。
多分、グラフィックボードが対応してないとかなんでしょうかね?
239名無し募集中。。。:2009/06/15(月) 01:04:41
グラフィックボードに依存した「サンプルプログラム」なのか?
少数型(浮動小数点?)の演算にグラフィックボードが依存するってgpgpuの事かね
環境や症状を人にわかるように説明出来なければヒントすら得られないと思うぜ
240デフォルトの名無しさん:2009/06/15(月) 07:13:51
入ってるOpenCVのバージョンが違うに一票
241236:2009/06/15(月) 12:19:36
デスクトップ、ミニノートPCとも、XPのSP3にOpenCV1.1preをインストールした直後の状態です。
普通、サンプルプログラム(例えばDFTサンプルのdft.exe)なんか普通に実行できるはずなのに、
できないんです(デスクトップでは普通に実行できる)。
原因となっている関数を特定する為に、ソースコードを1つづつ削ったりしながら
ビルド&実行してみると、どうやら小数型の関数で引っかかっているみたいなんです。
最悪、OSの再インストールからやってみるべきかとも思っています。
242デフォルトの名無しさん:2009/06/15(月) 12:43:48
そもそも、「小数型の関数」なんてものはないだろ。
説明が下手なんだから、ソースを晒せよ。
243236:2009/06/15(月) 13:04:55
下のソースのcvCreateImageの一行目で小数型(IPL_DEPTH_16S)のIplImage変数を
準備してるところでエラー発生。

#include <cv.h>
#include <highgui.h>

int main (int argc, char **argv)
{
IplImage *src_img, *dst_img, *tmp_img;

// 画像の読み込み
if (argc != 2 || (src_img = cvLoadImage (argv[1], CV_LOAD_IMAGE_GRAYSCALE)) == 0)
return -1;

tmp_img = cvCreateImage (cvGetSize (src_img), IPL_DEPTH_16S, 1);
dst_img = cvCreateImage (cvGetSize (src_img), IPL_DEPTH_8U, 1);

cvSobel (src_img, tmp_img, 1, 0); // Sobelフィルタ

cvNamedWindow ("Sobel", CV_WINDOW_AUTOSIZE);
cvShowImage ("Sobel", dst_img);

cvWaitKey (0);

cvDestroyWindow ("Sobel");
cvReleaseImage (&src_img); cvReleaseImage (&dst_img); cvReleaseImage (&tmp_img);
return 0;
}

244236:2009/06/15(月) 13:08:41
上のソースは、張り付け間違えました。
下のソースのcvCreateImageで小数型(IPL_DEPTH_16S)のIplImage変数を
準備してるところでエラー発生。

#include <cv.h>
#include <highgui.h>

int main (int argc, char **argv)
{
IplImage *src_img, *dst_img;

// 画像の読み込み
if (argc != 2 || (src_img = cvLoadImage (argv[1], CV_LOAD_IMAGE_GRAYSCALE)) == 0)
return -1;

dst_img = cvCreateImage (cvGetSize (src_img), IPL_DEPTH_16S, 1);

cvSobel (src_img, dst_img, 1, 0); // Sobelフィルタ

cvNamedWindow ("Sobel", CV_WINDOW_AUTOSIZE);
cvShowImage ("Sobel", dst_img);

cvWaitKey (0);

cvDestroyWindow ("Sobel");
cvReleaseImage (&src_img); cvReleaseImage (&dst_img);
return 0;
}
245デフォルトの名無しさん:2009/06/15(月) 14:05:27
説明が下手な馬鹿でどうしようもないんだから、エラーメッセージくらい貼れよ。
なんだよ、準備って。俺語なんか作ってんじゃねぇって。
246デフォルトの名無しさん:2009/06/15(月) 14:44:42
いつからIPL_DEPTH_16S を少数型って言うようになったんだ?
247デフォルトの名無しさん:2009/06/15(月) 14:55:59
>>245 >>246
つたわりゃいいだろ。おまえならどう説明するんだい?
248デフォルトの名無しさん:2009/06/15(月) 14:59:33
お頭が硬いのかな?俺語くらい受け入れられなきゃだめだぞ。
249デフォルトの名無しさん:2009/06/15(月) 15:02:44
>>236はもう他のスレに行け。はてなとか。
250デフォルトの名無しさん:2009/06/15(月) 15:41:26
>>247
つたわんないだろ。IPL_DEPTH_16Sは符号有り 16 ビット「整数」
251名無し募集中。。。:2009/06/15(月) 15:42:13
IPL_DEPTH_16Sは符号付き16bit整数ね
252236:2009/06/15(月) 16:14:22

間違い、IPL_DEPTH_16Sじゃなく単精度浮動小数点数IPL_DEPTH_32Fを
使ったときにエラーが出るんだ。さっきのソースは適当に組んだもんで
実際には実行可能。
兎に角、ソースが悪いのではなくOpenCVとミニノートの相性が悪いみたい。
エラーメッセージは今そのPCが手元に無いので貼れず。
うまく動けばモバイルでOpenCVを使っていろいろできそう。
さあ、どうしたらよいのでしょうか。
253デフォルトの名無しさん:2009/06/15(月) 16:15:40
死ね。悪いことは言わん。それが身のためだ。
254デフォルトの名無しさん:2009/06/15(月) 16:22:10
メモリが足りない
255デフォルトの名無しさん:2009/06/15(月) 17:08:10
>>253
死ね。悪いことは言わん。それが身のためだ。
256デフォルトの名無しさん:2009/06/15(月) 17:14:03
おい、>>253はストレス溜まってるから放置しとけ。決して構うな。
257デフォルトの名無しさん:2009/06/15(月) 17:24:04
相手にしたら負け。放置が基本。
258デフォルトの名無しさん:2009/06/15(月) 18:36:53
OpenCVで回転補正有りのパターンマッチングってできますか??
259デフォルトの名無しさん:2009/06/15(月) 21:27:58
>>258
テンプレートマッチングのテンプレートを回転させる方法もあるけどめちゃくちゃ遅い。
Haar-Like特徴分類の機械学習でやれば、実時間で検出可能。
260デフォルトの名無しさん:2009/06/15(月) 22:10:39
>>259
Haar-Like特徴分類手法はかなり学習が必要と
本に書いていました。
マスター画像1回の取り込みで、回転パターンマッチングが
やりたいのですが・・・。
特徴点自動抽出のGoodFeaturesToTrack()とかでできるのかな??
261デフォルトの名無しさん:2009/06/15(月) 22:45:57
>>260
こういうのはどう?
1、GoodFeaturesToTrack()で、探し先画像と探す画像の特徴点を自動抽出しとく。
2、探す画像の特徴点の分布と同じ物を、探し先の特徴点の分布から探す。
こうすれば、画像の画素全体を走査しなくていいから早いかもよ!
262デフォルトの名無しさん:2009/06/15(月) 22:51:53
HaarLikeはかなりロバストで高速なんだがな。
263デフォルトの名無しさん:2009/06/15(月) 23:03:39
SURFでいいじゃん
264デフォルトの名無しさん:2009/06/15(月) 23:12:32
最近、微分値(明るさの変化)だったかを特徴に用いて検出するって方法が出てなかったか?
265デフォルトの名無しさん:2009/06/15(月) 23:25:59
>>261
ありがとうございます、ソフト作ってやってみます。

>>262
「登録は一発で」という要望が多いもので・・・。

>>263
おおお、ソフト作ってみます。

>>264
エッジ画像で高速回転パターンマッチングする機能を
画像処理機でよく見かけますが、探しているのは
まさににその手の機能です・・・。
266名無し募集中。。。:2009/06/16(火) 09:13:53
いわゆる正規化相関マッチングとか、幾何学相関マッチングではないから
「登録はイッパツ」が欲しければ、ライブラリを買うしかないんじゃないのかな
267デフォルトの名無しさん:2009/06/16(火) 11:46:37
「登録は一発」のソフトを誰か作ってよ。OpenCV使えばできそうじゃん。
268デフォルトの名無しさん:2009/06/16(火) 11:55:06
>>267
言いだしっぺの法則
269デフォルトの名無しさん:2009/06/16(火) 12:38:34
要するにHaarLikeのGUI版か。それはいいな。そんなに高くなければ欲しいかも。
270デフォルトの名無しさん:2009/06/16(火) 14:12:32
>>269
HaarLike学習は学習用の画像(検出画像が含まれない非正解画像)が沢山必要
だから「一発」じゃ無理だろ。>>260は「マスタ画像の取り込み1回」で
検出先画像から検出させたいっつってんだから。
ただHaarLikeは「任意の」背景も含めて学習させるからロバストではあるわな。
271265:2009/06/16(火) 22:34:48
SURFで回転パターンマッチングやってみまようとしましたが、
cvExtractSURF()を実行するのに640x480x8bitのモノクロ画像で
Core2 Quad Q6600 2.4GHz, mem 2GBで
350msecもかかるんですね・・・。
これでは、いまいち実用的でないです・・・。

テンプレートは150x150pixelくらいとして、20〜50msecで
回転パターンマッチングはできないものかなぁ・・・。
272デフォルトの名無しさん:2009/06/16(火) 23:21:47
>>271
どういう背景中のどういう物体を検出しようとしてんの?
273271:2009/06/17(水) 00:12:49
>>272

印刷図柄中のある部分を切り出したいんです。

印刷図柄とは、スーパーの広告のチラシの様な少々派手目の特徴ある図柄です。
この図柄はどっちを向いているか(回転方向に)わからないのですが、
これをまっすぐ(チラシが読める向き)にして、
その中の特定のエリアを切り出したいのですが・・・。

こういう要求は、画像処理の前処理として非常に多いんです。
274デフォルトの名無しさん:2009/06/17(水) 01:22:35
チラシ抽出ならSURFでQVGAもいらんだろ。120x160くらいで十分だと思う。
もしくは GPUSIFT か http://mi.eng.cam.ac.uk/~gr281/docs/WagnerIsmar08NFT.pdf あたりを自前で実装するかだな。
275デフォルトの名無しさん:2009/06/17(水) 01:51:49
検出先がチラシの様な図柄って分かってるんだったら、まず検出先の傾き補正を
すれば、テンプレートは垂直1つでいいんじゃないか?
276デフォルトの名無しさん:2009/06/17(水) 10:23:29
>>273
最初の「OpenCVで」という条件を外せば楽勝だと思うのだが
外すのは無理なのか
277デフォルトの名無しさん:2009/06/17(水) 17:39:37
open cvで画像を20度ずつ回転させるプログラムを作りたいんですが

回転サンプルプログラムにfor文をどう組み込めばできますか.教えてください.
278デフォルトの名無しさん:2009/06/17(水) 18:43:02
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
int main(int argc, char **argv){
IplImage *img = 0, *img2 = 0;
CvMat* rotationMat = 0;
bool isStop = false;
int waitKey;
int rotate = 0;
img = cvLoadImage(argv[1], CV_LOAD_IMAGE_COLOR);
img2 = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3);
cvNamedWindow("Image", CV_WINDOW_AUTOSIZE);
while (1){
if (!isStop){
rotationMat = cvCreateMat(2, 3, CV_32FC1);
cv2DRotationMatrix(cvPoint2D32f(img->height / 2, img->width / 2), rotate, 1, rotationMat);
cvWarpAffine(img, img2, rotationMat);
rotate += 20;
if(rotate == 360){
rotate = 0;
}
cvShowImage("Image", img2);
}
waitKey = cvWaitKey(33);
if (waitKey == 'q'){
break;
}
}
cvDestroyWindow("Image");
cvReleaseImage(&img);
return 0;
}
279デフォルトの名無しさん:2009/06/17(水) 18:44:34
あ、ちょっと変なところがあるな
でもだいたいこんな感じじゃない?
280デフォルトの名無しさん:2009/06/17(水) 18:50:28
助かりました
どうもありがとうございます.

画像の読み込みは何行目なんですか?
281通りすがり:2009/06/17(水) 18:53:24
うん、これでいいな。
ただ
rotationMat = cvCreateMat(2, 3, CV_32FC1);
はwhileの中じゃなくてwhileの上の方で最初に実行した方がいいな。
毎回実行する必要はないから。
282通りすがり:2009/06/17(水) 18:55:27
画像の読み込みは下の行。
img = cvLoadImage(argv[1], CV_LOAD_IMAGE_COLOR);

もしかして、Visual C++のコンソールアプリとかで作ってる?
これは純粋なコンソールCコンパイラ用のコードだから。
283デフォルトの名無しさん:2009/06/17(水) 18:59:19
ありがとうございます

Visual C++です
Visual C++では形式がちがいますか?

初心者なもんですみません.
284通りすがり:2009/06/17(水) 19:15:56
Visual C++ではこれでいける。>>278のをちょっと変えただけだけど。

#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")
int _tmain(int argc, _TCHAR* argv[])
{
IplImage *img = 0, *img2 = 0;
CvMat* rotationMat = 0;
bool isStop = false;
int waitKey, rotate = 0;
img = cvLoadImage("画像.jpg");
img2 = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3);
cvNamedWindow("Image", CV_WINDOW_AUTOSIZE);
rotationMat = cvCreateMat(2, 3, CV_32FC1);
while (1){
cv2DRotationMatrix(cvPoint2D32f(img->height / 2, img->width / 2), rotate, 1, rotationMat);
cvWarpAffine(img, img2, rotationMat);
rotate += 20;
if(rotate == 360){ rotate = 0; }
cvShowImage("Image", img2);
waitKey = cvWaitKey(33);
if (waitKey == 'q') break;
}
cvDestroyWindow("Image");
cvReleaseImage(&img);
return 0;
}
285デフォルトの名無しさん:2009/06/17(水) 20:15:30
全然関係ないけど
if (rotate >= 360) { rotate -= 360; }
もしくは
rotate = (rotate + 20 ) % 360;
にしたほうが、仕様変更で20が50になったときにやさしい
286デフォルトの名無しさん:2009/06/17(水) 20:57:48
おまいらやさしいな
287デフォルトの名無しさん:2009/06/17(水) 21:50:07
このスレってプログラミングは教えてくれるがOpenCVの実装内容とかCV系の話になるとサッパリだな
画像処理スレも論文の話とか全然出ないし。しても盛り上がらないし。
288デフォルトの名無しさん:2009/06/17(水) 21:57:53
独り言でいいからそういう話やってみて。
289デフォルトの名無しさん:2009/06/17(水) 22:12:40
http://gihyo.jp/dev/feature/01/opencv/0004
を参考にhaartraining.exeで学習させています。

その際、際限なくメモリを消費して最後は
でABENDしてしまいます。
Insufficient memory (Out of memory)
in function cvAlloc, .\cxalloc.cpp(111)
回避策があればご教授ください。
290デフォルトの名無しさん:2009/06/17(水) 22:16:36
おれもそれやろうとしてエラーになったんであきらめた。
291デフォルトの名無しさん:2009/06/17(水) 22:18:25
x64マシンで24Gバイト積む
292デフォルトの名無しさん:2009/06/17(水) 22:20:38
ソースコードを書き換える
293デフォルトの名無しさん:2009/06/17(水) 22:28:17
エラーが起こる直前で学習をストップさせる。
294デフォルトの名無しさん:2009/06/17(水) 23:26:58
>>289
そのときのコマンドラインは?
まさか、-w,-hに大きな値を指定したりしてないよな
295デフォルトの名無しさん:2009/06/18(木) 00:58:30
-w 180 -h 180 くらいでやってたんですが、
-w 40 -h 40で通りました。(まだ計算中ですが・・・)
296デフォルトの名無しさん:2009/06/18(木) 14:15:06
OpenCVでゲームって作れる?
297デフォルトの名無しさん:2009/06/18(木) 14:29:00
人間と相互作用するようなゲーム。任天堂Wiiリモコンみたいな感じで、
でもリモコンはつかわずにUSBカメラとかからの入力映像をもとに操作する。
298デフォルトの名無しさん:2009/06/18(木) 15:42:24
〜作れる?
って質問する人はなんなんだ

作れるかどうかは自分次第
どんなライブラリを使おうと、結局は自分で実装しなけりゃいけないところがあるんだぜ
299デフォルトの名無しさん:2009/06/18(木) 21:42:29
アイデア次第
300デフォルトの名無しさん:2009/06/19(金) 17:06:04
画像の配列が
double float int char
どの型になってても動くforループ(eachpixel)は

for (j = 1; j < m->cols; j++) {tmp=cvGetReal2D(m,i,j);
}

のように書くしかないのでしょうか?
処理が遅すぎで困っています
301デフォルトの名無しさん:2009/06/19(金) 18:04:29
mは何なのか、何をしたいのかよくわからないけど、こことか参考にならね
ttp://opencv.jp/sample/basic_structures.html#access_pixels
302デフォルトの名無しさん:2009/06/19(金) 18:06:39
>>301
ucharなことが最初からわかってれば問題ないのですが
floatなどもくることがあるのです
303デフォルトの名無しさん:2009/06/19(金) 18:26:58
?聞きたいことがよくわかんないよ?
処理が遅いのをどうにかしたいならまず>>301だし。
cvGetReal2Dってのは常にdoubleを返すんでしょ?
304デフォルトの名無しさん:2009/06/19(金) 18:31:50
もともとの配列がucharかfloatかわからないって話か。
それなら、最初の30要素くらいをdoubleで読み込んで調べて、
全部正&ひとつも小数点以下がなければucharとか。

ちなみに、cvGetReal2DとかcvmGetとか使ってる限りはどう工夫してもかなり遅いよ。
やっぱポインタ直アクセスをしないと。
305デフォルトの名無しさん:2009/06/19(金) 18:33:21
IplImage型使ってるならdepth参照して処理すればいいんじゃね
306デフォルトの名無しさん:2009/06/20(土) 03:12:12
depth参照でforで使う変数の型が切り替わるのが一番ということか
そんなマクロあったらいいのに
307デフォルトの名無しさん:2009/06/21(日) 20:42:10
実践OpenCVってどうなの?
ちょっと見てみようと思って本屋見て回ったんだが、どこにもなかったんだ
308デフォルトの名無しさん:2009/06/21(日) 21:42:44
>>307
宣伝乙
目次を見る限り初学者向けっぽいの.
OpenCVの特長の利用方法が書いているから良さそう.
309デフォルトの名無しさん:2009/06/22(月) 11:03:18
OpenCV初心者です。
WinXP SP3 + VS2005 + DirectShowでビデオキャプチャしてます。

while(1) {
....
int key = cvWaitKey(33);
printf("%d", key);
}

としたときにずっとkeyが-1だ、と返されてしまうんですが
こんな現象に出くわした方いらっしゃいませんか?
310デフォルトの名無しさん:2009/06/22(月) 11:09:58
>>309
手持ちのOpenCV1.1ソースで,otherlibs/highgui/window_w32.cpp に記述あり.1128行目から.
-1 は次のコード部分.
if( (delay > 0 && abs((int)(GetTickCount() - time0)) >= delay) || hg_windows == 0 )
return -1;
省略部分でウインドウ出していないなら.hg_windows == 0 に引っかかってる.
311309:2009/06/22(月) 11:25:27
>>310
ありがとうございます。

省略部分ではcvShowImageでウインドウを出しているので、
前半部分かと思いますが、この条件で引っかかる気がしないので困惑です。
312デフォルトの名無しさん:2009/06/22(月) 12:40:29
どう見ても前半の条件を満たしているようだが
それよりも、何故に33ms?
313309:2009/06/22(月) 13:44:58
>>312
あ、いえ特に深い意味はありません。

最初は1だったのですが、ウエイト時間が短いのかもしれないということで
いろいろ試した名残です。
314デフォルトの名無しさん:2009/06/22(月) 14:50:19
キャリブレーションに関して質問です。

キャリブレーション用のチェスボードシートをCAD上で描いて
レーザープリンタで出力させているのですが,
全体で1〜2mmほど寸法ずれがあります。

レーザープリンタでは,その特性上起こりうる誤差と聞いてますが

チェスボードシートの誤差はどの程度まで許容できるのでしょうか?
回答よろしくお願いします。
315314:2009/06/22(月) 14:55:32
sageで進んでたんですね。
上げてしまいスイマセン。
316デフォルトの名無しさん:2009/06/22(月) 15:48:44
>>313
特に意味が無いなら0の方が確実にkeyの値わかるからよくね?
317デフォルトの名無しさん:2009/06/22(月) 17:38:11
>>314
三次元計測をしている知り合いは出入りの印刷屋をいじめぬいて作るらしい。
定規で分かるような誤差があれば差し戻し。
318314:2009/06/22(月) 18:26:48
>>317
情報ありがとうございます。
やはり精度がいる計測には,精度の良いシートが必要なんですね。
シートやマスの大きさにもよるんでしょうけど
全体の精度が0.1mm以下ってことでしょうね。
319デフォルトの名無しさん:2009/07/01(水) 21:37:45
すいません、OpenCV初心者なのですが
OpenCV1.0、VisualStudio2005の環境で
SVMに挑戦しようと思い、リファレンスにあるSVMのサンプルソースを
動かそうとしたところ、ml.hの75行目の CvVectors* next;
の箇所でerror C2061 :構文エラー:識別子'CvVectors'
が出てしまうのですが、プロジェクトやVisualStudio2005の設定に
問題があるのでしょうか・・・
Opencv.slnをリビルドしてみても、OpenCVをインストールし直した直後でも
同じエラーがでます。

cv.lib
cvaux.lib
cxcore.lib
highgui.lib
cvcam.lib
ml.lib
を一通りlibをリンカさせても出てくるのですが、
原因としてはどんなものが考えられるでしょうか?

320デフォルトの名無しさん:2009/07/01(水) 21:43:19
構文エラーくらい自分で直せよ
321デフォルトの名無しさん:2009/07/01(水) 22:17:20
そんなにSVMには詳しくないんだけど、OpenCVのSVMの実装はあんまり評判がよろしくないから
libSVMあたりを使ったほうがいいんじゃないかな
322デフォルトの名無しさん:2009/07/03(金) 09:15:41
1.1からはインタフェースだけ合わせたlivsvmになってる
323デフォルトの名無しさん:2009/07/03(金) 14:40:08
いいかげん mlのboostingと顔認識のboostingを統合してほしい
324デフォルトの名無しさん:2009/07/03(金) 15:04:53
cvcam.libはリンクさせる必要ないぞ。
325324:2009/07/03(金) 15:06:13
1.0使ってるのか、じゃcvcamもいるわ。でもなぜ1.0?
326デフォルトの名無しさん:2009/07/03(金) 17:36:44
画像の角度を変えながら一回一回マッチングしたいのですが、
画像回転とテンプレートマッチングを一つのプログラムにすることは可能でしょうか。
327デフォルトの名無しさん:2009/07/03(金) 18:14:31
回転した画像をIplImageに入れて、それぞれについてマッチングすればいいよ。
例えば45度ずつ回転した8つの画像をテンプレートにして8回ループで
マッチングすればいい。
328デフォルトの名無しさん:2009/07/03(金) 18:43:35
ありがとうございます。
何度ずつ回転するプログラムを作って
for文とかのループにテンプレートマッチングのプログラムを組み込むってことですか?

まだOPENCVをはじめて日が浅いもので。。
329デフォルトの名無しさん:2009/07/03(金) 19:12:55
できるよ
330デフォルトの名無しさん:2009/07/03(金) 19:20:40
まあそういうことだよ。
IplImage* image[8];
for(i = 0; i < 8; i++){
image[i] = cvCreateImage(〜);
}
みたいにして8個分のテンプレート用の画像領域を作成して、
そこに回転したテンプレートを入れてく。
それでそれぞれのマッチング値を計算すればいいさ。
331デフォルトの名無しさん:2009/07/03(金) 21:31:09
今テンプレートマッチングのプログラムと合わせてるのですが

//画像を生成する
(5つの宣言)
//BGRからグレースケールに変換
//グレースケールから2値に変換
//テンプレートマッチングを行う

プログラムをどのように入れたら上手くいきますか?
332デフォルトの名無しさん:2009/07/03(金) 21:40:47
まずテンプレート1つだけのときはうまくいってるんだよね?
そしたらそれをforで回せばいいだけじゃん。
333デフォルトの名無しさん:2009/07/04(土) 15:54:34
>>331

組み合わせ方

1、画像を宣言
2、画像を例えば20度ずつ回転しIplImageに入れる
3、各テンプレートについてテンプレートマッチング

334デフォルトの名無しさん:2009/07/04(土) 20:37:57
>>331
もうこうなったら、全部ソースを載せたらいいと思うYO!
335デフォルトの名無しさん:2009/07/04(土) 20:45:31
>>331

20度づつ回転させた18テンプレートを使用するとする。

#include <cv.h>
#include <highgui.h>

int
main (int argc, char **argv)
{
//各種宣言
//画像を生成する
IplImage* image[18];
//テンプレートの元画像を読み込む
for(i = 0; i < 18; i++){
image[i] = cvCreateImage(〜);
//テンプレートを20度回転
//テンプレートをimage[i]に入れる
}

//ソース画像の読み込み
//ソース画像をBGRからグレースケールに変換
//グレースケールから2値に変換

for(j = 0; j < 18; j++){

//テンプレートマッチング
cvMatchTemplate(src_img, image[j], dst_img, CV_TM_CCOEFF_NORMED);
//画像表示など
}
//終了処理
}
336デフォルトの名無しさん:2009/07/05(日) 12:35:39
動画像処理で入力画像をHSV形式に変換して処理をしているの
ですが全体的に処理速度が遅い。。。
プログラム内部で途中経過を表示するため画像のコピーをいくつかとって
別ウィンドウに表示しているのが原因の一つかなと思っています。

それで、容量を減らすためたにHSVの3プレーンをHSだけの2プレーンにして
処理を行ったのですが、どうもcvSplitとcvMergeでの処理の方が
圧倒的に時間がかかっているようでHSVの3つを使うより処理速度が
遅くなってしまいました。
 cvCvtColor(inputImage, hsvImage, CV_BGR2HSV);
 cvSplit(hsvImage, hueImage, saturationImage, valueImage, NULL);
 cvMerge(hueImage, saturationImage, NULL, NULL, hsImage);

もしかして、3プレーンから2プレーンだけを取り出す効率的な方法が
あったりするのでしょうか。
337デフォルトの名無しさん:2009/07/05(日) 12:40:21
COI(Channel of Interest)を使えばできるぜ
338デフォルトの名無しさん:2009/07/05(日) 12:43:29
でもCOIはややこしいからパソコンを早いのに変えるのがおすすめ。
あと、途中経過を複数ウィンドウで表示させるのは速度にかなり影響する。
339336:2009/07/06(月) 02:16:44
>>337 >>338
ありがとうございます。COIについて調べてみました。
http://opencv.jp/opencv-1.0.0/document/opencvref_cxcore_init.html
のsetImageCOIを見ますと、
 OpenCV の関数の多くは COI をサポートしていないことに注意すること.
 別々の画像/行列チャンネルを処理するには,(cvCopy や cvSplit によって)
 別々の画像/行列へチャンネルをコピーし,それを処理してから,必要ならば
 その結果を(cvCopy や cvCvtPlaneToPix によって)もう一度コピーし直して返す.
と書かれています。

まだ試していないのですが、「OpenCV の関数の多くは COI をサポートしていないことに注意すること.」
が気になるのと、336の処理は
 cvSetImageCOI( hsvImg, 1 );
 cvCopy(hsvImage, hueImage);
 cvSetImageCOI( hsvImg, 2 );
 cvCopy(hsvImage, saturationImage);
 cvSetImageCOI( hsvImg, 0 ); // COIを解除
 cvMerge(hueImage, saturationImage, NULL, NULL, hsImage);
という風に書きなおすことになるのでよいのかということが
気になります。
340デフォルトの名無しさん:2009/07/06(月) 02:32:18
COIを使うならそれでいいと思うよ。COIに対応した関数は少ないから
3チャンネルから1チャンネルにコピー。でもcvSplitより速くなるかは不明。
cvSplitとcvMergeで遅くなってるってほんと?
結局はそれらだって内部でCOI使ってコピーしてるとかじゃないのかな。
341デフォルトの名無しさん:2009/07/07(火) 10:14:35
OpenCVって録音ってできませんか?
Webカメラキャプチャするときに音声も録音できたらいいんですが
342デフォルトの名無しさん:2009/07/07(火) 11:11:40
できねえよ
343デフォルトの名無しさん:2009/07/07(火) 11:55:09
では音は別取りで後で合成するのが普通ですか?
344デフォルトの名無しさん:2009/07/07(火) 11:59:00
カメラから録画してマイクから録音するのが普通です
345デフォルトの名無しさん:2009/07/07(火) 15:19:50
OpenCVってmingwでも使えますか
346デフォルトの名無しさん:2009/07/07(火) 15:24:53
347デフォルトの名無しさん:2009/07/07(火) 21:30:14
OpenGL de プログラミング
http://wiki.livedoor.jp/mikk_ni3_92/d/OpenCV::%C6%B0%B2%E8%BA%C6%C0%B8

のプログラム使って拡張子avi(Motion JPEG)動画再生しようとすると
cvCaptureFromFileの値が毎回ぬるぽになるんですけど
拡張子変換しないでなんとか再生する方法はないのでしょうか?
348デフォルトの名無しさん:2009/07/09(木) 06:37:25
MotionJPEGのCODECはちゃんとインストールしてあるのか?
349デフォルトの名無しさん:2009/07/09(木) 22:05:58
最近使い始めたんですが、画素値はどのようにして参照すればよいのでしょうか?
350デフォルトの名無しさん:2009/07/09(木) 22:16:23
351デフォルトの名無しさん:2009/07/10(金) 01:08:35
OpenCVってPythonでも使えますか
352デフォルトの名無しさん:2009/07/10(金) 02:19:37
353デフォルトの名無しさん:2009/07/10(金) 13:03:30
VB6.0で使えます?
354デフォルトの名無しさん:2009/07/10(金) 17:03:03
使えます。
355デフォルトの名無しさん:2009/07/11(土) 00:48:20
pythonで使ってみた
うちのpythonは2.5だったのに
OpenCV1.1pre1aを入れたらpython2.6用で使えずorz
OpenCV1.0を入れ直してうまくいったので快適
356デフォルトの名無しさん:2009/07/11(土) 00:53:30
Pythonで使うと画素へのアクセスとか、低レベルなことがやりにくかった気がする
2.0ではそこら辺が充実してるといいな
357デフォルトの名無しさん:2009/07/12(日) 03:11:00
たぶん概出なんだろうけど自動顔認識やってみた

ちょっとでも傾いてると全然だめ
浅く帽子かぶっててもだめ
逆に心霊写真っぽい画像でも顔認識される
358デフォルトの名無しさん:2009/07/12(日) 05:21:33
学習させないとだめぢゃ
359デフォルトの名無しさん:2009/07/13(月) 05:03:32
動画用だから正面だけ検出できればいいんだよ
360デフォルトの名無しさん:2009/07/13(月) 14:23:28
アカゲザルに顔識別能力…京都大研などが発見
ttp://osaka.yomiuri.co.jp/university/research/20090711-OYO8T00307.htm
361デフォルトの名無しさん:2009/07/13(月) 16:19:45
アニメ顔は正面以外も検出できる
影ができないから簡単なのか
http://anime.udp.jp/face-detect/
362デフォルトの名無しさん:2009/07/13(月) 16:24:59
>>360
正しい顔と正しくない顔(グロテスクとか違和感とか)の判別って主観じゃないのかな
363デフォルトの名無しさん:2009/07/13(月) 20:57:59
一つ一つは主観でも多数の意見を平均化すれば客観になるだろ。
364デフォルトの名無しさん:2009/07/14(火) 01:00:17
たしかに何でその猿グロいんだろうと思って本文読んで納得
365デフォルトの名無しさん:2009/07/14(火) 01:43:13
顔に見えるけど微妙に顔とは違っているというのに恐怖を感じる
366デフォルトの名無しさん:2009/07/15(水) 00:15:28
パノラマ画像を作るにはどうしたらいいんや?
ヒントをクリリン。
367デフォルトの名無しさん:2009/07/15(水) 00:18:32
円筒の内側に投影するイメージで作れば宜しいかと。
368デフォルトの名無しさん:2009/07/15(水) 15:56:00
2枚のずらした画像があったとしたら、片方の画像のつなげたいところの端っこの
画像をテンプレートにして、もう片方の画像中からテンプレートマッチングする。
検出された点の座標で2枚の画像をつなげればOK。
369デフォルトの名無しさん:2009/07/15(水) 16:54:13
2枚の画像の端っこをお互いに徐々にぼかすようにして
合成すればもっと自然につなげる。
370デフォルトの名無しさん:2009/07/16(木) 04:27:15
ACTIVE SILICON PHOENIXというフレームグラバーに浜松ホトニクスのC9100‐13というカメラをつないで読み出したいんだけどどうしたらいい?
371デフォルトの名無しさん:2009/07/16(木) 18:23:33
そのフレームグラバーとやらで取得した画素配列をOpenCVのIplImage形式に逐次変換すればOK
372デフォルトの名無しさん:2009/07/21(火) 06:33:05
アドバイスをもらえると助かります。
今まで趣味でWeb関係のプログラムをやっていたいのですが、
今度仕事でとある専門領域の画像認識をすることになりました。

最近は、pythonを使っていたので
OpenCV1.0 + python 2.5で良いかなと思っていたのですが、
C++ほどのパフォーマンスは出ないと予想されるので、
どうしようか悩んでいます。

扱う画像で変わってくると思うので、
一概には言えないと思ういますが、
OpenCV+pythonでスピードが問題になった経験がおありの方はいるでしょうか?
373デフォルトの名無しさん:2009/07/21(火) 23:15:14
機能をまるっと使う場合は問題ないが
ピクセル単位でアクセスするような処理を書くと当然100倍以上遅い
374デフォルトの名無しさん:2009/07/21(火) 23:40:23
ピクセル単位でアクセスする予定があるので、
pythonを使うかどうか十分検討したいと思います。

ありがとうございました。
375デフォルトの名無しさん:2009/07/23(木) 15:30:43
Ver1.0とVer1.1preってどこが違うの?
376デフォルトの名無しさん:2009/07/23(木) 18:30:42
目の瞳孔の部分を検出して、目が動くとその瞳孔部分を追いかけるようなプログラムをc++で書きたいと思っています。

ネットを検索してもサンプルを見つけることができませんでした。
どのようなプログラムにすればいいのでしょうか
377デフォルトの名無しさん:2009/07/23(木) 21:40:17
eye trackingで検索すれば、いろいろ論文があると思う。
コードまで公開しているものは少ないだろう。
378デフォルトの名無しさん:2009/07/24(金) 03:21:57
>376
瞳孔を調べるって事は、画像の中で一番くらい部分をおうようなプログラムにすればいいはず。

色をグレースケールに変更して、そのなかで一番くらい部分を検知してその真ん中を
中心としてその部分を追えばいいはず


サンプルの書き方はわからないので、だれか書いてあげて
379デフォルトの名無しさん:2009/07/24(金) 08:50:27
髪が真っ先に引っかかるな
380デフォルトの名無しさん:2009/07/24(金) 12:16:00
>>376
カメラの撮影圏内に目しかないのなら,瞳孔の色の物体の重心を測定すればいいんじゃね
サンプルコードはOpenCV プログラミングブックに載っていた気がした.
381デフォルトの名無しさん:2009/07/24(金) 12:31:04
目を検出するための訓練された検出器はeye detection opencvなどのキーワードで探せばインターネットにあるよ。
まず顔の位置と範囲を検出してその中で目の位置を検出する。
目の検出は精度が悪いので顔の半分より上にあるなど条件を絞って誤検出を消す。
あとは瞳を検出して次のフレームからトラッキングする。
目を検出したあとは虹彩認証と同じだから
http://cnx.org/content/m12487/latest/
が参考になる。
382デフォルトの名無しさん:2009/07/24(金) 20:14:17
OpenCVでカメラリンクのカメラからもキャプチャできるのでしょうか?
383デフォルトの名無しさん:2009/07/24(金) 21:04:28
ok
384_:2009/07/25(土) 04:28:56
自分でオブジェクト検出器を作ろうと思ってまして、
学習用の画像をとりあえず何千枚か用意しました。
正解画像の場合は、リストファイルの中に対象オブジェクトの
画像内での座標、横幅、高さを入力する必要がありますが、
これを効率よくやるツールってないのでしょうか?

私が今思いつくのは、windowsに標準で入ってるペイントを使う
方法だけです。
"選択"を使用してオブジェクトが含まれる領域を囲むと
その部分の座標と横幅と高さが右下の方に表示されますが、
これを逐次記録していくのが非常にめんどくさいです。
なんかいい方法あれば教えていただけると助かります。
385デフォルトの名無しさん:2009/07/25(土) 06:03:00
OpenCVで
386デフォルトの名無しさん:2009/07/25(土) 06:50:51
それってcreatesampleツールが自動でやってくれるぞ?
387386:2009/07/25(土) 06:55:37
そっか正解画像が毎回違う場合か。
>>385の言うようにOpenCVでそれ専用に作ったらいいかも。
マウスで取得して座標値を保存してくプログラム。
388デフォルトの名無しさん:2009/07/25(土) 17:23:06
何を検出させようとしているの??
389デフォルトの名無しさん:2009/07/26(日) 17:43:12
質問があります。
複数のカメラのindexを知りたいときってどうすれば良いでしょうか?
今は、cvCreateCameraCapture( 1 )
1,2,3と順番に確認してるのですが、面倒だと感じています。
390デフォルトの名無しさん:2009/07/27(月) 12:04:49
こんな感じでどう?

int* index;
int nselected = cvcamSelectCamera(&index);
int cam1 = index[0];
int cam2 = index[1];
int cam3 = index[2];

391389:2009/07/27(月) 22:19:00
>>390
助かりました。ありがとうございます。
392デフォルトの名無しさん:2009/07/29(水) 19:20:34
2.0って何時発表されるんだっけ?
393デフォルトの名無しさん:2009/08/02(日) 15:46:01
cvHaarDetectObjects()に関してお聞きします。
この関数の第4引数のscale_factorは,第7引数のmin_sizeで設定された
ウィンドウサイズを変えるものと考えてよろしいのでしょうか。
例えば
scale_factor = 1.2,min_size = (20,20)のとき
ウィンドウサイズは(24,24)となります。

ただ上記の設定で静止画に対し顔検出を行なった場合に,
様々な大きさの顔が検出されるのですが,なぜでしょうか。
394デフォルトの名無しさん:2009/08/02(日) 17:39:18
>>393
scale_factorは探索サイズを何倍ずつ大きくするかっていうもの
395デフォルトの名無しさん:2009/08/02(日) 22:06:22
>>394
ありがとうございます。
あと1点追加で質問があります。
探索サイズはどこまで大きくなるんでしょうか。
396デフォルトの名無しさん:2009/08/03(月) 03:08:41
>>395
探索する画像サイズまで
397デフォルトの名無しさん:2009/08/03(月) 09:42:30
>>396
わかりました。ありがとうございます。
うやむや感が取れました。
398デフォルトの名無しさん:2009/08/05(水) 19:25:52
質問です。ちょっとまえに「中国政府が検閲ソフトにOpenCVを
著作権表示なしに勝手に使ったのでライセンス違反だ」
みたいなニュースを読んだんですが、知ってる人いますか?

OpenCVの条文読んだんですが、これって宣伝条項のない修正BSD
ライセンスですよね? 何が問題だったんでしょうか?

399デフォルトの名無しさん:2009/08/05(水) 19:56:49
あの毛沢東画像とポルノ画像の区別もできないやつか
400デフォルトの名無しさん:2009/08/05(水) 20:41:09
WTCに飛行機は突っ込んでいない?

<最も重要な動画>
911テレビ画像捏造説(2006年9月10日のフォックスニュースより)
http://www.youtube.com/watch?v=3ZRGMtvQ3eU

<重要な参考動画>
念写?呪われたフロントガラス?ー911ビデオ画像捏造の証拠映像
http://www.youtube.com/watch?v=cbOiyiOvC8g
奇妙な一致? 不可解な視差!! ー911ビデオ画像捏造の証拠映像
http://www.youtube.com/watch?v=klAtO-tJG6A
丸見え! お宝映像遂に流出!! ?911ボーイング不在の決定的証拠映像?
http://www.youtube.com/watch?v=yGd6uzkneOQ
驚愕! 超常現象? 異次元を飛行する飛行物体ー911テレビ画像捏造の証拠映像
http://www.youtube.com/watch?v=fsB1EtdT_JA
恐怖! 超常現象? 無傷なまま貫通する機首ー911テレビ画像捏造の証拠映像
http://www.youtube.com/watch?v=KZMKXAlY7Yw
911テレビ画像捏造/航空機不在説
http://www.youtube.com/watch?v=9twhhq6YIG8
401デフォルトの名無しさん:2009/08/08(土) 16:03:26
IplImageのImageData配列の中の輝度値をいじってます。
んで、画像をRGBで読んで輝度値に対して色々な色空間に変換する関数を実装してるんですが、

double ReH(double B,double G,double R){
double reH = 0;

reH = acos( (R-G)+(R-B) / ( 2 * sqrt( pow( (R-G), 2 ) + (R-B) * (G-B) ) ) );

if(G < B){
reH = 2 * M_PI - reH;
}
return reH;
}

上のような修正HSVのHを拾ってくる関数を作ってみたんですが、これ、返値を参照する時のフォーマットは何なんでしょうか。
%fでも%cでもエラーが出て、えらいこっちゃになってます。もともとchar型の配列だからそもそも無謀なんでしょうか。
402デフォルトの名無しさん:2009/08/08(土) 17:42:21
画素値は unsigned char 扱いで,区間 [0, 255] ですぞ.double へキャストしているのでしょうか?
%f %c のくだりは分かりません.
403デフォルトの名無しさん:2009/08/09(日) 01:14:54
はい、doubleへキャストして渡しています。
色空間変更後(関数で画素値いじり後)の画像はきちんと表示されるのにいじった画素値を直接参照しようとすると見えないんです。
うーむ・・・
%f%cはCでの出力の際のフォーマット指定子です。
404デフォルトの名無しさん:2009/08/09(日) 01:37:32
レポーターは飛行機の突入を見ても聞いてもいない
http://www.youtube.com/watch?v=vSnzb3An6WU
http://www.youtube.com/watch?v=5DQ0kaDzi6s
405デフォルトの名無しさん:2009/08/09(日) 05:35:56
>>403
ReHを使ってる所、doubleにキャストしてるところ、またcharに戻してる所、
%fでエラーが出るところのソースを出さないと答えは得られないんじゃね
406デフォルトの名無しさん:2009/08/09(日) 11:28:36
レス有難うございます。


img = cvLoadImage("test.jpg",3);
img6 = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,3);

char p[3];

for(int r1 = 0; r1 < img->height; r1++){
for(int r2 = 0; r2 < img->width; r2++){

p[0] = img->imageData[img->widthStep * r1 + r2 * 3];
p[1] = img->imageData[img->widthStep * r1 + r2 * 3 + 1];
p[2] = img->imageData[img->widthStep * r1 + r2 * 3 + 2];

img6->imageData[img6->widthStep * r1 + r2 * 3] = ReH((double)p[0],(double)p[1],(double)p[2]);
img6->imageData[img6->widthStep * r1 + r2 * 3 + 1] = ReS((double)p[0],(double)p[1],(double)p[2]);
img6->imageData[img6->widthStep * r1 + r2 * 3 + 2] = ReV((double)p[0],(double)p[1],(double)p[2]);
}
}

としています。
ReHは>>401の通りです。
また、

double testparam = ReH(240.0,227.0,213.0);
printf("\n%f",testparam);

としても見えません。
407デフォルトの名無しさん:2009/08/09(日) 11:50:26
>>406
r1が3倍されていないのはさておき、「見えません」では言いたいことが判らない。
まさかとは思うが、改行後に出力しているから(文字通り)見えていないなんてことはないよな。
# 普通は改行文字を後にするもんだからねぇ。
それと、%fより%gをお勧め。
408デフォルトの名無しさん:2009/08/09(日) 11:56:45
画像から一部分を切り取ってそれをIplImageに格納したいのですが
どうすればいいのですか?
409デフォルトの名無しさん:2009/08/09(日) 12:16:47
見えないのは>>407のとおり\nを最後に書けばでてくるような。(r1は今のままでokのような
>>406
Rehは色々計算してるけど、戻り値は0〜2πの範囲で返すようだが、それをcharに直すと0-6?
常にほとんど真っ黒なんだけどいいのか?
410デフォルトの名無しさん:2009/08/09(日) 13:12:36
>>407
3倍ってさ,width のカウンタになってる r2 だけでいいんじゃないの?

>>408
一部分を ROI に指定して,ROI 情報を基に cvCreateImage して cvCopy したらいいんじゃね?
試していないけど.
411406:2009/08/09(日) 13:20:55
>>407
すみません、説明不足でした。
見えないというのは、常に出力時に-1#INDと表示されるのです。
変数の表示自体は出来ています。
%gは知りませんでした。使ってみます。ありがとうございます。

>>409
レス有難うございます。
ただ、実際に変換後のImageData配列を持ったIplImageを表示してみると真っ黒ではなくきちんと画像が表示されるんですよね・・・
うーむ・・・
412デフォルトの名無しさん:2009/08/09(日) 13:28:51
>3倍
いや、いいならいいんだ。

>H
Hueを戻しているんだからそこはいいと思うのだが、imageDataの型が判らんな。少なくとも、charに変換しちゃ意味がない。
413406:2009/08/09(日) 13:42:47
imageDataは、IplImage内で宣言されているchar型配列を持ったメンバですよね?
ReHでdouble型を無理やりねじ込んでいるのがまずいのでしょうか。
ただ画像表示は出来るのに、輝度値表示は出来ないので、そこが謎なんです。
414デフォルトの名無しさん:2009/08/09(日) 17:25:09
9.11テロ ABCレポーターは飛行機の突入を見ても聞いてもいない
http://www.youtube.com/watch?v=5DQ0kaDzi6s
415デフォルトの名無しさん:2009/08/09(日) 18:30:30
>>401 == 406
カッコが足りないだけだと思う。
acos の中の (R-G)+(R-B) / 分母

((R-G)+(R-B)) / 分母
に。
416406:2009/08/09(日) 19:08:39
うわあああああああ
ほんとだああああ

ありがとうございます・・・助かりました・・・

他のレス下さった方もありがとうございました!
417デフォルトの名無しさん:2009/08/09(日) 23:00:05
>>410
超ありがとう!今からやってみるよ
418デフォルトの名無しさん:2009/08/10(月) 18:36:10
USBカメラで麻雀牌を撮影すると、点数を計算してくれるって言うのつくれないかな?
419デフォルトの名無しさん:2009/08/10(月) 19:22:31
お前が書き込んだせいで事業化する奴が出てくるだろう
420デフォルトの名無しさん:2009/08/10(月) 19:46:24
カメラが5台必要だし、一台は高感度で卓がとれるようにしなきゃいけないし、設定や操作も面倒だし
421デフォルトの名無しさん:2009/08/10(月) 22:02:57
いや、携帯カメラでやるための布石。
一番右にツモったまたはロンした牌をおいて、
あとはいくつか選択肢に答えるだけ。(ロンあがり、ハイテイ、ドラある?など)

とにかくまずは画像で牌を認識できるかなんだ。
422デフォルトの名無しさん:2009/08/11(火) 00:35:36
すべての牌にユビキタスチップ埋め込んだ方が早いな
423デフォルトの名無しさん:2009/08/12(水) 01:51:03
ICタグを全ての牌に埋め込み卓自体がリーダ
424デフォルトの名無しさん:2009/08/13(木) 22:17:49
OpenCV関係ないなそれ
425デフォルトの名無しさん:2009/08/15(土) 01:13:34
画像処理スレに訊いたらまともな回答来なかったのでこっちで訊いてしまうんですが、
Kruppaの方程式について解説した日本語の本ってありませんか?
426デフォルトの名無しさん:2009/08/15(土) 09:51:04
>>422
Amazon に無いみたいだし,そもそもないんじゃないの.

http://ci.nii.ac.jp/search?q=kruppa&x=0&y=0&title=&author=&affiliation=&journal=&issn=&volume=&issue=&page=&publisher=&references=&year_from=&year_to=&range=0&count=20&sortorder=1
こっちで検索したら,論文の一節くらいなら見つかるかもしれませんね.
427デフォルトの名無しさん:2009/08/15(土) 15:36:19
初心者質問で申し訳ないのです、
天井についているカメラから絵を描いている動画を撮影し、opencvで紙だけを検出したいのですがいまいち上手くいきません。
今のところ、

動画から画像を抜き出す
ROIで範囲指定(紙の角から100pixelほどを指定)
指定範囲内で特徴点検出(角を検出)

で上手く角を検出できていたのですが、角の三点以上が手などの障害物で隠れた状態で紙を動かされるとどうにも対応できません。
(隠された状態で動いているため、特徴点を追いかけてくれない)
※二点までが隠れずに動いたなら、その二点から隠れた二点を割り出すことができます。

そこでパターンマッチングで何かできないかと調べているのですが、いまいち上手くいきそうなものがありません。
比較的敷居も低く、成功しやすそうなのがテンプレートマッチングなのですが、画像が回転しまうと対応できませんし、
何かいい方法はありませんでしょうか?

※紙は最初真っ白なので特徴点が角くらいしかなく特徴点で検出するのは無理そうです。
428デフォルトの名無しさん:2009/08/15(土) 19:25:42
>>427
1つの方法だけで完結させようとしないで、複数の方法を併用した方がいいかと。
429デフォルトの名無しさん:2009/08/18(火) 00:25:54
cvCaptureFromAVI()で約1.4GBの動画ファイルを読み込んで,
cvQueryFrame()をループでラストフレームまでまわしてます.
総フレーム数330000として,なぜか約225000フレーム目あたりでプログラムが自然と終了してしまいます.
ループ中に自作した処理にバグでもあってその約225000回目のループでメモリを食いきったのかと思って,
ループ開始フレームを220000フレームあたりに設定してもやはり225000フレーム目でプログラムが終了してしまいます.
VCのデバッグモードで実行しても実行停止してもバグ箇所の指摘をせずに勝手にプログラムが終了してしまいます.

原因はなんでしょうか?
環境winXPsp3 VC++2008Express OpenCV1.0およびOpenCV1.1です
430デフォルトの名無しさん:2009/08/18(火) 03:00:36
別の動画でやってみるとか、自作の処理抜きでやってみるとか
他にやることあるだろうが・・・。
431デフォルトの名無しさん:2009/08/18(火) 12:24:46
その225000フレーム辺りにエラーがあるんじゃないの?
432デフォルトの名無しさん:2009/08/18(火) 21:14:17
>>429で言及している特定の動画ファイルでのみ止まるのか、
それとも、どんな動画ファイルでも225000フレーム付近を超えると必ず止まるのか、
そこのところをはっきりしてほしい。
433429:2009/08/18(火) 22:37:21
ためしたファイルは2つ,両方とも1G台のもので元は10G以上のmpeg2動画だったのを圧縮したもの.
両方とも同じ方法で圧縮(SUPER Cにて)したのでもしかしたら動画に原因があるかもしれない.
それと説明不足でしたが一度ループ中の処理を全て消して,
cvQueryFrame()とcvSetCaptureProperty()のみにした上でも結果は同じでした.
434デフォルトの名無しさん:2009/08/18(火) 23:30:30
終了直前のループでとめて、変数とかスタックとかを見れば?
ソフトのデバッグしたことある?
435デフォルトの名無しさん:2009/08/19(水) 01:29:23
異常終了?
正常終了?
どっち?
436デフォルトの名無しさん:2009/08/19(水) 02:18:32
そりゃその動画自体の225000フレーム辺りにエラーがあるのだろう。
SuperC以外で圧縮するとか無圧縮でやってみるとか。
437デフォルトの名無しさん:2009/08/21(金) 11:04:08
2枚の画像間でピクセル間のマッチングを取りたいんですけど、
cvFindStereoCorrespondenceで得た視差画像ってどうやって使うんですか?
画像から何ピクセルずれてる、っていうことが分かるんでしょうか?
初歩的ですみません。
438384:2009/08/25(火) 21:51:07
>>387
結局、自作しました。

スクリーンショット
http://sakuratan.ddo.jp/imgboard/img-box/img20090825214512.jpg
座標取得ツール
http://sakuratan.ddo.jp/uploader/source/date117269.zip
439384:2009/08/25(火) 21:57:52
あげ
440デフォルトの名無しさん:2009/08/26(水) 01:03:06
ソースは?
441デフォルトの名無しさん:2009/08/26(水) 02:04:23
442384:2009/08/26(水) 07:29:06
>>440
汚いからあんまさらしたくないが、ソース。
Visual C# 2008 express edition使用です。
http://sakuratan.ddo.jp/uploader/source/date117280.zip
443384:2009/08/27(木) 00:31:55
たびたびすいません。いきなりバグありましたので
ver0.6をリリースします。下記にスペース設けましたので、

以後は↓を参照ください。
http://www.geocities.jp/countman_shk/shien/shien.html
444デフォルトの名無しさん:2009/08/28(金) 03:16:22
C#で作ったのか
ソース見たとこOpenCV使ってないみたいだね
OpenCVSharpかSharperCVを使えばC#でもOpenCVアプリが作れるから使って連携させたらどう?
OpenCVSharpは日本人が開発者でサンプルソースも日本語で説明してくれてるし使える関数も多いからオススメ
445384:2009/08/28(金) 07:27:38
>>444
>OpenCVSharpかSharperCV
全く存在しらんかった。ちょっと調べてみます。
446デフォルトの名無しさん:2009/08/28(金) 07:33:33
447デフォルトの名無しさん:2009/08/28(金) 17:22:45
なんにしろソースさらせるとは、すごい

がんばれ
448385:2009/08/28(金) 18:08:54
>>384
GJ!!!
449デフォルトの名無しさん:2009/08/28(金) 21:20:42
はじめまして、OpenCVについてお聞きしたいのですが最近OpenCVを始めたばか
りの初心者のものです。
Microsoft Visual Studioで処理した画像を表示させるために、タブのデバッグ
でデバッグ開始させた後にコンパイルは通るのですが、
『Visual Studio Just-In-Time デバッガ』とウィンドウが出てきまして、
そこで『image.exe[4444]でハンドルされていないWin32の例外が発生しました。』
と表示されているのですが、どうしたらよろしいでしょうか?
同じような画像で処理すると片方だけ上記のようなエラーが出て、画像処理ができません。
450デフォルトの名無しさん:2009/08/29(土) 02:14:39
451デフォルトの名無しさん:2009/08/30(日) 22:35:40
http://tessy.org/wiki/index.php?%A5%D3%A5%C7%A5%AA%A4%CE%C6%C9%A4%DF%B9%FE%A4%DF
ここのサイトに、
OpenCVで生成した非圧縮AVIはOpenCVで読み込むと失敗する模様
と書いてあるんですが、どうもその現象に嵌ったらしくて動画が読み込んだときに右にずれてしまいます(ずれた分は左にから表示される)
対策として、
image->imageData += 0x400 とすると合う.
と書いてあるんですが、いまいちこれをどこに挿入したらいいのかわかりません。
これっておそらく動画のヘッダ部分が1024バイト分=0x400ずれているのだと思うのですが、
どの辺りに挿入したらいいのかわかりますか?

CvCapture *video; // キャプチャ構造体
IplImage *image; // 画像のポインタ(領域確保は不要)
cvNamedWindow(WINDOW_INPUT); // ウィンドウ生成
video = cvCaptureFromAVI(DEFAULT_VIDEO);//キャプチャ構造体生成
while(c = cvWaitKey(1), c != 27){ // ループ
image = cvQueryFrame(video); // ビデオから1枚取得
cvShowImage(WINDOW_INPUT, image); // 画面に表示
}
cvReleaseCapture(&video); // ビデオ構造体解放
cvDestroyWindow(WINDOW_INPUT); // ウィンドウ破棄
// imageはこの場合解放してはいけないらしい
452デフォルトの名無しさん:2009/08/31(月) 10:58:56
image = cvQueryFrame(video); // ビデオから1枚取得
image->imageData += 0x400
cvShowImage(WINDOW_INPUT, image); // 画面に表示
素直に、これでいいんでねーの? 責任は取らんが。
453デフォルトの名無しさん:2009/08/31(月) 11:07:24
image->imageData += 0x400
とかするとメモリーリークしそうだが大丈夫なんかね
454デフォルトの名無しさん:2009/08/31(月) 11:28:02
640*480だとキャプチャ出来るのに320*240だと無理なのは何が関係してるんでしょうか先生
455デフォルトの名無しさん:2009/08/31(月) 11:44:48
色々なカメラを試しましたか?
456デフォルトの名無しさん:2009/09/02(水) 16:34:08
お聞きしたいのですが、
CvScalar point = cvGet2D(img_gray , y , x);
double a = point.val[0];
とやっても、aに値が格納されてないみたいなのですが…。
代わりの方法ってどのようなものがありますか?
457デフォルトの名無しさん:2009/09/02(水) 20:29:06
グレースケール画像の画素値が欲しいのなら
unsigned char value = (unsigned char)img_gray->imageData[ x + y * img_gray->widthStep];
458456:2009/09/02(水) 21:25:24
>>457
ありがとうございます。やってみます。
459デフォルトの名無しさん:2009/09/05(土) 18:17:42
OpenCV 1.1 + Python2.6なんですが、サンプルを実行すると以下のようなエラーになります。
_ml.pydはsite-packages\opencvにあります。
解決策ご存じないでしょうか?


C:\Program Files\OpenCV\samples\python>C:\Python26\python.exe contours.py
OpenCV Python version of contours
Traceback (most recent call last):
File "contours.py", line 6, in <module>
from opencv import cv
File "C:\Python26\lib\site-packages\opencv\__init__.py", line 75, in <module>
from ml import *
File "C:\Python26\lib\site-packages\opencv\ml.py", line 7, in <module>
import _ml
ImportError: DLL load failed: 指定されたモジュールが見つかりません。
460デフォルトの名無しさん:2009/09/05(土) 18:22:07
すみません。自己解決しました。
C:\Program Files\OpenCV\binをPATH二対かしたらできました。
461デフォルトの名無しさん:2009/09/07(月) 07:40:36
Pythonってなに?
462デフォルトの名無しさん:2009/09/07(月) 09:31:32
OpenCVにはPython用のモジュールが入っていてありがたい
463デフォルトの名無しさん:2009/09/08(火) 03:59:28
911サウスタワーのトンデモ映像―911テレビ画像捏造(疑惑)映像
http://www.youtube.com/watch?v=9vIR0uaDSuA
464デフォルトの名無しさん:2009/09/08(火) 17:51:15
unsigned char R, G, B;
B= (unsigned char) color_img->imageData[y*color_img->widthStep + x*color_img->nChannels];
G= (unsigned char) color_img->imageData[y*color_img->widthStep + x*color_img->nChannels + 1];
R= (unsigned char) color_img->imageData[y*color_img->widthStep + x*color_img->nChannels + 2];
これじゃRGB値取れないんですかね?真っ白になります
465デフォルトの名無しさん:2009/09/08(火) 21:41:07
日本の国旗のような画像と真っ白な画像の色相だけを取り出してヒストグラム距離(相関)を算出すると何故か1になる…
何故なのでしょうか?
466デフォルトの名無しさん:2009/09/08(火) 21:53:34
まず、質問の仕方から勉強してください
467デフォルトの名無しさん:2009/09/09(水) 01:01:31
>  >  >  >  >  > > > > > >>>>> <<<<< < < < < <  <  <  <  <  <
>  >  >  >  >  > > > > > >>>>> <<<<< < < < < <  <  <  <  <  <
>  >  >  >  >  > > > > > >>>>> <<<<< < < < < <  <  <  <  <  <
>  >  >  >  >  > > > > > >>>>> <<<<< < < < < <  <  <  <  <  <
>  >  >  >  >  > > > > > >>>>> <<<<< < < < < <  <  <  <  <  <
>  >  >  >  >  > > > > > >>>>> <<<<< < < < < <  <  <  <  <  <
>  >  >  >  >  > > > > > >>>>> <<<<< < < < < <  <  <  <  <  <
>  >  >  >  >  > > > > > >>>>> <<<<< < < < < <  <  <  <  <  <
>  >  >  >  >  > > > > > >>>>> <<<<< < < < < <  <  <  <  <  <
468デフォルトの名無しさん:2009/09/09(水) 02:44:35
>>465
なにを計算してるのかわからんけど、日本の国旗って白と赤しか使ってなくて赤の色相って0だから全部0なんじゃね?
469特になし:2009/09/09(水) 23:31:49
皆様はじめまして
opencvで処理した画像をフルスクリーンで表示させたいのですが、どういった方法がありますか?
470デフォルトの名無しさん:2009/09/10(木) 00:54:28
フルスクリーンのウィンドウに画像を貼る
471デフォルトの名無しさん:2009/09/10(木) 08:40:27
OpenCvSharpつかってればいいだろ.
472デフォルトの名無しさん:2009/09/10(木) 18:55:11
ttp://opencv.jp/sample/object_detection.html#face_detection
ここの顔の検出のサンプルコードを参考にOpenCvSharpを使ってVisualC#2008EEで同じように書いてるのですが

const string cascade_name = "haarcascade_frontalface_default.xml";
CvHaarClassifierCascade cascade;

(略)

// (2)ブーストされた分類器のカスケードを読み込む
cascade = Cv.Load<CvHaarClassifierCascade>(cascade_name);

ここで
保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。
とエラー。

---------------------------------------------------------------------------------
const char *cascade_name = "haarcascade_frontalface_default.xml";
CvHaarClassifierCascade *cascade = 0;

cascade = (CvHaarClassifierCascade *) cvLoad (cascade_name, 0, 0, 0);
---------------------------------------------------------------------------------
この部分をC#で書くと、どのようになるのでしょうか?
473デフォルトの名無しさん:2009/09/10(木) 20:49:35
腕の動きを計測しようとしています。
画像から腕領域(前腕と上腕)の輪郭線の抽出はまではできました。

cvFitEllipse2関数は輪郭を最もやく近似する楕円を返すということ
なので、前腕と上腕の分離に使えないかと思ったのですが、
下記のような上腕(◇部分)と前腕(■部分)となる輪郭線が
あった場合、同関数では全体で1つの楕円で近似します。

       ◇
      ◇
■■■◇

上腕部分で一つの楕円、また前腕部分でもう一つの楕円で
近似したい場合(合計で2つの楕円で近似したい場合)はどのような
パラメータを操作したらよいのでしょうか。
もしくは、なにか別の方法などがありましたら教えていただけないでしょうか。
よろしくお願いします。
474デフォルトの名無しさん:2009/09/11(金) 03:04:13
単純にアフィン行列で画像を回転させると角の部分が切れてしまいます。
角が切れないように回転させる(四角でなくひし形などに画像が出力される)方法
はないでしょうか?
475デフォルトの名無しさん:2009/09/11(金) 03:07:36
出力先を回転後の画像が収まるサイズにすれば良いだけでは?
476デフォルトの名無しさん:2009/09/11(金) 09:56:36
入力を大きくとれば?
477デフォルトの名無しさん:2009/09/12(土) 16:00:52
■■■■■■■■■■■■■■■
■■■■■■■■■■■ ■■■■
■■■■■■■■■■    ■■■
■■■■■■■■■■  ■■■■
■■■■■■■■■■ ■■■■■
■■■■■■■■■■■■■■■
このような2値画像があったとします。
白い部分のx座標とy座標の最大最小値を求める関数はありませんか?
478デフォルトの名無しさん:2009/09/12(土) 16:05:31
ありません。
自分で考えろ。
479デフォルトの名無しさん:2009/09/12(土) 17:49:40
書籍『OpenCV〜コンピュータビジョンライブラリを使った画像処理・認識〜』
に載ってるソースコードはどこにある?
本にはhttp://oreilly.com/catalog/9780596516130/にあるって書いてあるんだが見つからない・・
480デフォルトの名無しさん:2009/09/12(土) 18:55:39
>479
つExamples
表紙の下にあるやつな。
481デフォルトの名無しさん:2009/09/12(土) 19:22:40
サンクス☆
482デフォルトの名無しさん:2009/09/13(日) 08:31:15
画像のヒストグラムの作成方法は見つけたんだけども、
ヒストグラムから画像を書き戻す方法がわからない。
明るさ、コントラストの調整するプログラムを作りたいんだけども。
参考になりそうなサンプルがあったら教えてください。
483デフォルトの名無しさん:2009/09/13(日) 08:48:13
cvConvertScale・・・はガンマが選べないのか
痒い所に手が届かない
484デフォルトの名無しさん:2009/09/14(月) 02:28:48
http://www27.atwiki.jp/nina_a/pages/40.html

ここにある「画像を他の画像の(x,y)を左上とする位置に合成する関数」を実行したいのですが
8行目のcopyatという関数が定義されていませんと言われます。
特別なライブラリが必要なのでしょうか?
485デフォルトの名無しさん:2009/09/14(月) 03:25:49
普通にROI使ってcvCopyじゃダメなのか?
486デフォルトの名無しさん:2009/09/14(月) 04:08:32
>>485
そのやり方で解決いたしました。ありがとうございます
M(__)M
copyatは謎に包まれたままですが・・
487デフォルトの名無しさん:2009/09/14(月) 07:01:25
ヒストグラムから画像を書き出す…?
何トチ狂った事を言っているんだ。落ち着いてヒストグラムって何かを調べよう。

ある色の濃さ以上だったら表示したいのかな
488482:2009/09/14(月) 08:33:58
用件としては、画像のブライトネスとコントラスト調整するプログラムを作りたいんだけども。
489デフォルトの名無しさん:2009/09/14(月) 09:15:28
一般的なブライトネスとコントラストの調整は、どちらもヒストグラムを使わないのが基本になるわけだが。
そこは先ずできているのかな?
490デフォルトの名無しさん:2009/09/14(月) 15:11:02
輪郭線の座標取得のアルゴリズムで思いつく限りの一番軽い手順って何すかね
491デフォルトの名無しさん:2009/09/15(火) 18:16:35
二値化した画像の白点の座標を取得する方法あります?
492491:2009/09/15(火) 21:28:43
自己解決しました
493デフォルトの名無しさん:2009/09/15(火) 23:04:56
みんなの対応を聞きたい。

最近、USBカメラがUVC化してるが
けっこう前に作ったプログラムに組み合わせてみたら
動ごいてたのが動かなくなってびっくり。

どうもcvCreateCameraCapture関数がUVCに対応してないらしいんだが・・・
これ、対応すんのかな?
494デフォルトの名無しさん:2009/09/15(火) 23:26:43
自分で書けばいいだろ、OSSなんだから。
495482:2009/09/17(木) 02:46:47
自己解決できました。
ルックアップテーブルと行列演算がキーワードだった。
496デフォルトの名無しさん:2009/09/17(木) 16:21:05
このライブラリとウェブカメラ使って
自宅監視システム作ってる人とか居るの?
497デフォルトの名無しさん:2009/09/17(木) 18:53:49
自宅警備員には必要ありませんが、なにか?
498デフォルトの名無しさん:2009/09/17(木) 22:28:47
自室監視システムなら。
499デフォルトの名無しさん:2009/09/18(金) 17:16:57
>>498
おかんが勝手に入ってきて
エロ(本|ビ|ゲ)を見つけだして机の上に置いて
「気にしてませんから」の書き置きをしていったり
しないようにですねわかります
500デフォルトの名無しさん:2009/09/18(金) 17:53:45
おかんだって昔えっちぃなことをして俺らを生んだわけだから
気にするほうがおかしいだろ
501デフォルトの名無しさん:2009/09/18(金) 18:55:00
ttp://opencv.jp/opencv-1.1.0/document/opencvref_cv_epipolar.html#cv_3d_epipolar
の例のpoint_countって2画像間の対応点の数ってことであってる?
502デフォルトの名無しさん:2009/09/19(土) 18:29:20
cvSaveImageの保存先を\\image等 直接指定ではなく、C:\programfiles\opencv\image
のようにアドレスで指定するにはどうすればいいでしょうか?
503デフォルトの名無しさん:2009/09/20(日) 01:45:23
21日に2.0リリースされるね
504デフォルトの名無しさん:2009/09/20(日) 17:09:45
四角形の4隅の座標だけが既知の状態で
入れ子になってる親と子の輪郭だけ残して
孤独な輪郭は除外するプログラムを書きたいのですが、どうすればいいでしょうか
505デフォルトの名無しさん:2009/09/21(月) 16:42:34
画像の一部分を適当にコピー、別ファイルにコピーしたものを何個もペースト、保存するには、
どうやると良いんでしょうか。(保存はcvSaveImageだと思いますが)
506デフォルトの名無しさん:2009/09/21(月) 19:34:39
じゃー思ったとおりcvSaveImageすればいいんじゃね。
507名無し募集中。。。:2009/09/22(火) 18:33:45
roiを設定してコピーじゃないのかな
508デフォルトの名無しさん:2009/09/24(木) 17:50:19
画像比較して一致しているかを判断するプログラムを作るのは
OpenCVかC++かどっちがいいですかね?
509デフォルトの名無しさん:2009/09/24(木) 17:53:35
diff
510デフォルトの名無しさん:2009/09/24(木) 17:54:17
md5sum
511デフォルトの名無しさん:2009/09/24(木) 17:55:57
java
512デフォルトの名無しさん:2009/09/24(木) 18:01:08
>>508
日本語で説明してください

やりたい事も不明確だし、どっちがいいか聞かれても同じものじゃないから比較しようがない。

釣りなの?
513デフォルトの名無しさん:2009/09/24(木) 18:05:03
すみません。
例えば衛星画像(住宅密集地)をエッジ処理をかけて、
地震など災害が起きたときの画像もエッジ処理かけて、

2枚の画像(元画像と災害時画像)を比較したいんですが、、、

514デフォルトの名無しさん:2009/09/24(木) 18:09:56
その用途ならVCとオープンCV両方が最適だよ。
エッジを取ったり一致を比較するのはオープンCV任せで。
515デフォルトの名無しさん:2009/09/24(木) 21:45:11
>>513
中越地震程度じゃ住宅密集地には何の変化もないぞよ。
住宅密集地を対象にするなら阪神・淡路のような大震災クラスの画像でやらない
と卒論にならん。

山崩れにしたら?
516デフォルトの名無しさん:2009/09/25(金) 12:05:29
可視光以外の画像、赤外とかならそれで良いかもしれんな
517デフォルトの名無しさん:2009/09/27(日) 08:36:02
円を取り出すことってできるんですか?
ROIの円形バージョン的な。
というかそもそも円形画像を扱う型がないんか。
教えてクリリン
518デフォルトの名無しさん:2009/09/27(日) 15:48:52
>>515
確かに阪神大震災クラスの画像じゃなきゃ変化が取れないですよね。
OpenCVで双方の画像を比較するのに使うアルゴリズムって、
サンプルコードみてもやはり無いんですが。。。

どういうものを使ったらいいですかね?
509さんのようにCで「diff」を使うほかに。。。
519デフォルトの名無しさん:2009/09/27(日) 16:10:32
チラ見でレスするけど、オプティカルフローのサンプルとか使えそうじゃない?
ttp://opencv.jp/sample/optical_flow.html#optflowHSLK
520デフォルトの名無しさん:2009/09/28(月) 00:32:15
int key=0;
while(1){(省略)
key = cvWaitKey(0);
(動作) } ってすると必ず1回目のwaitKeyが-1で飛ばされて2回目から止まるんですが、これミスデスかね・・・
521520:2009/09/28(月) 01:06:52
ウィンドウを表示しないとキー入力受け付けてくれないんですね…解決しました
522デフォルトの名無しさん:2009/09/28(月) 10:49:25
>>519さん

確かにオプティカルフローのサンプルは使えそうですね!
どれだけ移動したか考えると、比較につながりそうです。
ありがとうございます、すこしプログラムと睨めっこします。
523デフォルトの名無しさん:2009/09/29(火) 19:16:39
すみません。
オプティカルフローのサンプルプログラムなんですけど、
入力画像test1.bmpとtest2.bmpで実行したいんですけど、
サンプルプログラムのどの部分を変えればいいんですか?

src_imgあたりはわかるんですけど、いざデバックするとエラー。。。

超初歩的な質問ですみません。

ttp://opencv.jp/sample/optical_flow.html#optflowHSLK
524デフォルトの名無しさん:2009/09/29(火) 19:33:01
どこも変えずにコマンドラインで画像指定して実行すりゃよいのでは
cvLoadImage()で画像を読み込んでるのは明らかなんだし

>いざデバッグするとエラー
そのエラーを取るのがデバッグだろうにw
525デフォルトの名無しさん:2009/09/30(水) 00:29:59
argvが何か分かるようになりなさい
cvLoadImageを調べなさい
===============================
if (argc != 3 ||
(src_img1 = cvLoadImage (argv[1], CV_LOAD_IMAGE_GRAYSCALE)) == 0 ||
(src_img2 = cvLoadImage (argv[2], CV_LOAD_IMAGE_GRAYSCALE)) == 0)
return -1;

dst_img1 = cvLoadImage (argv[2], CV_LOAD_IMAGE_COLOR);
の行が以下でいいかと。
src_img1 = cvLoadImage ("test1.bmp", CV_LOAD_IMAGE_GRAYSCALE);
src_img2 = cvLoadImage ("test2.bmp", CV_LOAD_IMAGE_GRAYSCALE);
dst_img1 = cvLoadImage ("test2.bmp", CV_LOAD_IMAGE_COLOR);
526デフォルトの名無しさん:2009/10/01(木) 05:24:40
ビデオの入出力が全くうまくいきません。
cvCaptureFromFileで動画ファイル(avi)が何故か読み込めない上に(色々な動画で試しました)
カメラ画像を出力しても0KBのファイルが生成されてしまいます。

プログラム以前に何か設定の部分で間違っているような気もするのですが改善策をご存知の方はいらっしゃいませんか?
527526:2009/10/01(木) 07:02:44
すいません、出力に関しては解決しました。
528デフォルトの名無しさん:2009/10/01(木) 11:43:09
2.0来たな
529デフォルトの名無しさん:2009/10/01(木) 14:31:39
シーケンスについての質問です。
現在cvCreateSeq(0, sizeof(CvSeq), sizeof(Data), storage))でシーケンスを作っています。
Dataは自作構造体で、{short flag; CvPoint pt[4];}です。
flag部分を0に設定してData型の変数をpushした後、
シーケンス内のデータの変更を行う方法を教えていただけませんでしょうか。
cvGetSeqElemで読み出せることはわかっているのですが…
よろしくおねがいします。
530デフォルトの名無しさん:2009/10/01(木) 16:35:50
ctypes_opencvは2.0対応してるのだろうか
531デフォルトの名無しさん:2009/10/03(土) 14:21:46
cvFindFundamentalMatが動かないなぁ・・・
サンプルのコードとか試してるのに
532デフォルトの名無しさん:2009/10/05(月) 14:56:04
OpenCV ver1 と ver 2を両方いれたら問題おきるだろうか
1 /usr
2 /usr/local
533デフォルトの名無しさん:2009/10/05(月) 17:51:45
524の者です。

以前オプティカルフローに関して質問させていただき、
サンプルプログラムを少々いじくりましたが、結果が出ません。
どこが間違っているかご指摘をいただけると幸いです。

元プログラム:ttp://opencv.jp/sample/optical_flow.html#optflowHSLK

test1.bmpとtest2.bmpを元画像とします。
以下プログラムです。
534デフォルトの名無しさん:2009/10/05(月) 17:53:37
以前オプティカルフローを質問させていただきましたものです。
今回test1.bmpとtest2.bmpを元にプログラムを実行したのですが、
警告・エラーはないのですが結果が出ませんでした。
どこが悪いかご指摘をいただけると幸いです。

以下プログラムです。
535デフォルトの名無しさん:2009/10/05(月) 17:55:19
#include <cv.h>
#include <highgui.h>
int
main (int argc, char **argv)
{
char windowsNameInput1[] = "Input1";
char windowsNameInput2[] = "Input2";
char windowsNameImageHS[] = "ImageHS";
char windowsNameImageLK[] = "ImageLK";


int i, j, dx, dy, rows, cols;
IplImage *src_img1, *src_img2, *dst_img1, *dst_img2;
CvMat *velx, *vely;
CvTermCriteria criteria;
if (argc != 3 ||
(src_img1 = cvLoadImage (argv[1], CV_LOAD_IMAGE_GRAYSCALE)) == 0 ||
(src_img2 = cvLoadImage (argv[2], CV_LOAD_IMAGE_GRAYSCALE)) == 0)
return -1;
src_img1 = cvLoadImage ("test1.bmp", CV_LOAD_IMAGE_GRAYSCALE);
src_img2 = cvLoadImage ("test2.bmp", CV_LOAD_IMAGE_GRAYSCALE);
dst_img1 = cvLoadImage ("test2.bmp", CV_LOAD_IMAGE_COLOR);
dst_img2 = (IplImage *) cvClone (dst_img1);
536デフォルトの名無しさん:2009/10/05(月) 17:59:55
// (1)速度ベクトルを格納する構造体の確保,等
cols = src_img1->width;
rows = src_img1->height;
velx = cvCreateMat (rows, cols, CV_32FC1);
vely = cvCreateMat (rows, cols, CV_32FC1);
cvSetZero (velx); cvSetZero (vely);
criteria = cvTermCriteria (CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 64, 0.01);
// (2)オプティカルフローを計算(HS)
cvCalcOpticalFlowHS (src_img1, src_img2, 0, velx, vely, 100.0, criteria);
// (3)オプティカルフローを描画(HS)
for (i = 0; i < cols; i += 5) {
for (j = 0; j < rows; j += 5) {
dx = (int) cvGetReal2D (velx, j, i);
dy = (int) cvGetReal2D (vely, j, i);
cvLine (dst_img1, cvPoint (i, j), cvPoint (i + dx, j + dy), CV_RGB (255, 0, 0), 1, CV_AA, 0);
}
}
537デフォルトの名無しさん:2009/10/05(月) 18:11:21
>>533
524は俺なんだけど。もっと落ち着いたらいいんじゃね?

>if (argc != 3 ||
argcが3じゃなかったらreturn -1で終了なんだけど、ここは大丈夫?
「結果が出ない」っていうのはどういう状態なのさ
画像読み込みの失敗等のエラー処理もしてないんだし、src_img1の値を表示させたり
適当なとこにprintf("ここまで動いた\n");とか入れてチェックしてみたら?
538デフォルトの名無しさん:2009/10/06(火) 18:25:31
落ち着きが無いものです。。。

本日研究の週間報告でオプティカル(以後OP)を
使って画像比較をすると報告したら、

OPは画像ではなく物体移動すなわち動画が適しているからね。
といわれ、画像の差分をまずはとりなさいといわれました。

イメージとしては
ttp://www.gsi.go.jp/WNEW/koohou/444-6.htm

これをOpenCVで表示するとなると、
どんなプログラムになるんですか?教えていただけますか?
539デフォルトの名無しさん:2009/10/06(火) 18:29:13
質問する前に少しは考えるなり調べるなりしろよ・・・
検索すればすぐにわかるんだろそんなこと



540デフォルトの名無しさん:2009/10/07(水) 00:00:30
OpenCVの前に画像処理の本を読め
541デフォルトの名無しさん:2009/10/07(水) 15:19:15
画像処理をろくに理解していなくても画像処理できるってのがOpenCVの存在意義だろ
542名無し募集中。。。:2009/10/07(水) 19:34:49
どんな道具があるかとか、道具の使い道は事前に知っておこうなって話だけどね
むしろ、そういった知識を体系的にまとめた本とかある?
543デフォルトの名無しさん:2009/10/07(水) 20:01:15
http://www.kyoritsu-pub.co.jp/shinkan/shin0701_01.html
一般的なことはこれで大丈夫だと思う

もしくはLearning OpenCVでもいいんじゃないか
544デフォルトの名無しさん:2009/10/08(木) 05:37:51
プログラミングの前に二進数勉強しろとまでは言わないけど
知らなければ損することもいっぱいあることに気付いて欲しい
545デフォルトの名無しさん:2009/10/08(木) 10:29:37
いやいや二進数は必要だろう。
546デフォルトの名無しさん:2009/10/08(木) 14:04:26
でも、画像処理に関する知識はいるね
547デフォルトの名無しさん:2009/10/08(木) 17:53:59
学生か何かか?教えてくれる友人がいないのか?
とっかかりから詰まってると、このあとも詰まるぞ。
かわいそうだからヒントだけ書いてやる。

IplImage *imgpre,*imgpst,*imgdif;//震災前画像、震災後画像、差分画像
imgpreに震災前の写真.jpgを読み込ませ、カラーならグレースケールにしておく
imgpstに震災後の写真.jpgを読み込ませ、カラーならグレースケールにしておく
imgdif=cvCreateImage(元写真と同じサイズ,IPL_DEPTH_8U,1);// 差分画像
cvAbsDiff(imgpre,imgpst,imgdif);//キミの研究テーマに不可欠な関数だ!
cvShowImage (適当,imgdif);//表示

で、ttp://www.gsi.go.jp/WNEW/koohou/444-6.htmの
地震前後の写真を使ってやってみな。
上の手順なら、差分だけ白くなると思う。

ウェブページのように差分を赤く表示したいなら、
適当に色変換してから、地震前の画像にインポーズしておけ。

グレースケール化は
cvCvtColor(絵1,絵2,CV_BGR2GRAY);とかな。
関数の詳細は自分で調べろ。
548デフォルトの名無しさん:2009/10/08(木) 18:02:41
あとオプティカル、で斬るな。それじゃ単なる光学全般だ。
どうしても略したいなら「フロー」。
そう言ってる人は学会で見たことがある。略称なら"of"だ。

キミの指導教官の給与を一部を、私の口座に振り込んでおくようにw
549デフォルトの名無しさん:2009/10/09(金) 02:27:57
本当にすみません。学生です。
私の学科はソフト・ハードを広く浅く学ぶ学科で、
プログラミングも深くやっておらず理解していません。
そのためOpenCVを進められたわけです。

みなさんの意見を元に、再度頑張りたいと思います。
550デフォルトの名無しさん:2009/10/10(土) 13:41:09
CvFindContoursで拾った輪郭の総数ってどこに入ってるんでしょうかー
551デフォルトの名無しさん:2009/10/11(日) 16:17:24
>>550
cvFindContours関数の戻り値が輪郭の総数になってる
552デフォルトの名無しさん:2009/10/12(月) 01:00:59
2.0 の Windows バイナリ配布は
まだPythonバインディングがうまく動かね〜
ランタイムの違いかなぁ
かといってビルドしなおす気にもならね〜
553デフォルトの名無しさん:2009/10/12(月) 01:06:12
python 3 ?
554デフォルトの名無しさん:2009/10/12(月) 01:11:10
いや、普通の 2.6
OpenCV2.0\Python2.6\Lib\site-packages
に pth でパス通して import cv もできることを確認して
OpenCV2.0\tests\python\test.py のテストをやってみたら
いくつかだけテストとおるけどあとはエラーで
さらに途中で python.exe が停止しましたと来る。

久々に OpenCV 使おうと思ったら 2.0 になっててビビタ
555デフォルトの名無しさん:2009/10/12(月) 01:52:52
うちは大丈夫
556デフォルトの名無しさん:2009/10/12(月) 09:01:08
OpenCV2.0\Lib\ の下にあるインポートライブラリは
g++ 用のものなんだな.dumpbin.exe で確認した.
Visual C++ と g++ じゃ名前変形の規則が違うからなぁ.

寝る
557デフォルトの名無しさん:2009/10/12(月) 09:01:58
OpenCV 1.0/1.1 の Windows 用バイナリ配布では
Visual C++ 用のインポートライブラリだったんだが・・・

寝る
558デフォルトの名無しさん:2009/10/12(月) 09:45:46
自分でCmakeしてやらないと駄目だよ
559デフォルトの名無しさん:2009/10/12(月) 10:01:37
mandokuse----
560デフォルトの名無しさん:2009/10/12(月) 15:41:24
質問いいですか?
OpenCV2.00aをインストールし、CMakeで下記を設定しビルド
しましたが、C:\OpenCV2.0\buildにOpenCV.slnが作られませんでした。
解決方法知ってたら教えてください。
<ソースコード、ビルド先フォルダ>
Where is the source code: C:\OpenCV2.0
Where to build the binaries: C:\OpenCV2.0\build
<開発環境>
visual studio 9 2008 expression
<OS>
windows vista home basic
よろしくお願いします。
561デフォルトの名無しさん:2009/10/12(月) 15:46:07
Where is the source code: C:\OpenCV2.0
Where to build the binaries: C:\OpenCV2.0

で configure + generate
不完全なソリューションができるけどビルド.
ビルドできた状態でもう一度同じ CMake すると
完全なソリューションができた気がする.
562デフォルトの名無しさん:2009/10/12(月) 15:58:19
>>560
自己解決できんかったら
今後のため止めとくべき
563560:2009/10/12(月) 15:58:50
>>561
configureのあと、generateを実行したらOpenCV.slnが作られました。
ありがとうございました。
564デフォルトの名無しさん:2009/10/12(月) 16:30:00
https://launchpad.net/livingdead/opencv2.0-vs2008
面倒な人がいるかもしれないので
Visual C++ 2008 使ってる人用に CMake して
ソリューション作って本体と tests と samples が
ビルドできる状態のものをあげておきます.
手元のノートPCにカメラが無いのでその系統の
テストはできてません.

あれ?hist-backprojpatch のテストで落ちるなぁ・・・
落ちるといえばバイナリ配布に最初から入ってる
cvtest.exe でも私の環境だと落ちますが.
565デフォルトの名無しさん:2009/10/13(火) 17:04:20
初歩的な質問ですいませんが、2台のカメラから画像を取得したく、
cvCreateCameraCapture(0)、 cvCreateCameraCapture(1)と割り振り、
キャプチャ用の構造体をcapture、capture2としているのですが、
2台目のカメラが読み込めません。

プログラム的な問題でしょうか、それともハードの問題でしょうか?
環境は、XpでCPU:C2D、カメラは両方エレコムのUSBカメラです。
566デフォルトの名無しさん:2009/10/13(火) 17:18:07
デバイスマネージャとかの表示はどう?
USBのポート変えても同じ?
567デフォルトの名無しさん:2009/10/13(火) 17:57:38
>>565
画を取り込む前に、
デバイスとして見えているかを確認してからじゃない?
568デフォルトの名無しさん:2009/10/13(火) 23:34:50
まずcvcamGetCamerasCountでカメラの数を調べてみたら?
569デフォルトの名無しさん:2009/10/14(水) 18:30:41
549です。

たびたび質問まことに申し訳わりません。

差分までのプログラムはなんとか組む事ができました。
ただ差分処理をかけると画像1と画像2が合成したように
見えてしまうのは何故でしょうか?

547さんの言うとおり、ある程度は組みましたが
変化しているところが視覚的に理解できませんでした。
どのようにしたらいいのでしょうか?ご教授お願いいたします。
570デフォルトの名無しさん:2009/10/14(水) 19:02:39
>>569
全白と全黒、全白と全白+文字、あたりで差分してみれば?
571デフォルトの名無しさん:2009/10/14(水) 19:33:52
>>569
君のプログラムでどんな処理してるかわからんのでアドバイスは難しい。
プログラムの確認という意味では自分で簡単な画像を作って検証してみたら良い。

それとたびたび来るつもりなら名前欄に最初のレス番入れてくれ。アンカも>>で付けてくれ
572デフォルトの名無しさん:2009/10/14(水) 19:53:05
何言ってるのかいまいちよくわからんから
ブログでも作って、コードと画像乗っけて質問したほうがいいよ
573デフォルトの名無しさん:2009/10/15(木) 01:16:30
コードと画像乗っけて質問したほうがいいよ
574デフォルトの名無しさん:2009/10/15(木) 03:17:55
Sourceforge とかで公開しながらの方が
話も進みやすいんじゃないだろうか
575デフォルトの名無しさん:2009/10/15(木) 08:40:30
>>569
カラーのまま差分とってるから、引ききれないのとかが残って反転したようになって
写真のネガみたいになってるんじゃないか?
全部グレーに変換してから差分を取れば?
576デフォルトの名無しさん:2009/10/15(木) 09:29:17
なんとか正規化できそうなもの
 撮影ポイント、撮影角度、撮影距離の違い。
 時間帯による全体的な明るさの違い。

影響を除くのが難しそうなもの
 雨の前後の土やアスファルトの色
 雲や煙。
 太陽の向きによる建物の影
 季節による植物の成長、落葉、枯死。
 地震のあとの水の濁り。

まあ、頑張ってくれ。
577デフォルトの名無しさん:2009/10/15(木) 15:21:26
>>569 です。

HPで説明させていただきますので一度以下のアドレスへお願いいたします。

http://www.geocities.jp/nagasakalab/


これを元に、どこにプログラムを足したらいいか
教えていただけないでしょうか?

よろしくお願いいたします。
578デフォルトの名無しさん:2009/10/15(木) 15:28:00
学生なんだろ?
先生に聞けよ

OpenCVがどうこうってレベルに達してないように見えるしさ
579デフォルトの名無しさん:2009/10/15(木) 15:50:54
これできた人いる?
http://gihyo.jp/dev/feature/01/opencv/0004?page=3
haartrainingが落ちるし、再コンパイルもエラー吐いて出来ない
環境は
OpenCV1.1pre
VS2008
です
580デフォルトの名無しさん:2009/10/15(木) 16:03:18
>>577
とりあえずOpenCVの本買って一から勉強したほうが早いよ
素人の俺でも君の理解の低さがわかってしまうくらいだ
581デフォルトの名無しさん:2009/10/15(木) 16:12:17
>>577
機能自体はちゃんと動いてる。
みんないってるけど本買って読んだ方がはやい。
奈良先端の本かオライリーの本がお勧め。
奈良先端の本の方が初心者向けでわかりやすいと思う
582デフォルトの名無しさん:2009/10/15(木) 17:56:48
とりあえず大津の方法とかで二値化したほうがいいんじゃねえの
583デフォルトの名無しさん:2009/10/15(木) 18:23:36
オライリーの本ってどんな感じ?
奈良先とCUTTの本持ってるけどもう少し技術的な部分を学びたくて気になってるんだが
如何せん近所の本屋になくて困ってる
584579:2009/10/15(木) 19:13:33
あれ、オプションのmodeを消したら動いた
585名無し募集中。。。:2009/10/15(木) 23:34:32
>>577
HPにコメント付ける所無いんだね(だからblogのようなシステムが適しているって言われる
ここ(2ch)では集中した議論は出来ないぜ
ところで自分が最終的に欲しい絵をラフでいいから作ってみなよ

「この問題の答えを教えてください」は誰もが答えたくないが
「こういった問題の考え方・解き方を教えてください」なら誰かが答えてくれるかもしれない
586デフォルトの名無しさん:2009/10/16(金) 13:27:42
577は良くやってるさ。HPまで立ちあげたんだから。
誰か答えてあげよう。
587デフォルトの名無しさん:2009/10/16(金) 13:35:31
>>586
答えるにしてもソースコード自体は問題ない。
>>577がどこが足りなくて最終的にどんな形で見せたいのかがわからんからなんとも。
学生のようだから俺が要求満たすものつくったとしても為にならんしな
588デフォルトの名無しさん:2009/10/16(金) 13:41:05
>>577

570が言うように、いきなりスマトラの画像じゃなくて最初は簡単な画像で試してみようぜ。
ペイントソフトで適当に丸とか四画とか描いて2枚目にはちょっとずらして描いてみるとか。

ソースコード自体はなんも間違ってないしネガみたいな結果画像も間違ってはないな。
間違ってるのは差分の考え方だけ。
589デフォルトの名無しさん:2009/10/16(金) 13:41:54
まずは要求仕様をちゃんと書くところから始めるんだ!
http://2chart.fc2web.com/itkakumei/pic/002.jpg
590デフォルトの名無しさん:2009/10/16(金) 13:46:34
>>577
ちなみにヒント言うと、海のとことか森のとことか一見変化ないように見えるけど
画像の画素レベルではめっちゃ変化してるからな。
591デフォルトの名無しさん:2009/10/16(金) 13:47:31
592デフォルトの名無しさん:2009/10/16(金) 13:48:04
>>589
分かりやすいようでめっちゃ分かりにくいw
593デフォルトの名無しさん:2009/10/16(金) 13:53:09
要するに、ずれた海岸のとこだけが白くて他は黒い画像が得られればいいんだろ?
594デフォルトの名無しさん:2009/10/16(金) 13:56:28
>>589
踏んだら予想したとおりの画像だった。
595デフォルトの名無しさん:2009/10/16(金) 17:21:47
要するにあれだ、指導教官は「地震による変化部分」を抽出するという課題を与えたが、とりあえずの手がかりとして差分で処理した場合を試してみろといったんだろ。
当然指導教官も差分処理だけで課題が解決するとは思っていない。
どんな教育機関のどんな教官なのか具体的に知らないので、想像に過ぎないが、課題を解決する理想的な出力と差分の出力との間に、どんな違いがあって、その溝を埋めるにはどうすればいいか考えさせたいんだと思うよ。
理想的な結果を得ることも大事だけど、それにいたる過程や考察を求めているんじゃないのかな。
(そうでなければ、ひどく専門的な課題だろう。大学院クラスの。)

596デフォルトの名無しさん:2009/10/16(金) 18:20:48
そうだな。プログラムと格闘するまえに、まずどうやったら実現できそうかを
ちょっと纏めてからやり始めたほうがいいって
597デフォルトの名無しさん:2009/10/16(金) 18:47:11
おちつけ
598デフォルトの名無しさん:2009/10/17(土) 00:49:06
まず実現する必要があるのかを考えないと
599デフォルトの名無しさん:2009/10/17(土) 01:01:42
ver2への対応は,そろそろはじめてもいいのかな
もう構造体の変数名変更とか大きな変更はない思っていい?
600デフォルトの名無しさん:2009/10/17(土) 01:13:14
>>577
カラー画像のまま差分し、int型に写してから
10倍くらいに増幅し、255以上をtruncateすると
それなりに面白い画像になった。
601デフォルトの名無しさん:2009/10/18(日) 20:37:45
当事者です。

>>588 さんの言うとおり自分なりにペイントで
説明させていただきますのでもう一度アクセスしていただけないでしょうか?


よろしくお願いします。
確かに過程を考え理解することは大切だと思っています。
やはり結果が出ないと後先不安でもありますので。。。
本当に申し訳ありません。

http://www.geocities.jp/nagasakalab/
602デフォルトの名無しさん:2009/10/18(日) 20:50:09
やりたいことは良く分かった。というか分かってる。
知りたいのは、どこが分かってないかだ。そこを自分で明確にしないとな。
全部最初から分かんないじゃどうしようもないぜ。
603デフォルトの名無しさん:2009/10/18(日) 20:58:32
>>588だけど、ペイントでそんなにごちゃごちゃ描くんならスマトラのリアル写真と変わんないじゃん。
ペイントでやるなら、たとえば塗りつぶした長方形一つだけ描いて2枚目には
少しずらして描いて、差分取ってみ。塗りつぶす色がいろんな場合もやってみるといいかもな。
結果が良くわかんなかったら、その結果画像もアップしといたら
議論しやすいんじゃない?
604デフォルトの名無しさん:2009/10/18(日) 21:18:08
これ以上はここじゃなくてブログでも作ってやってくれ
605デフォルトの名無しさん:2009/10/18(日) 21:22:36
取りあえずの課題
「cvAbsDiff関数がどういうことをしているかを画素レベルで説明しなさい。」
606デフォルトの名無しさん:2009/10/19(月) 06:11:10
ここでやれ
607デフォルトの名無しさん:2009/10/19(月) 10:46:56
せっかくネタ提供してくれてるんだ ここでやれ
608デフォルトの名無しさん:2009/10/19(月) 11:40:09
>>601
やることがわかってるんなら自分でやれ。
差分をとって色を変換。それを元画像に重ね合わせ。
ここら辺はOpenCVなら関数一つづつでできるような簡単なもの。それを調べもせずに人に頼るなよ。
609デフォルトの名無しさん:2009/10/19(月) 14:04:14
>>601、失敗した結果画像をアップしないとこの問題が意外と難しいってのが
皆に分からないぞ。

例えば1ピクセルおきの格子状の画像があって、それが撮影の誤差で2枚目で
1ピクセルずれたとすると、人間の目には差が無いように見えるが差分を
取ると大きな違いが出てくる。
610デフォルトの名無しさん:2009/10/19(月) 14:59:21
ご存知の方がいらっしゃいましたらお教え頂けましたら幸いです。

haar cascadeのxmlファイルは、
CPUやOSの違いやOpenCVのバージョンの違いがあっても同じように利用できるものなのでしょうか?
(なお、WindowsのOpenCV2.0のサンプルのhaarcascade_frontalface_alt.xml
とLinuxのOpenCV1.0のそれとは全く同一でした。)

というのも、このサイトでダウンロードした、
http://gihyo.jp/dev/feature/01/opencv/0004?page=1
gihyo_logo.xmlをLinux上のOpenCV1.0で利用すると
http://gihyo.jp/dev/feature/01/opencv/0004?page=4
の画像にあるような検出は全くされず大変精度が低くて
使い物にならなかったためです。
(エラーなどはなく検出処理自体は問題なくできています。)
611デフォルトの名無しさん:2009/10/19(月) 15:04:33
当事者です。

HPにゲストブック機能をつけました。
皆様のご意見はそちらでお願いします。

今までこちらの貴重なスペースをお借りして
本当にありがとうございました。

http://www.geocities.jp/nagasakalab/
612デフォルトの名無しさん:2009/10/19(月) 19:48:34
いいって 気にしないでここでやりなよ 別の場所でやったら誰も見ないしw
613デフォルトの名無しさん:2009/10/19(月) 19:54:42
>>610
できるんじゃない?同じXMLデータなんだから。そのデータの扱い方だって
バージョンによって違うとは思えない。
614565:2009/10/20(火) 17:02:33
>>566
デバイスマネージャでは2つとも認識されています
ポート変えましたけど駄目でした
>>567
↓のようにコードを作成したのですが、"カメラ2が見つかりません"となり、2つめのカメラを認識しません


if ( ( capture = cvCreateCameraCapture(0) ) == NULL ) {
printf( "カメラが見つかりません\n" );
return -1;
}
if ( ( capture2 = cvCreateCameraCapture(1) ) == NULL ) {
printf( "カメラ2が見つかりません" );
return -1;
}
615デフォルトの名無しさん:2009/10/20(火) 20:50:55
>>451に似た症状なのですが、
WEBカメラから読み込んだ動画が、上下左右にずれてしまっています。ずれたぶんは451どうよう左と上から表示されます。
ずれの大きさについては毎度ランダムで、稀にずれは無く表示されることもあります。
別のカメラを購入して試す前に、何かしらの手段はないでしょうか。
過去ログみても、解決策でてないきがする・・
616デフォルトの名無しさん:2009/10/20(火) 21:14:18
小銭持ってPCショップへ行け
メシ二回分ほどでカメラくらい買えるだろ
ログみてるヒマあったら買ってくればよかったじゃないかアホかこいつ
617デフォルトの名無しさん:2009/10/21(水) 01:15:20
>>614

linuxなら
cvCreateCameraCapture(CV_CAP_V4L + 0)
cvCreateCameraCapture(CV_CAP_V4L + 1)

で複数動く
618デフォルトの名無しさん:2009/10/21(水) 13:25:26

2値化画像渡して輪郭取得したところ、なんか変なノイズが入るのは何が思い当たりますでしょうかー
チャンネル数は合ってると思います・・・ぬーん

http://up3.viploader.net/pc/src/vlpc000827.jpg
619デフォルトの名無しさん:2009/10/21(水) 13:37:30
ノイズって縦棒のこと?
620デフォルトの名無しさん:2009/10/21(水) 13:40:51
>>618
それだけ見せられても困る。
せめて該当部分のコードがないと
621デフォルトの名無しさん:2009/10/21(水) 13:41:23
あ、自己解決しましたすみません!

渡すチャンネル数がやっぱり合って無かったですOTL
(drawcontoursを1で処理してました・・・)
622デフォルトの名無しさん:2009/10/21(水) 13:47:12
かわいいおてて
623デフォルトの名無しさん:2009/10/21(水) 14:08:09
縦線は何だったんだ!
624621:2009/10/21(水) 14:10:14
>>622
ありがとうございます(?

>>623
縦線はたぶん3つあるチャンネルのうちの1つに描画されてるやつだと思います。。
625デフォルトの名無しさん:2009/10/21(水) 23:09:50
haartraining で、ポジ画像7000枚 ネガ画像3000枚で、
数日計算しても、正しい検出がほとんどできません。
ほんとにこれで使える haar cascadeのファイル作れるの?
実際使えるのを作れた方いらっしゃいます?
コツを教えてください。
626デフォルトの名無しさん:2009/10/22(木) 03:10:29
[1] 現在モニタに映っている静止画像
[2] bmpで保存した静止画ファイル(の画像)
・・・があるとき、[1]の中から[2]を探す処理をしたいと思っています。

cvMatchTemplate() が最も目的に近いと思いますが、
第1引数([1]相当)のCvArr*を準備するにはどのような方法があるでしょうか?

いったんファイルに保存して、vcLoadImage()するしかないですか?(まさか・・・ね
627デフォルトの名無しさん:2009/10/22(木) 09:12:39
>625

認識させたい画像の集合に問題があるんじゃないか?
極端に違ったものをポジ画像に混ぜると、いい結果が出ないんじゃないだろうか。
また、ネガ画像にポジ画像と同じようなものが混じっていると、よくないと思う。

この手法に限らず、学習に使う画像の枚数を単純に増やせばいいわけではなく、ポジ画像とネガ画像の集合の性質に依存していると思うが。。。
628デフォルトの名無しさん:2009/10/22(木) 09:47:06
>>625
ポジ画像は多ければ多いほどいい(ツールで自動生成したやつでもOK)が
ネガ画像は数10枚でも工夫すれば十分いけたぞ
ネガ画像は最初は壁とか平坦なもの(数枚でもいいはず)でやってみ
学習認識させるものは何なの?
629デフォルトの名無しさん:2009/10/22(木) 10:00:37
haartraining学習のやり方俺も教えてほしい
詳しいサイトとかないの?
630デフォルトの名無しさん:2009/10/22(木) 10:33:42
>>627-628
ありがとうございます。
使えるものであることわかっただけでちょっと安心いたしました。
特定の書籍の表紙を認識させたいと取り組んでいます。
表紙内にある出版社のロゴ部分や、表紙全体で haar training をさせてxml
を作ったのですが、どちらも精度が低く使い物にならないという状況なんです。
ネガ画像は、http://gihyo.jp/dev/feature/01/opencv/0004?page=1
でダウンロードしたもの+αで、3000枚なのですが、
ポイントはネガ画像のコレクションにありそうですね。他のネガ画像でやってみようと
思います。
本当にありがとうございます。
631デフォルトの名無しさん:2009/10/22(木) 10:40:28
面白そうな応用だな
632デフォルトの名無しさん:2009/10/22(木) 18:24:51
詳細が分からんからなんともいえないが
detectionでやることじゃない気がする
633デフォルトの名無しさん:2009/10/22(木) 18:46:17
ロゴの認識ならテンプレートマッチングで十分じゃないか
ttp://d.hatena.ne.jp/ninoseki/20090212
こんな風にさ
634デフォルトの名無しさん:2009/10/22(木) 20:15:17
こんばんは。
WindowsXP + OpenCV1.1 + VC++2008 で以下の画像処理を試みているのですが、
アルゴリズムが思いつかず、ご教授いただきたく思い質問させていただきます。

静止画像の中に、不特定数の物体があり、物体は様々な角度を向き、
撮影距離も不特定なため様々な大きさです。
また、撮影場所も不定なため、不要なノイズが入る可能性が高いです。

ここで物体は、単色で塗られた一定サイズの正方形を2つ組み合わせた
小さな長方形状の用紙で、この2色の色を識別することを目的としています。

OpenCVを用いて長方形(含、角度のついた台形)を検出し、
その長方形内が2色(ある程度は撮影誤差として許容)であれば、
物体が映っているものとして色を検出しようかと考えているのですが、
長方形の検出に適している手法をご存知でしたら
ご教授願えないでしょうか。
また、改良案等ございましたらご指摘いただけたら大変嬉しいです。

乱文なため説明不足等あるかもしれず申し訳ないですが、
なにとぞよろしくお願いします。
635デフォルトの名無しさん:2009/10/22(木) 22:43:47
もうそれOpenCVの話じゃないし・・・
636デフォルトの名無しさん:2009/10/23(金) 14:45:49
>>634
用途がよくわからんが、何らかの特徴点検出と色情報による識別を組み合わせて
何とかなるかな???
具体的にどんな画像から検出したいんでしょう?
637デフォルトの名無しさん:2009/10/23(金) 17:00:35
アダルト画像だけフィルタするためには使えないものだろうか
638デフォルトの名無しさん:2009/10/23(金) 17:35:56
>>637
中国が6億円かけて開発したけど失敗した
>>398,399
639デフォルトの名無しさん:2009/10/23(金) 19:11:36
俺好みのAV女優だけを抽出したい
俺好みの体位だけを抽出したい
640634:2009/10/23(金) 19:35:20
レスありがとうございます。

>>635
OpenCVもしくは何らかの手法で四角形を抽出したいのです。
ハフ変換等で矩形抽出や線抽出は調べましたが、
その方向では実現できそうになくご教授願いに参りました。

>>636
説明下手で申し訳ございません。
守秘義務が関わっており、重点は伏せなければならず、
非常に心苦しいです。

許可を取れた範囲でご説明します。
サンプルのリストを以下に挙げます。
お手間をおかけしますがパス[cv]で設定しております。
ttp://www1.axfc.net/uploader/Img/so/63011
このような形の2色1組と周囲のグレーを利用し、
「カメレオンコード」に似たシステムを
実装したいと考えています。

実際の撮影物にハフ変換や矩形抽出を試みましたが、
良い結果が得られませんでした。
なにとぞご教授のほど、よろしくお願いします。
641デフォルトの名無しさん:2009/10/23(金) 21:00:23
守秘義務云々ってことは貴方のビジネスなわけでしょ?
ならカメレオンコード(特許出願中)の愛知の会社と業務提携したらいいんじゃね
642デフォルトの名無しさん:2009/10/23(金) 21:24:22
>>640
どうしてもOpenCVのAPIを使ってやるという宿題かと思ったよ
画像処理スレで質問しなおせば
643デフォルトの名無しさん:2009/10/24(土) 00:28:29
OpenARっぽい処理にみえるから、アルゴリズムパクったらどう
644デフォルトの名無しさん:2009/10/24(土) 03:38:30
>>640
QRコードの読み取りの方法も参考になるかな
645デフォルトの名無しさん:2009/10/24(土) 06:29:59
>>644
どこかにコードがあるんでしょうか?
646デフォルトの名無しさん:2009/10/24(土) 08:05:01
QRコードなんてそこらじゅうにあるが

デコードでぐぐr
647デフォルトの名無しさん:2009/10/24(土) 21:19:13
井村さんのラベリング関数よりも速いラベリング関数ない?
井村さんのだとラベル数が多くなったりすると0.4〜0.5秒かかることがあるんだが
648名無し募集中。。。:2009/10/25(日) 06:37:22
cvblobは試してみた? 速度は判らない
http://code.google.com/p/cvblob/
649デフォルトの名無しさん:2009/10/25(日) 10:57:25
>>647
画像サイズ、ラベル数、計算環境がわからないが

10,000×10,000ピクセルの画像でラベルの数が10万くらい、ひと昔前のオンボロPCという環境だと
0.5秒かかっても仕方ないのでは
650デフォルトの名無しさん:2009/10/26(月) 23:08:43
知見があれば教えてください。

ttp://gihyo.jp/dev/feature/01/opencv/0004?page=2]
の正解リストファイル(OK.txt)の記述で、

120 100 45 45
100 200 50 50 50 30 25 25
45 55 60 60
・・・

のように縦横サイズが違う場合、例えば

createsamples.exe haartraining.exe で指定する -w -h
の大きさは、どのように考えれば良いでしょうか?
例えば、リスト内の平均値をとって 1/2 する・・・という
方法でしょうか?


もう1点、上の例では画像の縦横比は 1:1 ですが、

120 100 100 50
45 55 50 75
・・・

のように縦横比が違う正解領域の場合、
createsamples.exe haartraining.exe で指定する -w -h
の大きさは、どのように考えればよいでしょうか?

縦横比を変えた -w -h を指定すると、
認識精度が劇的に落ちる印象があります。
651デフォルトの名無しさん:2009/10/27(火) 16:20:20
createsamples.exeで文字通り、画像の指定領域を切り取って
-w -hで指定したサイズにリサイズします。
だから、後段の学習(haartraining.exe)の処理には、
リサイズ後のサイズを指定することになります。
ということで、結論的には、createsamples.exe、
haartraining.exeのそれぞれの-w -hには同じ値が指定される
ことになります。

しかし、リサイズされる前の元の画像の指定領域の縦横比が
極端に違っていると、createsamples.exe時のリサイズで、
意図したかたちとはかけ離れた結果になってしまうのではない
でしょうか?

一般的な例では、認識させたいオブジェクトが中央にくるような
1:1の矩形で指定することが多いようですが。
目などを認識させたい場合には、2:1の横長にするなどの例も
あると思います。


652デフォルトの名無しさん:2009/10/27(火) 22:27:03
yes we can
653650:2009/10/27(火) 22:52:32
>>651

ありがとうございます。
リサイズされるのは -show で確認しているので理解しています。実は、
ttp://gihyo.jp/dev/feature/01/opencv/0004?page=3

にあるように、createsamples.exe -img gihyo_logo.png のように
1枚の正解画像から、学習用データを作成した場合は、
ttp://gihyo.jp/dev/feature/01/opencv/0004?page=4

と同じような精度の結果が得られました。

ただ、全く同じデータに対して
ttp://gihyo.jp/dev/feature/01/opencv/0004?page=2

にあるように、1枚の正解画像からではなく
正解画像リストファイル(上のページではOK.txt)から
学習用データを作成した場合、全く認識できていません。

1枚の正解画像からたくさんの学習用サンプルを作る際は、
背景データに対して、正解画像を回転させながら貼り付けるデータを
自動作成できるようですが、リストファイルの場合、
それができていないようです。
654デフォルトの名無しさん:2009/10/28(水) 03:53:33
>>650
>120 100 100 50
>45 55 50 75
>・・・
縦横比が2:1と2:3と極端にことなっているのが問題ないんじゃないかと
ほぼ同じくらいになっていないとうまくいかないと思うのですが。。
画像にもよりますが

>>653
>1枚の正解画像からたくさんの学習用サンプルを作る際は、
>背景データに対して、正解画像を回転させながら貼り付けるデータを
>自動作成できるようですが、リストファイルの場合、
>それができていないようです。

ttp://gihyo.jp/dev/feature/01/opencv/0004
に2通りの方法と書いてあるとおり、1枚から回転などして画像を作成
して使用する方法と、複数の画像を使う方法は別の方法です。
(組み合わせて使う方法があるのかも知れませんが、例が見つかりません)


655デフォルトの名無しさん:2009/10/29(木) 00:15:32
お尋ねしたいのですがOpenCV1.0にPythonのPILから
画像を読ませる方法はありませんか?
adaptors.pyがダメダメなのでcvSetDataなどでやってみたのですが
ダメでした。
OpenCV自体をリコンパイルすればいけるような記事も
見たのですがそこまで出来る環境ではないので
別の方法を探しています。
656デフォルトの名無しさん:2009/10/30(金) 11:59:11
python2.5用はOpenCV_1.0.exe
C:\OpenCV\interfaces\swig\python\build\lib.win32-2.5\opencv

python2.6用はOpenCV_1.1pre1a.exe
C:\OpenCV\interfaces\swig\python\build\lib.win32-2.6\opencv
657デフォルトの名無しさん:2009/11/08(日) 01:16:39
CVtypesを使おう
658655:2009/11/08(日) 01:31:32
巻き込まれアク禁で遅くなりました。
CVtypesを使用することにしました。
SWIG版は制約やバグが多すぎます。
CVtypesも早々にCvMatの間違いが見つかりましたが
DLLを直接操作できるので安心出来ます。
とりあえずPIL, wxPythonの画像相互変換できました。

>>656
バージョンはあっています。opencv.jpのオプティカルフローサンプルを
SWIG版で実行できています。
adaptors.pyが1.0で実行できている方がいらっしゃるんでしょうか?
659デフォルトの名無しさん:2009/11/10(火) 17:37:45
先日こちらでお世話になったものです。
少し結果がでたので報告させていただきます。
これからの課題も考えながら卒業研究を進めています。

ご助言をいただけると幸いです。ゲストブックへお願いします。

ttp://www.geocities.jp/nagasakalab/
660デフォルトの名無しさん:2009/11/12(木) 13:03:30
カメラで撮影している映像の認識を行っています。
DELLでは正常にできたんですが、LGだとコンパイルすらできなくなります。

// カメラを初期化する
if ( ( capture = cvCreateCameraCapture( -1 ) ) == NULL ) {
// カメラが見つからなかった場合
printf( "カメラが見つかりません\n" );
return -1;
}

上記のcvCreateCameraCapture( -1 )を( 1 )に変えると
コンパイルはできるのですが映像が出力されません。
何が問題なのでしょうか?
661デフォルトの名無しさん:2009/11/12(木) 13:34:59
最近始めたんですが、OpenCVのサンプルプログラム(〜.py)が動かなくて困ってます。PythonのGUIやコマンドプロンプトなど何やっても実行出来ません。ちなみにC言語の〜.exeのファイルは実行できます。

何がイケナイのでしょうか?
662デフォルトの名無しさん:2009/11/12(木) 13:47:06
pythonの実行環境ができてないんじゃ?
ってexeということはWindowsかな
パス通ってる?
663デフォルトの名無しさん:2009/11/12(木) 13:57:12
>何がイケナイのでしょうか?
あんたのあたま。

Pythonの環境構築ができてないのならスレ違い。
Pythonの環境がちゃんと機能しているのなら、単に「動かない」ではなく状況報告を。
664デフォルトの名無しさん:2009/11/12(木) 14:01:14
>>660
パソコンのメーカー名いわれても困る。
OSと開発ソフトぐらい書かないと
コンパイルのエラーがでるならどんなエラーが出てるか書け。


映像が出ない方については
あとは使ってるカメラが同じものかパソコンに内蔵カメラは付いてるか?
カメラ付属のソフトではキャプチャできるか?
665デフォルトの名無しさん:2009/11/12(木) 14:14:56
>>660
cvCreateCameraCapture( -1 )でコンパイルエラー
cvCreateCameraCapture( 1 )だとエラーが出ない
しかもLGだけ...

LGってパソコン出してたんだ。なんていうパソコン?
666デフォルトの名無しさん:2009/11/12(木) 14:31:03
LGのノートは見たことあるけど、なんか変な話だなあw
667名無し募集中。。。:2009/11/12(木) 15:28:49
関数の引数の値によってコンパイルできる/出来ないって聞いたことが無いな
マクロ展開する関数じゃないし
668デフォルトの名無しさん:2009/11/12(木) 16:32:05
開発環境のコンポーネント、というかインストール状況に
差があるんじゃない?
669デフォルトの名無しさん:2009/11/12(木) 17:23:51
-1の件は、「ー(音引き)」になっていると見た。
670デフォルトの名無しさん:2009/11/12(木) 21:01:24
OpenCVを用いて、マーカー検出みたいなことをしたいのですが
あまりうまい方法が思いつきません。

具体的には、T字形の図形をビーカーのような容器の底面に付けて
それを下から撮影し、回転方向を取得する、と行った感じです。
(位置を取得する必要はなし)

どなたかよいアイデアがあれば、よろしくお願いいたします。
671デフォルトの名無しさん:2009/11/12(木) 21:57:33
固定位置なら適当に直線検出でもできそうでは?
TじゃなくてもいいならARToolKitとか使えば短時間でできそうだけど
672デフォルトの名無しさん:2009/11/13(金) 00:54:38
解像度がcvSetPropertyで320240指定しても640480にしかなりません…

使ってるカメラはLogicoolのAFOrbitで、OSはVista32です。
Mommasさんのところのライブラリ書き換え等も試したのですが一向に変わらず解像度が落ちません。
これは一体何が原因でしょうか……
673デフォルトの名無しさん:2009/11/13(金) 02:23:51
原因はどっか間違ってるからじゃね
せめてその指定してる行くらい載せないとわからないよ
つかcvSetPropertyじゃなくてcvcamSetProperty?
もしそうなら、もうcvcam使わないほうがいいと思うが
674デフォルトの名無しさん:2009/11/13(金) 02:45:19
魚眼レンズを使って立体視しようと思うのですがLearning OpenCVの立体視のサンプルコードが使えなくて困っています
仕方が無いので自分で作ろうと思ったのですが
エピポーラ線を算出する方法
対応点探しのテンプレートマッチングの時に画像の歪みを補整する方法
が分かりません
特に2つ目に関しては最初に画像全体を補整しようかとも思ったのですがデータの欠損が心配なので探索範囲のみを補整しようかと思っています
良い案があればご教授お願いします
675672:2009/11/13(金) 10:10:22
>>673
すみません、関数名間違えてました。

cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH, 320);
cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, 240);

です。
デスクトップ(XP)だときちんと解像度が変わるのですがノート(Vista32)だとブレーク入れて値参照しても640*480のままで・・・
OS依存?なんでしょうか、後の違いと言えばlogicoolのソフトのバージョンぐらいです。
676デフォルトの名無しさん:2009/11/13(金) 12:45:23
>>675
673ですが、openCVのDLLのバージョンが違うとかない?
cvSetCapturePropertyでググレば出てくるけどサイズ変更はopenCV1.0では未実装っぽいけど
Mommas氏云々って書いてあるが、多分そのページの解説なら
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_320x240, 0);では?
それでその修正を加えたデスクトップとノートのopenCVのDLLが違うんじゃないの
openCVはソースあるのだからデバッグ情報を出力するバージョンを作って追っかければいいよ
677デフォルトの名無しさん:2009/11/13(金) 17:03:06
初めて質問します
openCVで手元にあるaviファイルを読み込んで動画処理しているのですが、aviファイルって結構重いですよね。
そこで、aviファイルをサーバに置いといて、それにアクセスして読み込ませたいのですが、不可能でしょうか?
678デフォルトの名無しさん:2009/11/13(金) 17:24:31
課題提出の季節なのかな?
679デフォルトの名無しさん:2009/11/13(金) 17:24:40
んなことしたら余計重くなるだろ。JK
680デフォルトの名無しさん:2009/11/13(金) 17:53:37
2.0の情報なかなか出てこないな
681デフォルトの名無しさん:2009/11/14(土) 02:09:17
>>677
ウィンドウズならエクスプローラでネットワークドライブ化すればできるぞ。
682デフォルトの名無しさん:2009/11/14(土) 10:10:32
>>677
転送時間のオーバーヘッドもある
683デフォルトの名無しさん:2009/11/14(土) 22:04:30
返信ありがとうございます。
ネットワークドライブは作ってあるので、試しにそこにおいてある画像を読み込ませたいと思います。
684673:2009/11/16(月) 17:38:55
>>676
レス遅れてすみません。

デスクトップの方はそもそもcvSetCapturePropertyが正常に機能します。
ノートの方はMommas氏が書かれている方法を採っても値が変わらず、解像度等が変化しませんでした。
また、DLLはバージョンが1.0.0.1で同じでした。

ノートの方はcvResizeで無理やり変換しようと思います。
何度もありがとうございましたTT
685デフォルトの名無しさん:2009/11/18(水) 09:56:29
ご教授下さい。
複数の輪郭を抽出し,一つ一つの輪郭に対して囲まれている領域(閉じている領域)全ての座標値が知りたいのですが,何か良い方法はありますか?
686デフォルトの名無しさん:2009/11/18(水) 10:42:29
>>685
cvFindContoursで輪郭とって中身を見ていけばいいかと
687デフォルトの名無しさん:2009/11/18(水) 14:09:20
プログラム初心者なのですが
テンプレートマッチングでテンプレート画像を4つに増やしてマッチングを行って
結果を一致度で表すプログラムを作りたいのですが、わかりやすく教えてもらえますか?
688デフォルトの名無しさん:2009/11/18(水) 14:35:59
>>687
先ずはテンプレートマッチングのプログラムを作ってみてください。話はそれからでしょう。
689デフォルトの名無しさん:2009/11/18(水) 17:13:47
opencvのテンプレートマッチングのソースを使ってます。
690デフォルトの名無しさん:2009/11/18(水) 17:26:30
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
intmain (int argc, char **argv){
char text[16];
int i;
double result[3];
CvFont font;
IplImage *src_img1, *src_img2;
IplImage *dst_img[3];
if (argc != 3 ||
(src_img1 = cvLoadImage (argv[1], CV_LOAD_IMAGE_GRAYSCALE)) == 0 ||
(src_img2 = cvLoadImage (argv[2], CV_LOAD_IMAGE_GRAYSCALE)) == 0)
return -1;
for (i = 0; i < 3; i++) {
dst_img[i] = (IplImage *) cvClone (src_img2);
}
691デフォルトの名無しさん:2009/11/18(水) 17:28:04
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
intmain (int argc, char **argv){
char text[16];
int i;
double result[3];
CvFont font;
IplImage *src_img1, *src_img2;
IplImage *dst_img[3];
if (argc != 3 ||
(src_img1 = cvLoadImage (argv[1], CV_LOAD_IMAGE_GRAYSCALE)) == 0 ||
(src_img2 = cvLoadImage (argv[2], CV_LOAD_IMAGE_GRAYSCALE)) == 0)
return -1;
for (i = 0; i < 3; i++) {
dst_img[i] = (IplImage *) cvClone (src_img2);
}
692デフォルトの名無しさん:2009/11/18(水) 17:28:57
// (1)3種類の手法で形状を比較
result[0] = cvMatchShapes (src_img1, src_img2, CV_CONTOURS_MATCH_I1, 0);
result[1] = cvMatchShapes (src_img1, src_img2, CV_CONTOURS_MATCH_I2, 0);
result[2] = cvMatchShapes (src_img1, src_img2, CV_CONTOURS_MATCH_I3, 0);
// (2)形状マッチングの結果を画像に描画
for (i = 0; i < 3; i++) {
snprintf (text, 16, "%.5f", result[i]);
cvInitFont (&font, CV_FONT_HERSHEY_SIMPLEX, 1.0, 1.0, 0, 4, 8);
cvPutText (dst_img[i], text, cvPoint (10, dst_img[i]->height - 10), &font, cvScalarAll (0));
} // (3)入力画像1と3種類の値が書き込まれた入力画像2を表示し,何かキーが押されるまで待つ
cvNamedWindow ("Image1", CV_WINDOW_AUTOSIZE);
cvNamedWindow ("Image2a", CV_WINDOW_AUTOSIZE);
cvNamedWindow ("Image2b", CV_WINDOW_AUTOSIZE);
cvNamedWindow ("Image2c", CV_WINDOW_AUTOSIZE);
cvShowImage ("Image1", src_img1);
cvShowImage ("Image2a", dst_img[0]);
cvShowImage ("Image2b", dst_img[1]);
cvShowImage ("Image2c", dst_img[2]);
cvWaitKey (0);
cvDestroyWindow ("Image1");
cvDestroyWindow ("Image2a");
cvDestroyWindow ("Image2b");
cvDestroyWindow ("Image2c");
cvReleaseImage (&src_img1);
cvReleaseImage (&src_img2);
cvReleaseImage (&dst_img[0]);
cvReleaseImage (&dst_img[1]);
cvReleaseImage (&dst_img[2]);
return 0;
}
693デフォルトの名無しさん:2009/11/18(水) 17:31:02
2分割になってしまいましたが
上のプログラムはopencvのマッチングのサンプルなんですが
一致度を示すプログラムと
一致度の表示部分を教えてください。
694デフォルトの名無しさん:2009/11/18(水) 17:39:47
>>693
とりあえず日本語のリファレンスマニュアルぐらい読め。
どうせこのコードに使われている関数はほぼ使うんだから
それと最初のレス番を名前欄にかいてくれ
695デフォルトの名無しさん:2009/11/18(水) 19:03:29
そんな暇ねーから書き込んでんだろうが
696デフォルトの名無しさん:2009/11/18(水) 19:11:50
>>695
2chに書き込む暇はあるのにな
697デフォルトの名無しさん:2009/11/18(水) 19:12:09
          ∧_∧
        ⊂(・∀・ )つ-、  できたら言ってね〜
      ///   /_/:::::/
      |:::|/⊂ヽノ|:::| /」
    / ̄ ̄旦 ̄ ̄ ̄/|
  /______/ | |
  | |-----------| |
698デフォルトの名無しさん:2009/11/19(木) 11:49:58
プログラミング初心者はスレ違い
699685:2009/11/19(木) 11:58:42
>>686
cvFindContoursで取った輪郭からは輪郭線の座標値しか取り出せないと思っていたのですが。
そうではなくてその輪郭線で囲まれた全ての座標値,つまり輪郭で型取られた物体の全ての座標がほしいです。
700デフォルトの名無しさん:2009/11/19(木) 12:10:08
>>699
塗りつぶして全座標をチェックすりゃいいんじゃね。
cvFindContoursで得た輪郭なら元画像がすでにそうなってる(2値化)気もするが
701デフォルトの名無しさん:2009/11/19(木) 12:57:06
visualstudio2008(vc9)とopencv2.0を使い始めたのですが
IplImageとBITMAPの相互変換って可能ですか?
702デフォルトの名無しさん:2009/11/19(木) 13:09:54
BitmapのデータをIplImageのimageDataに入れてやればおk
703デフォルトの名無しさん:2009/11/19(木) 13:28:19
>>699
drawcontourの引数で塗りつぶすオプションにして、それ出力したIpl構造体スキャンすればよくね?
704703:2009/11/19(木) 13:29:04
>>700
すまん被った、良く見てなかったOTL
705名無し募集中。。。:2009/11/23(月) 18:12:35
Windows7 64bitにIPLがインストール出来なくて困ったちゃん
XPモードにインストールしてインストールイメージをコピーすれば・・・
いい加減にIPPにしろと言われそうだな(笑
706デフォルトの名無しさん:2009/11/24(火) 03:46:51
GIMPのファジー選択のようなプログラムをOpenCVを用いて組みたいのですが、可能なのでしょうか?
皆目、見当がつかず困っていまして・・・
707デフォルトの名無しさん:2009/11/24(火) 05:32:51
GIMPってソースあるんじゃないの?
708デフォルトの名無しさん:2009/11/24(火) 08:08:41
GIMPはGPLなのでソースを見るの禁止されてるのです
709デフォルトの名無しさん:2009/11/24(火) 08:30:10
代わりに見てここで教えればいいのか。これビジネスになるなw
710デフォルトの名無しさん:2009/11/24(火) 20:38:48
>>709
MSのIronRubyチームはそんな感じのことしてたらしいね。
711デフォルトの名無しさん:2009/11/25(水) 14:47:00
>>659 です。
たびたび失礼いたします。

鳥瞰図を真上から表示するには、
アフィン変換か射影変換、どちらが適しているのでしょうか?
また画像の頂点座標を求めなくてはならないのでしょうか?

ご意見よろしくお願いします。
712デフォルトの名無しさん:2009/11/25(水) 19:53:42
>>711
画像処理の本、一冊ぐらい読んでからやった方がいいんじゃないか?
713デフォルトの名無しさん:2009/11/25(水) 20:25:59
そういう検討も含めての卒論と思います。
(それぞれのメリットデメリット調べて書く)
714デフォルトの名無しさん:2009/11/25(水) 21:42:49
レベルの低い卒論だな
715デフォルトの名無しさん:2009/11/25(水) 23:06:28
OpenCV2.0を使ってカメラ二台を使ってリアルタイム動画処理をしようと思ったのですが
1台は画像を取り込む事が出来たのですが二台目が出来ません
OpenCVでは複数台のカメラからの取得は無理なのでしょうか?
716デフォルトの名無しさん:2009/11/25(水) 23:39:58
OpenCVのサイトに書いてある。
717デフォルトの名無しさん:2009/11/26(木) 20:33:02
Capture *capture = cvCaptureFromCAM(-1)でカメラ選択のダイアログまで出るのですが
選択したあともcaptureがNULLになったままで困っています
そのカメラはムービーメーカーや専用ソフトでも反応はしているのですが…
何か原因などありましたら教えてください
718デフォルトの名無しさん:2009/11/26(木) 23:46:20
ソース貼れ
719デフォルトの名無しさん:2009/11/27(金) 00:03:08
要所だけ抜き出すとこんな感じです
-1が返ってきて終了します
別のカメラだと正常に動作するのでコードの問題ではないような気がします
OpenCVでは使えないカメラなのかもしれません

#include <stdio.h>
#include <highgui.h>
int main(void){
int key;
CvCapture *capture;
IplImage *frameImage;
capture = cvCaptureFromCAM(-1);
if (capture == NULL ) {
printf( "カメラが見つかりません\n" );
return -1;
}
cvNamedWindow("Image", CV_WINDOW_AUTOSIZE );
while ( 1 ) {
frameImage = cvQueryFrame( capture );
cvShowImage("Image", frameImage );
key = cvWaitKey( 1 );
if ( key == 'q' ) {
break;
}
}
cvReleaseCapture( &capture );
cvDestroyWindow( windowNameCapture );
return 0;
}
720デフォルトの名無しさん:2009/11/27(金) 04:03:25
じゃぁカメラの問題なんじゃない。
なんでカメラの機種名を書かないの?
721デフォルトの名無しさん:2009/11/27(金) 06:39:00
ソース貼る時ってやっぱり pastebin
みたなののほうが見やすいよな
722デフォルトの名無しさん:2009/11/27(金) 07:55:44
C#でも使えるの?
723デフォルトの名無しさん:2009/11/27(金) 10:29:05
ARGOのLuシリーズです
724デフォルトの名無しさん:2009/11/27(金) 23:02:22
725デフォルトの名無しさん:2009/11/27(金) 23:10:57
>>719
OpenCVでは使えないカメラかもしれないってどういうことだ?
その2台目のカメラ一台で認識されるかは試した?
726デフォルトの名無しさん:2009/11/28(土) 00:06:34
>>723
業務用のカメラなのか。まあ相性はあるかもね。
(ドライバーの実装が完全じゃないことがあるし)

公式のSDKあるようだから使えばいいんじゃ?
RGB24bitに変換してIplImageのバッファにmemcpyすればいいっしょ。
http://www.argocorp.com/cam/usb2/lumenera/lu/Software/Lucam_sdk/Lucam_sdk.html
727デフォルトの名無しさん:2009/11/28(土) 15:24:21
>>725
試してみました 認識されています

>>726
なるほど、その方向で試してみます。
728デフォルトの名無しさん:2009/11/28(土) 15:26:07
OpenCvSharpでの質問なんですが
USBカメラの映像を取得するプログラムがうまく動きません
でも、まったく動かないわけではなく、たまに(ソースを変更して無くても)うまくいきます
具体的にはうまくいくとき→ちゃんと映像が表示される
失敗するとき→真っ黒の画面に色の付いたドットが10個ぐらい並ぶ
って感じです
カメラの起動(?)に時間がかかるのかと思い途中にSleepを入れてみても改善しませんでした

また、他のデバイス(SCFH、HPwebcam(USBカメラの映像を加工するソフト))を指定した場合はうまく動作しました。

切り分けのためにC++で試そうとも思ったのですが、VC++を使ったことが無くコンパイルすら通らない状態です

ソースは
ttp://www1.axfc.net/uploader/Sc/so/58903.txt
に上げておきました
どのようにすれば確実に動くのでしょうか?
729デフォルトの名無しさん:2009/11/28(土) 15:36:37
ごめんなさい
Sleepの時間を長めにして、待機する所をいろいろ変えてみたところ
CvCapture capture = CvCapture.FromCamera(0);
System.Threading.Thread.Sleep(500);
とするとかなり確実に動作するようになりました(でもたまーに失敗する)

実用上問題ないので、コレで行きます
ご迷惑おかけしました
730デフォルトの名無しさん:2009/11/28(土) 15:53:05
OpenCvSharp 面白そうですね。とりあえずダウンロードしてみるよ。PCの肥やしになる可能性が高いけどね
731デフォルトの名無しさん:2009/11/29(日) 17:15:14
cvCreateImage で、

cvCreateImage(cvSize(16384, 16384), IPL_DEPTH_8U, 1);

のようにピクセル指定では 16384ピクセル×16384ピクセル 以上は作成できないみたいですが
それ以上のピクセルサイズを扱う方法はないでしょうか?


cvLoadImage("ファイル名", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);

では、それ以上でもロードできました。
732デフォルトの名無しさん:2009/11/30(月) 01:00:54
じゃあcvCreateImage使わないでcvLoadImageでダミーの真っ白な巨大画像をよみこんでおいて、そこに書き込んでいけばいいんじゃないの?
733デフォルトの名無しさん:2009/11/30(月) 10:02:31
作成できるんじゃないの?
cvLoadImageの中でcvCreateImage使ってるようだが
734デフォルトの名無しさん:2009/11/30(月) 10:43:25
32768x32768x8bitで1GB。
Win32の1プロセスは2GBまでということなので
他の用途に確保した部分とあわせて、そこらへんの制限にかかってるのかな?
735デフォルトの名無しさん:2009/11/30(月) 10:50:59
64bitでやれば無問題
736デフォルトの名無しさん:2009/11/30(月) 11:24:51
v1.0だと1度にcvAllocでアロケーションできる領域はCV_MAX_ALLOC_SIZE までで、普通は1GB
またメモリーが足りなければOut of Memoryのエラーがでるはず
2.0だと例外投げるように変わってるのかな?

どっちにしろ>>731とは違う話かと
737デフォルトの名無しさん:2009/11/30(月) 15:23:12
OpenCVについて質問なんですが
2値化した画像の白い画素(255,255,255)の量を行単位,列単位で調べたいんですが
何かいい関数とかありますか?
738デフォルトの名無しさん:2009/11/30(月) 15:29:14
それぐらい自分でかけよ
739デフォルトの名無しさん:2009/11/30(月) 15:56:57
>>737
cvReduceがそうじゃないか
740デフォルトの名無しさん:2009/12/01(火) 18:58:28
画像に別の画像を回転して貼り付けってないですか?
741デフォルトの名無しさん:2009/12/01(火) 19:11:03
>>737
cvGetReal2Dで全行列調べればおk
742デフォルトの名無しさん:2009/12/01(火) 19:16:55
cvSmooth の param1とparam2って
16以上入れちゃだめなの?
CV_GAUSSIAN,CV_BLUR,CV_BLUR_NO_SCALE,CV_MEDIAN
で確認
743デフォルトの名無しさん:2009/12/02(水) 09:26:15
CMUの顔画像の学習を行っているのですが、
haartrainingの学習がステージ8で止まってしまいます。

条件
ポジティブ画像 2429 ネガティブ画像 44548
いずれも 19*19画素のjpgファイル。

ステージ7までは1時間弱で進んだのですが、そこから先は、12時間以上たっても
学習が進みません。


http://gihyo.jp/dev/feature/01/opencv/0004
↑で取り上げられている学習は、2,30分ほどで終わったのですが。
744743:2009/12/02(水) 10:51:05
訂正
ネガティブ画像
×44548
○4548

OS:vista64bit CPU Core2Duo [email protected]

haartrainingは時間がかかるので、マルチコア+x64対応でコンパイルしてみた。

さっきのCMUも、少しは学習速度が上がったかな?
745デフォルトの名無しさん:2009/12/02(水) 14:22:21
OpenCV2.0 のcmakeがうまく動かない

普通に
./configure
make install
だけじゃだめなのか
746デフォルトの名無しさん:2009/12/02(水) 14:48:41
>>744
データに対して条件が厳しいと終わらなくなる。

>>745
http://opencv.willowgarage.com/wiki/InstallGuide_Linux
747デフォルトの名無しさん:2009/12/02(水) 15:17:10
写真から目の検出をしたいんだが
大きさとか角度とかばらばらな場合はどうやるのが一番いいんですかね?
748デフォルトの名無しさん:2009/12/03(木) 14:54:17
>>747
顔方向推定して方向ごとの顔検出器で顔の位置と大きさと角度を検出して
それから目の検出をすればでできると思うけど。
OpenCVを使えば簡単にできますという内容ではないな。
749デフォルトの名無しさん:2009/12/03(木) 16:31:41
750デフォルトの名無しさん:2009/12/03(木) 18:28:13
OpenCV ver2.0を利用しています。
http://gihyo.jp/dev/feature/01/opencv/0004
↑で、正解7,000 誤り 3,000画像で学習してみたら、
win32でコンパイルしたオブジェクト検出ファイルだと、
検出箇所が少なく出ますが、x64でコンパイルしたら、
異常なほど検出されています。

libファイルは、win32とx64で、それぞれの環境でコンパイルしたときに
生成されたものを利用していますが、それが原因なのでしょうか?

順に、表紙win32,x64,数冊win32,x64
http://www.dotup.org/uploda/www.dotup.org419355.jpg.html
http://www.dotup.org/uploda/www.dotup.org419358.jpg.html
http://www.dotup.org/uploda/www.dotup.org419360.jpg.html
http://www.dotup.org/uploda/www.dotup.org419361.jpg.html
751デフォルトの名無しさん:2009/12/03(木) 18:32:29
>>746
thx
確かに、学習画像の解像度が低かったり、変わり映えのしない
画像が多かったかも。

顔検出とかをやってみると、壁のシミや木の枝とかの
偽陽性検出が発生することがしばしばあるんで、
そのあたりも入れてみようかなー。
752デフォルトの名無しさん:2009/12/04(金) 01:11:10
>>750
せめてコンパイラーのバージョンくらいは書いてくれよ
753デフォルトの名無しさん:2009/12/04(金) 17:43:27
ただ単に画像数を増やせばいいってわけじゃないんだろうな
検出したい画像だけに含まれる特徴を自分で考えて、誤り画像にはそれが含まれないようなのを
意識的に増やすとうまくいくんじゃないか?
例えばある文字を検出したいとして、他の文字にも引っかかるんだったら、その違う文字を誤り画像
として多く入れとくとか。
754デフォルトの名無しさん:2009/12/04(金) 17:50:31
これが全自動で出来ればどんどん精度が高くなるかもしれないぜ

1、 画像学習をする
2、 検出結果の画像中で正解のところをクリックしたら、その他の誤り検出領域を画像として書き出す
3、 書き出された画像を誤り画像に追加する
4、 1に戻ってやり直し
755デフォルトの名無しさん:2009/12/05(土) 03:45:39
輪郭領域の面積を求めようと思っています。
▼のような矩形の場合、例えば以下のようなプログラムで取得できますが

double area;
IplImage *img = 0;
CvMemStorage *storage = cvCreateMemStorage (0);
CvSeq *points;
CvPoint pt;
points = cvCreateSeq (CV_SEQ_POLYLINE, sizeof (CvSeq), sizeof (CvPoint), storage);
pt.x = 79;
pt.y = 59;
cvSeqPush(points, &pt);
pt.x = 132;
pt.y = 112;
cvSeqPush(points, &pt);
pt.x = 174;
pt.y = 46;
cvSeqPush(points, &pt);
area = cvContourArea (points, CV_WHOLE_SEQ);

756デフォルトの名無しさん:2009/12/05(土) 03:48:36

▲ のような輪郭がクロスするような形状の場合、輪郭内の面積をうまく取得できません。
何か、良い方法があれば教えてください。

double area;
IplImage *img = 0;
CvMemStorage *storage = cvCreateMemStorage (0);
CvSeq *points;
CvPoint pt;
points = cvCreateSeq (CV_SEQ_POLYLINE, sizeof (CvSeq), sizeof (CvPoint), storage);
pt.x = 143;
pt.y = 119;
cvSeqPush(points, &pt);
pt.x = 214;
pt.y = 119;
cvSeqPush(points, &pt);
pt.x = 132;
pt.y = 211;
cvSeqPush(points, &pt);
pt.x = 211;
pt.y = 210;
cvSeqPush(points, &pt);
area = cvContourArea (points, CV_WHOLE_SEQ);
757747:2009/12/05(土) 12:20:11
>>748
なるほどそういう方法もありますね。
いや目だけじゃなくて手とかいろんなもんを最終的にやりたくて
画像検索ソフトを作ろうと思ってまして、写真を自動的に分類するみたいな
だから出来るだけ多くの情報を拾い出したいわけでして

調べたらheerlerningってので学習させればいいんですね
サンプルを集めろってことなんだけど
画像のどの座標がポジティブでどの座標がネガティブでとか
手作業でやるのは無理っぽいんですがね
せめて画像ビューアーにそういう座標指定機能のついたフリーソフトとかないですかね?
最終的に学習用のテキストファイルとかも出力してくれるような
まあ自分で作ってもいいんだけど
758デフォルトの名無しさん:2009/12/05(土) 23:14:32
>>756
まず各線分同士が交差するかをチェック
交差する場合交点を求め新たな頂点とする
各領域で面積を求め足し合わせる
759デフォルトの名無しさん:2009/12/06(日) 03:31:30
>>757
簡単に言っているけどかなり難しいよ。
こういうのでしょ。
http://www.eecs.berkeley.edu/Research/Projects/CS/vision/human/index.html
760デフォルトの名無しさん:2009/12/06(日) 09:49:36
>>759
いやいやそこまではしませんよ
せいぜい顔の目の相対位置から個人を特定したり
手とか足の位置が分かれば体の場所もわかるから服の色とかも拾えるかなと考えてるだけです
761デフォルトの名無しさん:2009/12/06(日) 12:19:21
>>760
それでも実用まで考えるとかなり難しいよ。
顔と目、体全体はOpenCVにサンプルがついているからそのあたりから試せばいい。
OpenCV2.0のdata\haarcascadesにcvHaarDetectObjects()用の学習済みのデータが入っている。
samples\c\peopledetect.cppには歩行者検出のサンプルがある。
762デフォルトの名無しさん:2009/12/06(日) 14:45:15
okaoVision
763デフォルトの名無しさん:2009/12/06(日) 17:19:11
初心者です
Windows7 Ultimate(64bit) +VisualStudio2005の環境で
ttp://wtpage.info/program/opencv.html
の内容にしたがって進めていたのですが
cvhaartrainingのプラットフォームで<新規作成...>を選択
という部分で選択肢にx64の項目が出てきません
これはどうしてなのでしょうか?
764デフォルトの名無しさん:2009/12/06(日) 17:33:20
>>763
それはOpenCVに限った話?
普通に新規作成したプロジェクトでも出ないのならスレ違い。
もし自分で作成したプロジェクトでもでなくてかつEEでもなかったら、
VS2005インストール時にデフォルトでは外されてる64bitのチェック入れなかったんだろうけど。
765デフォルトの名無しさん:2009/12/06(日) 17:37:32
>>764
自分で作ったものではx64という選択肢はあります
ちなみにEEとは何でしょうか・・・・?
766デフォルトの名無しさん:2009/12/06(日) 17:44:28
>>761
おお、素晴らしい
ぜんぜん気づかなかった、これだけあれば十分な気がする
767デフォルトの名無しさん:2009/12/06(日) 17:52:21
>>765
ちょっとやってみたけどx64はもう作成済みで、新規作成には出てこないみたいだけど?
新規作成選ぶとこにすでにx64ないか?
768デフォルトの名無しさん:2009/12/06(日) 17:54:06
と、作成済みのプロジェクトと未作成のとあるんだな。
他のプロジェクトにも一切x64出てこない?
769デフォルトの名無しさん:2009/12/06(日) 18:02:40
>>764,767,768
おっしゃるとおりでした。今再インストールして64ビットのチェック入れたら
無事に表示されました。ありがとうございました。
770デフォルトの名無しさん:2009/12/07(月) 00:20:10
OpenCV1.0を使ったアプリをJavaで作っていて、
OpenCV Processing LibraryのjarをEclipceに読み込ませて作っています。
これをjarで固めてLinux上で動かしたいんですが、
LinuxにOpenCVをインストール&パス設定しただけで、動作するものなのでしょうか?
ライブラリのDLLとかもLinux上に上げなければいけないのでしょうか?
771デフォルトの名無しさん:2009/12/07(月) 00:30:25
やってみれば?
772デフォルトの名無しさん:2009/12/07(月) 01:11:16
Java初心者はスレ違い
773デフォルトの名無しさん:2009/12/13(日) 15:08:42
cvDFTを使った2次元の周波数解析をしたいのですが、どう組んだら良いのかさっぱりです。
教えていただけないでしょうか。

ttp://opencv.jp/sample/discrete_transforms.html
これは周波数解析ではないですよね?
774デフォルトの名無しさん:2009/12/15(火) 15:03:39
2枚の画像で変化のあった部分は変化後(カラー)で,変化がなかった部分は黒く表示したいんですが
どういった方法が適しているでしょうか?ご教示お願いできませんでしょうか.
775デフォルトの名無しさん:2009/12/15(火) 18:49:24
差分とって閾値処理 CV_THRESH_TOZERO
776デフォルトの名無しさん:2009/12/15(火) 20:39:06
このソフトは工場での製品検査に利用出来ますか。
777デフォルトの名無しさん:2009/12/15(火) 20:43:32
はい
778デフォルトの名無しさん:2009/12/15(火) 21:17:46
cvRect型の構造体の各座標を結んで矩形を描いてくれる関数なんてあったりしますでしょうかー
779デフォルトの名無しさん:2009/12/15(火) 22:14:04
>>778
各座標を結んでっていうのがどういう風に結ぶのかわからんが普通に矩形描くならcvRectangleでできるはず
780デフォルトの名無しさん:2009/12/15(火) 23:29:41
opencvsharp1.0での、2値画像の輪郭抽出ってどうやればいいですか?
781デフォルトの名無しさん:2009/12/16(水) 02:53:51
>>775
ご回答ありがとうございます。
差分処理をした画像を閾値処理するということでよろしいでしょうか。
試したところ、差分処理後の画像は変化後の画像とはまた異なってしまうようなので,
変化があった部分は変化後そのままを表示させたいのですが。
何かよい方法ありますでしょうか?
782デフォルトの名無しさん:2009/12/16(水) 08:13:15
元画像とandで合成すれば良いんで無い?
手元にPC無いから慣だけど
783778:2009/12/16(水) 15:17:02
ありがとうございます!
784デフォルトの名無しさん:2009/12/17(木) 17:14:56
opencv2.0なのですが、64bitのmingwでmakeできた方いますか?
785デフォルトの名無しさん:2009/12/22(火) 11:09:02
opencv2.0で追加された新しい関数のサンプルコードってどこかないですか?(英語でも可)
限定的に言えばcvExtractMSERを使いたいんだが、引数がイマイチ?で・・・。
786デフォルトの名無しさん:2009/12/22(火) 11:48:35
2.0で追加された新しい関数のお勧めってどれだ
python ctypes-opencvは2.0でも使えるんだろうか
787デフォルトの名無しさん:2009/12/24(木) 23:33:27
質問です。
processingでopenCVを動かしたくて、環境を作りました。
とりあえずビデオ画像をcaptureしたかったので
ttp://ubaa.net/shared/processing/opencv/opencv_cascade.html
のコードを動かしてみましたが
描画の窓にカメラの画像が出てきません。

コンパイル自体は通ってるので
おそらくリンカエラーなど、環境構築でミスってることはないと思います。
また、カメラも認識出来ています。
(プログラムを走らせるとカメラのライトが点灯する)

Versionは
processing 1.0.7
OpenCV1.0
OSはVistaです。

どなたか、ご存知の方いらっしゃったらよろしくお願いします。
788デフォルトの名無しさん:2009/12/25(金) 00:43:30
>>787
>>728-729
辺りはどうだろうか?
789デフォルトの名無しさん:2009/12/27(日) 20:42:22
>>788
レス頂きありがとうございます。
がいしゅつ(なぜか変換ry)だったのですね。

コレを見る限り、
生のOpenCVではcapture用にオブジェクトを生成しているのでしょうか?
Processingに関しては、内部を詳しく確認していないのでわかりませんが
ビデオをキャプチャする際はOpenCVクラスのオブジェクトを生成し、
そのなかのcaptureメソッドを呼んでいるようでしたので
captureメソッドを呼ぶ前にdelay(Sleepと同様)を入れてみました。

がやはりだめでした...

ほかに考えられる原因はどんなものがあるでしょうか?

790デフォルトの名無しさん:2010/01/01(金) 18:13:38
1.0だと結構カメラ相性が酷かった気がする.

昔はカメラ画像のキャプチャはDirectShowでやって、
それをOpenCVに渡して画像処理していた覚えがある.
791デフォルトの名無しさん:2010/01/04(月) 00:26:04
haartraining.exeで学習していると
下のような状態から全く動かなくなってしまいます。
原因に心当たりのある方がいらっしゃったらよろしくお願いします。

Tree Classifier
Stage
+---+---+---+---+---+
| 0| 1| 2| 3| 4|
+---+---+---+---+---+

 0---1---2---3---4

Parent node: 4

*** 1 cluster ***
POS: 395 400 0.987500  ←ここから動かない
792デフォルトの名無しさん:2010/01/04(月) 21:34:16
>>790
レスありがとうございます。

実はOpenCV2.0はインストール済みなのですが
うまく動かなかったため1.0で試そうとしています。
(リンカエラーがでる。
UnsatifiedLinkError: hypermedia.video.OpenCV.capture(|||)V)
すいません、正直よくわからなかったので、ここは放置していました。

ここがうまくいけば2.0のほうが安定して動作するのでしょうか?
793デフォルトの名無しさん:2010/01/06(水) 06:03:28
ttp://www36.atwiki.jp/prolog/pages/19.html
このサイトに書いてある方法にのっとって最新版をインストしてビルドしてみると
cv.libがありませんってエラー吐かれるので探してみたのですが、設定等は上記サイトのままで大丈夫だったのですが。
インストし指定したlibフォルダ自体に元からcv.libが入っていなかったみたいなのですが、これは再インストしなおせばいいのでしょうか?
794デフォルトの名無しさん:2010/01/06(水) 14:47:09
795デフォルトの名無しさん:2010/01/06(水) 17:28:01
>>793
最新版ってのが2,0なら1.1preまでの方法じゃうまくいかんよ。
参考にしたいソースがあるんだったら同じバージョンのやつを落としてきてやった方がいい。
796デフォルトの名無しさん:2010/01/10(日) 19:53:32
>>793
2.0からはVC用のlibがついてないのでソースコードから自分でコンパイルしないといけない
797デフォルトの名無しさん:2010/01/16(土) 14:54:35
一つだけ困っている事があるのですが,ビデオライタが上手く扱えません.

今,読み込んだ動画を画像処理して,ビデオライタで出力しているのですが,フレーム率
の値がおかしな事になっています.

プログラムには,
vw1 = cvCreateVideoWriter("output1.avi", -1, 30, cvSize (f_width, f_height),1);

と記述していて,30フレーム/秒の動画が出力されるはずなのですが,500フレーム/秒の動画
が出力されます. 記述の仕方が間違っているのでしょうか?
798デフォルトの名無しさん:2010/01/16(土) 20:25:36
動画像処理で物体を除去するプログラムです。
詳しいことはファイルに書いてあります。

http://www.dotup.org/uploda/www.dotup.org567007.zip.html

環境
OS:Windows
コンパイラ名とバージョン:VisualC++2008
言語:C言語(ライブラリとしてARToolkit、OpenCVを使用しています)

アップローダーのパスワードは8756です。
自力で出来る限りのところまでやってみたのですが限界を感じました。

ご指摘お願い致します。
799デフォルトの名無しさん:2010/01/16(土) 22:52:11
マルチうぜえ
800デフォルトの名無しさん:2010/01/16(土) 23:46:38
>>798
プロパティで大学と名前わかるなw
801デフォルトの名無しさん:2010/01/16(土) 23:49:17
マジだw
802デフォルトの名無しさん:2010/01/16(土) 23:53:46
サンプル画像は添付されてないのか
803デフォルトの名無しさん:2010/01/16(土) 23:55:33
ワード文書なんて怖くて開けねえ
804デフォルトの名無しさん:2010/01/17(日) 00:26:56
初期化と終了が対応していないw
805デフォルトの名無しさん:2010/01/20(水) 14:27:49
CMakeでビルドができません。
Configureを押すと、本来コンパイラの選択に行くらしいのですが、以下のエラー
で止まります。
CMake Error: your C compiler: "bcc32" was not found. Please set CMAKE_C_COMPILER to a valid compiler path or name.
CMake Error: your CXX compiler: "bcc32" was not found. Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
というエラーが起きます。これらの設定ってどうやればいいでしょうか
あ、環境はXPです。
806デフォルトの名無しさん:2010/01/20(水) 15:10:40
解決しました。どうやら最初のConfigure時にコンパイラ名を間違えてしまって
たのが原因みたいでした。一度キャッシュファイルが作られると、ずっと同じ
設定になってしまうようなので、作られたフォルダを削除したら上手くいきました。
807デフォルトの名無しさん:2010/01/20(水) 16:18:59
質問させてください.
ロジクールのUSB接続のカメラで表示するプログラムをOpenCV1.0で作成し,正常に動作していたのですが
PCを変更したところ,プログラム自体は動作するのですが,カメラからの入力は一面黒く表示されるようになってしまいました.
プログラムを動かすとカメラも光るので,認識はされていると思うのですが.(>>787さんと同現象かもしれません)
原因などご存知の方いらっしゃいますか?
808デフォルトの名無しさん:2010/01/20(水) 18:41:29
>>807
Vistaだったりしませんか?
VistaだとOpenCVはカメラ画像取得方法がちょっと違うやり方でやらないと出来ないので、ぐぐればでてきますよ

質問です
ROIを用いてオプティカルフローを使おうとするとint dx = (int)cvGetReal2D(velx0,i,j)の部分で
one of arguments' values is out of range(index is out of range) in Function cvPtr2Dのエラーがでます。
対処法の方分かる方いらっしゃったら教えてください。
809デフォルトの名無しさん:2010/01/20(水) 19:02:02
自己解決しました
失礼しました
810デフォルトの名無しさん:2010/01/20(水) 20:24:34
>>809
>>808の人?
811デフォルトの名無しさん:2010/01/21(木) 14:09:14
>>810
すいません>>808です
812デフォルトの名無しさん:2010/01/23(土) 08:10:53
OPENCVのサイトからwindows版をdownloadしようとすると
ブラウザが落ちるんですが、俺だけ?
813デフォルトの名無しさん:2010/01/23(土) 10:18:59
はい
814デフォルトの名無しさん:2010/01/23(土) 10:52:56
>>812
使ってるブラウザが悪いんじゃね?何使ってるか知らんが。
815デフォルトの名無しさん:2010/01/23(土) 20:02:52
>>1にStructure from motionとは書いてあるけど
実用的な関数ってあるんだろうか・・・・
816デフォルトの名無しさん:2010/01/23(土) 21:34:20
opencv2.0のPoint型で表される3chの画素の値を直接操作するときはどう代入すればいいんでしょうか?


Point p;
mat.at<uchar>(p) = ここの部分;
817デフォルトの名無しさん:2010/01/24(日) 15:39:54
1.1のhaartraining.exeってバグがあるのですか?
エラー吐かれて進めません.
818デフォルトの名無しさん:2010/01/24(日) 18:23:35
それってerrorって出てくるやつでしょう。この場合「誤差」って意味じゃないの。
学習はとっても時間がかかるよ
819デフォルトの名無しさん:2010/01/25(月) 15:31:59
>>816
samples/image.cpp
http://opencv.jp/opencv-2.0svn/cpp/fast_element_access.html
ch分解して,1個ずつでしか触れないみたいね.
vector<cv::Mat> planes;
cv::split( mat, planes );
uchar &value = planes[0].at<uchar>(p.y, p.x);
value = saturate_cast<uchar>(255);

# cv::Mat->data と IplImage->imageData は一致するっぽい
820デフォルトの名無しさん:2010/01/26(火) 18:28:02
821デフォルトの名無しさん:2010/01/26(火) 20:20:07
意味がわからん
これじゃダメなのか

using namespace cv;
Mat_<Vec3b> img = imread("img1.bmp");
for(int i = 0; i < img.rows; i++)
  for(int j = 0; j < img.cols; j++)
    img(i,j)[2] ^= (uchar)(i ^ j);
cv::namedWindow("Image", CV_WINDOW_AUTOSIZE);
cv::imshow("Image", img);
cv::waitKey(0);
822デフォルトの名無しさん:2010/01/26(火) 20:43:22
あ、Pointなのか

>>820と等価なはず

using namespace cv;
Mat img = imread("img1.bmp");
for(int i = 0; i < img.rows; i++){
    for(int j = 0; j < img.cols; j++){
        Point p = Point(j,i);
        img.at<Vec3b>(p)[0] = saturate_cast<uchar>( img.at<Vec3b>(p)[0] * 6 + 10 );
        img.at<Vec3b>(p)[2] = 0;
    }
}
823デフォルトの名無しさん:2010/01/27(水) 14:00:19
ステンシル値の読み込みがうまくいかないのですが、どのように書けばいいのでしょうか?

// ステンシル値格納用配列
buf_stencil = new int[xsize*ysize];
for(int i=0; i<xsize*ysize; i++){
buf_stencil[i] = 0;
}

glReadPixels(0, 0, xsize, ysize, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, buf_stencil);

/*** 配列はbuf_stencil[xsize*(ysize-y-1) + x] ***/
for(int y=0; y < ysize; y++){
for(int x=0; x < xsize; x++){
if( buf_stencil[xsize*(ysize-y-1) + x]==1){ /*ステンシル値をチェック*/
/*** 除去処理 ***/
if (imgNIN->imageData[imgNIN->widthStep * y + x]==0) {
img->imageData[img->widthStep * (y) + (x)*3] = imgCLO->imageData[img->widthStep * (y) + (x)*3];
img->imageData[img->widthStep * (y) + (x)*3 + 1] = imgCLO->imageData[img->widthStep * (y) + (x)*3 + 1];
img->imageData[img->widthStep * (y) + (x)*3 + 2] = imgCLO->imageData[img->widthStep * (y) + (x)*3 + 2];
}
}
}
}
824デフォルトの名無しさん:2010/01/27(水) 15:49:26
OpenCVをモバイル(WindowsCE)上で使用したいんですが、
単純にOpenCVのプロジェクトのプラットフォームを
モバイルに変更してもエラーが出てコンパイルできません。
モバイル上で利用するのは無理ですか?
825デフォルトの名無しさん:2010/01/27(水) 16:22:31
Operating System:
32-bit MS Windows (95/98), 32-bit MS Windows (NT/2000/XP), All 32-bit MS Windows (95/98/NT/2000/XP),
All POSIX (Linux/BSD/UNIX-like OSes),
OS X, Linux, Win2K, WinXP
826デフォルトの名無しさん:2010/01/27(水) 18:43:12
そこをなんとかと思ったけどやっぱり無理ですか…
827デフォルトの名無しさん:2010/01/28(木) 01:52:38
>>823
どう上手くいかないのかぐらい書けよ…。
828デフォルトの名無しさん:2010/01/28(木) 11:28:50
>>819-822
返事が遅くなりました、できました(*´∀`*)
c++と2.0に慣れてないもので、これから勉強します…
ありがとうございました!
829824:2010/01/28(木) 13:21:43
2.0じゃなくて1.0ならモバイル上でも使用できた。
highguiあたりはちゃんと動くか分からないけど。
830デフォルトの名無しさん:2010/01/28(木) 17:54:42
CVの関数を用いない2値化の書き方を教えてください。
831デフォルトの名無しさん:2010/01/28(木) 19:02:55
#define TH 128
for (i = 0; i < img.size; ++i) img.data[i] = img.data[i] > TH ? 255:0;
832デフォルトの名無しさん:2010/01/29(金) 00:14:46
ひょっとして2.0て変な風にc++とりこんじゃったの?
純粋Cなのがよかったのに
833デフォルトの名無しさん:2010/01/29(金) 03:00:00
行列の加減乗除するためにアホみたいに一時行列確保して
後でcvReleaseMatしまくるのが無くなっただけでもC++に移行した価値はあると思うんだけどなぁ
834デフォルトの名無しさん:2010/01/29(金) 05:44:27
元々純粋なCじゃなくて、ただのベターC的C++だったしな。
今の方がいくらかマシ。
835デフォルトの名無しさん:2010/01/29(金) 08:38:18
createsample.exeで-infoを使って複数枚の正解画像から正解サンプル作る時の質問なんだが、
これって例えば4枚の正解画像しか用意してなかったら、4つの正解サンプルしか作られないの?
-imgの時みたいに4枚の正解画像から7000個の正解サンプルとかはできないの?

ちなみにコマンドは
createsamples.exe -info positive.txt -vec positive.vec -num 7000 -bgcolor 255 -w 24 -h 24

positive.txtには4枚の正解画像のパスと位置を記してある。
このコマンドやったら4つの正解サンプルだけのvecファイル作るんだが・・・。
836デフォルトの名無しさん:2010/01/29(金) 15:07:53
for文で画像全体を走査し、if文で、
2値化した画像の画素値が0(黒)の部分だったら元画像を右に+5のように少しずれて、
そのずれた先がまた黒だったら、今度は元画像を下に+5ずれた部分から画素を取得する、
以下、その繰り返し・・・
というようなif文の書き方はどのように書けば良いのでしょうか?

画素値はIplImageで取得しています。

for(int y=0; y < ysize; y++){
for(int x=0; x < xsize; x++){
if (imgNIN->imageData[imgNIN->widthStep * y + x]==0) {
img->imageData[img->widthStep * (y) + (x)*3] = imgNOR->imageData[img->widthStep * (y) + (x+5)*3];
img->imageData[img->widthStep * (y) + (x)*3 + 1] = imgNOR->imageData[img->widthStep * (y) + (x+5)*3 + 1];
img->imageData[img->widthStep * (y) + (x)*3 + 2] = imgNOR->imageData[img->widthStep * (y) + (x+5)*3 + 2];
}
}
}
837デフォルトの名無しさん:2010/01/29(金) 17:44:06
0以外が見つかるか範囲外になるまで繰り返すのであれば、もう一段ループが必要だろ
838デフォルトの名無しさん:2010/01/29(金) 17:58:46
ループというのは、もう一つfor文で回すということですか?
それとも、if文を入れ子で使うということですか?
839デフォルトの名無しさん:2010/01/29(金) 18:06:02
>以下、その繰り返し・・・
この「繰り返し」がループだろう

while(見つかるまで)
 if (そこは白){成功;break;}
 else{右だか下だか移動}
840デフォルトの名無しさん:2010/01/29(金) 18:36:53
うまくやったら一回走査するだけでも行けそうなんだが
処理速度に拘らなければどーでもいいか。
841デフォルトの名無しさん:2010/01/29(金) 19:34:39
>>835
4枚の画像に4つの正解しかないなら無理だと思うけど、そうじゃないなら
infoのファイルの矩形の数を7000に増やせばいいんじゃない?
842デフォルトの名無しさん:2010/01/29(金) 22:01:30
for文で全画素を走査する中でwhile文を書き、その中にif文で黒ならばと入れ子でif文でそこが白なら成功でbreak。
失敗なら、右、左、上、下などの場合分けをelseで書く感じでしょうか?

elseだと4回分(右、左、上、下)whileを書くのでしょうか?

また、見つかるまで、とはどのような継続条件式なのでしょうか?

for(y座標を走査)
for(x座標を走査)
while(見つかるまで?←)
     if(そこが黒ならば)
if(そこが白ならば){成功;break}
else{右に移動}
while
if
else{左に移動}

     ・
     ・

843デフォルトの名無しさん:2010/01/29(金) 22:14:25
日本語BASICかと思った
844デフォルトの名無しさん:2010/01/29(金) 23:04:55
>>842
左とか上とか初出なんだけど

I(x,y) → I(x+5,y) → I(x+5,y+5) → I(x+10,y+5) → I(x+10,y+10) → ...
の順に非0の画素を探すんじゃないのか

while(注目画素の画素値が0) {
  注目画素を左または下に交互に移動
}
845デフォルトの名無しさん:2010/01/29(金) 23:05:17
正直何が言いたいのかよくわからない
さっきは右と下の繰り返しって言ってたのに、左とか上とか出てきたし
846844:2010/01/29(金) 23:10:41
> 注目画素を左または下に交互に移動
左じゃなくて右ね。つられて間違えてしまった
847デフォルトの名無しさん:2010/01/29(金) 23:34:55
大変困ってます。誰か助けてください。

今、単純に動画を再生するプログラムを作りました。
1GBくらいの動画なら再生はできるのですが、データサイズが大きくなると(10GBくらい)途中で再生が
止まってしまいます。プログラムはエラーが出ず、自然終了するので原因が分かりません。
誰か何か知っている方いらっしゃいませんか?
848デフォルトの名無しさん:2010/01/30(土) 00:39:52
>プログラムはエラーが出ず、自然終了

?
849デフォルトの名無しさん:2010/01/30(土) 02:11:03
848さんへ
あたかも、動画をすべて再生したかのようにプログラムが終了してしまいます。
コマンドプロンプトには、”続行するには何かキーを押してください...”と表示されています。
850デフォルトの名無しさん:2010/01/30(土) 02:17:16
具体的に何をやってんのかさっぱり分からんw
cvCreateFileCaptureで取り込んでcvShowImageしてるだけなん?
851デフォルトの名無しさん:2010/01/30(土) 11:13:46
フレーム数数えたりしてるならそこがintなんかになっててそれが溢れたとか
いや、C#でしか触ってないので想像だし
コレでエラー吐かずに終了するのかも知らないけど
852デフォルトの名無しさん:2010/01/30(土) 12:37:49
>>835
それ俺も困ったけど、
-img でサンプル増やすコマンドを画像ごとに出力するスクリプト書いて
生成されたvecファイルをmergevecというコマンドで結合したらいいよ。
http://note.sonots.com/SciSoftware/haartraining/mergevec.cpp.html
853デフォルトの名無しさん:2010/01/30(土) 21:26:06
チャンネル数1の画像(グレースケール画像、実際は動画の1F)を減色したいんですが
単に決まった値(今回は4値化したいので64,128,192)で分けれればいいので
クラスタリング?(よく分からない)は必要ないと考えて
ttp://d.hatena.ne.jp/aidiary/20091003/1254574041
を参考にピクセルごとに減色するコードを書いたのです。
でも、実行してみると5fps程度しか出ないぐらい遅くて使い物にならなかったのです。
こういった場合どう処理するのがいいんでしょうか・・・
考え方だけでもいいので教えていただきたいです。

なお、OpenCVは.net用ラッパーOpenCvSharpを使っていますが、普通のCのコードでもありがたいです。
854デフォルトの名無しさん:2010/01/30(土) 21:34:58
ごめんなさい
自己解決しました。

一応簡単に方法を書いておくと、
Thresholdで、各閾値で256/4=64と0の二値に変換(一番明るいところは63と0)
それら4つをaddすることで4値化できました。(たぶん)
855デフォルトの名無しさん:2010/01/30(土) 21:40:58
あ、うまく行ったと思ったらうまく行ってませんでした
でもこの方法でどうにかなりそうなのでどうにかします。
856デフォルトの名無しさん:2010/01/30(土) 22:29:49
等間隔の閾値(64,128,192)と出力値(0,85,170,255)でいいなら、

a/64*85 (aは整数値)
857デフォルトの名無しさん:2010/01/30(土) 22:38:32
>>856
ありがとございます
それは1ピクセル毎って事ですよね?
こんなに綺麗に書けるとは気づきませんでしたが1ピクセル毎にやるとどうも遅いのです。。。

そして>>854の方法でiを1〜3で回すとき
閾値を256/4*iでmax値を256/(4-1)にすることでうまく行きました
お騒がせしました。
858名無し募集中。。。:2010/01/30(土) 23:27:41
Lutとか使うと早くなるとか?
859デフォルトの名無しさん:2010/01/31(日) 01:47:12
入力値ごとに出力値が決まってるからLUTでいけそうだね。
860デフォルトの名無しさん:2010/02/01(月) 01:50:12
cvLoadImageで画像をロードすると、
IplImageのimageDataが指す画像データは各ピクセルごとに、
B0 G0 R0 B1 G1 R1...
と値がならんでますよね?
これをcvCvtColor(BGR2HSV)と変換すると、
H0 S0 V0 H1 S1 V1...
となると考えていいんでしょうか?
861デフォルトの名無しさん:2010/02/01(月) 03:46:40
はい
Hは0〜180なので注意
862デフォルトの名無しさん:2010/02/01(月) 09:09:37
ありがとう
863デフォルトの名無しさん:2010/02/01(月) 11:47:46
860です。
すいません、ここでふつふつと疑問がでてきました。

cvCvtColorでBGRからHSVに変更しても、
例えば下記のようにした場合、
画像は赤になってしまいます。
これでは、imageDataとピクセルデータの対応関係が、
HSV形式ではなくBGR形式のままなのではないでしょうか?
とんちんかんでしょうか・・・

cvCvtColor(img, img, CV_BGR2HSV);
for(y = 0; y < img->height; y++)
{
for(x = 0; x < img->width; x++)
{
img>imageData[img->widthStep * y + x * 3 + 0] = 0;//H?
img->imageData[img->widthStep * y + x * 3 + 1] = 0;//S?
img->imageData[img->widthStep * y + x * 3 + 2] = 255;//V?
}
}
864デフォルトの名無しさん:2010/02/01(月) 12:37:16
BGRとして表示しちゃってるんじゃないのか
865デフォルトの名無しさん:2010/02/01(月) 12:42:14
そのコードで白色になって欲しいなら
その後に
HSV2BGRして表示しないとだめじゃ無い?
確か表示(showimgだっけか?今手元にPC無いんで曖昧でごめん)の時はBGRとして表示してる筈だから
て言うかこの場合最初のCvtColorは無意味
CvtColorは各要素の値を指定どおりに変換してるから
例えば要素1,2,3が255,255,255のイメージをBGR2HSVしたら0,0,255になるんだと思う
866デフォルトの名無しさん:2010/02/01(月) 12:55:21
cvShowImage()だな
867デフォルトの名無しさん:2010/02/01(月) 12:55:58
あ、この場合Hは何でも良いので180かもしれない
868デフォルトの名無しさん:2010/02/01(月) 13:00:13
まあ普通に考えりゃ0だと思うけど
869デフォルトの名無しさん:2010/02/01(月) 19:42:05

みなさんありがとうございます。
cvShowImage関数の仕様に、ピクセルデータを強制的にBGR形式で表示するなんて書いてなかったですよ・・・
ハメ技きついなァ・・・・

まとめておきます。

BGR画像をHSV変換してピクセルデータを操作した後にcvShowImageで画面表示する方法
 (1) cvCvtColor(image_in, image_out, BGR2HSV)
 (2) imageDataはピクセルデータがH0 S0 V0 H1 S1 V1…が並んでいるので、そのように参照、変更を行う※
 (3) cvCvtColor(image_in, image_out, HSV2BGR)
 (4) cvShowImage(image_out)

※Hは通常の[0:360]タイプではなく、uchar用の[0:180]タイプなので、
 Hの入力値を最大255最小0として、0〜255を0〜180に規格化する。

 例 (uchar)(180.0*h/255.0);
870デフォルトの名無しさん:2010/02/04(木) 08:58:43
WEBCAMで数字の羅列の画像を読み込んでそれを数字として認識させようとしているのですが、
(エアコンの温度表示をWEBCAMで読んで、それをリモートからログインして知ろうとしてます)
OpenCVを使うのは適切でしょうか?
871デフォルトの名無しさん:2010/02/04(木) 09:14:49
>>870
あと書き忘れましたが、20個のエアコンの温度が4x5で並んでいるので、
それを一個づつ別々に認識させる必要があります。もう画像を取り込むところは
出来ていて、毎日人力でやっているのですが、これをなんとか自動化しようと
思っています。
どうかよろしくお願いします。
872デフォルトの名無しさん:2010/02/04(木) 11:19:45
OpenCVはただのライブラリ
できるかどうかは自分次第
873デフォルトの名無しさん:2010/02/04(木) 11:21:33
TCP/IP 接続出来るネットワーク温度計もあるしね
874デフォルトの名無しさん:2010/02/04(木) 11:31:09
蝿とかゴキブリが遮って誤動作するんですねわかります
875デフォルトの名無しさん:2010/02/04(木) 13:13:42
>>870
数字の位置は固定だろうから、
数字の判定は難しくないと思うよ.
画像のマッチングだけだし.

だけどその用途なら>>873の方がおすすめかも.
876デフォルトの名無しさん:2010/02/04(木) 13:29:23
いやエアコンの温度表示は現在の温度じゃなくて設定温度でしょ?
877デフォルトの名無しさん:2010/02/04(木) 15:50:33
エアコン20台って・・・ホテルの管理人か?
878デフォルトの名無しさん:2010/02/04(木) 18:17:35
ありがとうございます。OpenCVで画像取得はできたのですが、JPEGやPNGなどの画像ファイルに
書き出せません。どうやればいいでしょうか?

879デフォルトの名無しさん:2010/02/04(木) 18:25:45
できました。
cvSaveImage("XXX.jpg", IplImageポインタ)
とやると、拡張子をみて勝手にJPGで保存してくれるんですね。
880デフォルトの名無しさん:2010/02/04(木) 19:52:33
>>871
完全に固定、7セグの数字、周りの明るさもあまり変化しないなら
2値化した後数字の特定の領域の値読むだけで何とかなるかも
881デフォルトの名無しさん:2010/02/04(木) 19:54:00
とりあえずOCRでやってみます。
882デフォルトの名無しさん:2010/02/04(木) 20:42:27
普通のOCRだとエアコンなんかのデジタル数字の認識って出来なそうなんだが・・・
883デフォルトの名無しさん:2010/02/04(木) 22:20:32
>>852
ありがとう。

後一つ気になったんだけど、createsamples.exeの引数で背景を指定できるんだが、
この背景って精度上げるには指定すべき?
指定するなら背景ってどんな背景にしたらいいんだ?
実際に撮影する時の背景だけでいいのかな?
それともナイアガラの滝みたいに実際の撮影ではありえない背景とかも指定しといた方がいい?
884デフォルトの名無しさん:2010/02/04(木) 23:21:44
>>883
createsamplesの背景は透明色をきれいに設定しないと
人工的になってしまいそうだったので使ったことないけど
指定するなら検出対象の背景としてありえる範囲の画像でいいと思う。
自分の場合は2000枚くらいは自分で用意してそれを5倍に増やす作業に使ったので
背景はその2000枚の中である程度ばらけていて問題にならなかった。
885デフォルトの名無しさん:2010/02/05(金) 02:40:49
>>882
出来ませんでした。認識率がほぼゼロで、完全な白地に黒ではっきりと数字を書くと
ある程度認識できるみたいなので、OpenCVのcvThreshold()とかcvSmooth()とかで
いろいろフィルターを掛けてるのですが、エアコンの表示って、グレイの地に黒色で数字が
書いてありますよね。なので、全滅です。かりに出来たとしても、OCRを使うやり方だと、ちょっと光の反射具合が
変化しただけでもアウトになりそう。
こんなに難しいとは思わなかったス。別なアイデアを探します。

886デフォルトの名無しさん:2010/02/05(金) 10:15:52
>>884
ありがとうございます。
背景の色設定が難しそうだからやめときます。
それともう一つ質問です。
自分は手形状の分類器(チョキの形)を作ろうと思ってるんですけど
haartraining.exeで使用する不正解サンプルってどんな画像を中心に集めたらいいですか?
チョキの形をしている手が写ってなければ問題ないですかね?
グーの形とかパーの形としっかり区別したいんでそれらの画像も不正解に多めに入れといた方がいいのかな?
887デフォルトの名無しさん:2010/02/05(金) 10:17:11
>>885
>グレイの地に黒色
二値化すれば?
888デフォルトの名無しさん:2010/02/05(金) 20:44:20
ウインドウズ上でIEEE1394カメラをOpenCVで動かしたいんですけど、無理なんですかね?
889デフォルトの名無しさん:2010/02/06(土) 00:45:09
>>886
一番いいのは(あるなら)想定しているシーンで検出対象が写っている画像の
検出対象だけを近辺の色で塗りつぶした画像だけど正解画像を作るの同じくらいの
労力が必要になる。正解画像を作る過程で同時に作れると少し楽。

1枚の画像から複数の物体を検出する場合は
同時に写っている可能性があるなら他の背景よりも
信頼性のある不正解なので増やせばいいけど
もしジャンケンのようにどれかに決定したいなら
誤検出を気にするよりは数秒間投票を行って多数決で決めるなどのほうがいいと思う。

ただhaarlikeは形状の変化に弱いので
手を検出するならカメラからの視点をできるかぎり制限しないと難しいと思うよ。
890デフォルトの名無しさん:2010/02/06(土) 15:50:38
>>889
ありがとうございます。
こちらの実験環境はデスクトップパソコンにカメラを固定しそこから物体検出するというものです。
なので背景画像は常に一定、カメラの視点も常に一定で行います。
とゆう事は不正解サンプルは様々な種類(屋外画像や検出非対称オブジェクトが写っている画像等)
を数千枚集めるのではなく、実験を行う時の背景画像1枚から数千枚切り出した画像を不正解サンプルにすべきという事でしょうか?

このような質問をさせていただいてますが、自分はどちらかというと誤検出を減らすというよりも
正解オブジェクト(今回の場合ではチョキの形)の認識率を増やしたいのです。
とゆうのも自分が考えているじゃんけん認識プログラムのアルゴリズムは

背景差分を行う
ラベリングによりスパイクノイズの除去
物体オブジェクトのROIを指定しその領域のみ物体認識を行う

なので、物体認識を行う場合の背景の誤認識は考えていません。
正解オブジェクト(今回はチョキ)が表示された時は確実にそれを認識する分類器を作成したいです。
一度自分なりに分類器を作成しましたがあまり精度が良くありませんでした。
誤検出を下げるよりも認識率を上げる良い方法があればアドバイスお願いします。
891デフォルトの名無しさん:2010/02/06(土) 17:06:38
CvHistogram *hist; int max_idx; float max_value; など宣言し、
cvGetMinMaxHistValue(hist, &min_value, &max_value, &min_idx, &max_idx);
とし、printf("%d",max_idx);としたのですが、すべて0と表示されてしまいます。
ヒストグラムの最大値のインデックスを得る良い方法はないのでしょうか?

max_valueをprintfで表示しても5000〜100000の値が見れますし、サンプル通りヒストグラムを画像表示させてもきちんと表示されております。
892デフォルトの名無しさん:2010/02/07(日) 00:12:04
>>890
物体検出は"物体オブジェクトのROIを指定し"の部分を機械的にするものだから
そこの次の段階なら認識だと思うのでhaartrainingを使うのは用途が微妙な気はする。
ROIの領域が必ず手でグーチョキパーの多クラス分類がしたいだけなら
Suppert Vector Machine等でやったほうがいいのでは。
http://opencv.jp/sample/svm.html

今のまま精度を上げたいなら
ROIの領域を正解画像が十分入るように広めにとることと
実験環境で分類器に入力されるのと同じ手の画像(背景差分して背景を塗りつぶしている?)を正解にすることと
createsamplesは2〜10倍に増やす用途に使って
1000枚くらいは実際の映像から切り出した画像を使うことだと思う。
チョキは指の開きを変えた正解画像がたくさん必要そう。
入力前に背景差分やラベリング等で加工しているなら
加工後の画像を正解や不正解に設定しないといけない。
893デフォルトの名無しさん:2010/02/07(日) 14:30:59
>>892
ありがとうございます。
現段階ではグーチョキパーの3クラス分類ですが、
今後は手話における多クラス手形状認識を行う事を考えております。
SVMも参照させていただきましたが
SVMは多クラス分類においてはHaar-Like特徴による物体認識よりも精度が劣るとありましたので今回はHaar-Like特徴でやります。

精度向上に関してのアドバイスありがとうございます。
参考にさせていただき分類器の作成にとりかかります。
また、何かあればアドバイスの方おねがいいたします。
894デフォルトの名無しさん:2010/02/08(月) 02:02:35
>>891
min_idx,max_idxには配列を渡すみたいだよ.
ただ,マニュアルを見てもなにが設定されるのか分からなかったので,
ソースコードを見たほうがいいと思う.
895デフォルトの名無しさん:2010/02/13(土) 04:29:49
質問ですが、cvCalcOpticalFlowLKって勾配法のローカル法でしょうか?それともグローバル方でしょうか
896デフォルトの名無しさん:2010/02/13(土) 23:54:03
>>894
有難うございます。
配列へのポインタについてですが、int (*max_idx)[100] = {0};などとして、cvGetMinMaxHistValueの引数にどのように記述すればよいのでしょうか?
宣言等が間違っていたら申し訳ありません。
897デフォルトの名無しさん:2010/02/15(月) 00:35:42
動画処理について勉強中の素人プログラマです。

OpenCVでアルファチャンネル付きの動画を生成することは可能でしょうか?
またその場合気をつけることはありますか?
898デフォルトの名無しさん:2010/02/15(月) 00:42:27
OpenCV アルファチャンネル AVI などでググっているのですが
なかなか思っている情報がみつかりません。

cvCreateImage で4チャンネルのイメージ空間を作って
cvCreateVideoWriter でライタを作るときにアルファチャンネルに対応したFOURCCを選んで
cvWriteFrame で書き込み(アルファチャンネルなしのときと同じ)

って思っているのですが、そもそもこの考え方に間違いがありますか?
899デフォルトの名無しさん:2010/02/15(月) 09:24:19
haar-like特徴用いて機械学習を行っています。現在ポジティブ画像7000枚、ネガティブ画像3000枚使ってxmlファイルを作成しています。
もっとネガティブ画像を増やして学習を行いたいのですが、ネガ画像に使えそうな画像が大量にあるサイトなどはないでしょうか?
どなたか知っている方がいたら教えてください。
900デフォルトの名無しさん:2010/02/15(月) 14:03:06
>>899
ネガ画像はcvNotで作れると思いました。
901デフォルトの名無しさん:2010/02/16(火) 11:32:43
2chをクロールすれば
902デフォルトの名無しさん:2010/02/16(火) 14:55:36
google
903デフォルトの名無しさん:2010/02/16(火) 18:19:14
cvNotとはマスク画像を反転させる関数のことでしょうか?
できればネガ画像に即使えそうな画像ファイルが大量に置いてあるサイトについて教えていただきたいのですが…。
ちなみにポジ7000、ネガ3000で横顔を認識させているのですが、デフォルトで配られている正面顔認識用xmlファイルほど
赤丸がしっかり出せなくて困っています。
ちなみにminhitrateを0.999、maxfalsealarmを0.38で作成したので誤認識はほとんどありません。
赤丸を継続的に出すには画像枚数を増やせば良いのでは、と考えています。
904デフォルトの名無しさん:2010/02/16(火) 19:26:40
誤認識を多少許したら?
作りたい物にもよるが認識されないよりは良いと思う
905デフォルトの名無しさん:2010/02/16(火) 20:39:15
数秒間横顔を認識したらブラウザを起動させるようなアプリを作成しています。
認識はされるのですが赤丸が出たり消えたりの繰り返しでなかなか継続的に出てくれません。
なのでブラウザを起動させるのに多少時間がかかってしまいます。
もっと強いxmlファイルを作成できれば解決できると考えていますが…。
906デフォルトの名無しさん:2010/02/16(火) 21:15:25
継続的に出ないって事は途中で消えるのか?
907デフォルトの名無しさん:2010/02/16(火) 21:31:35
トラッキングすればいいだけでは
908デフォルトの名無しさん:2010/02/16(火) 21:34:54
Haar-likeって顔検出だと思うんだけど、本当に顔検出ではなく顔認識なのか?
909デフォルトの名無しさん:2010/02/16(火) 23:09:50
ネガを増やすことでは解決しないと思う。
横顔の定義を緩めたポジや撮影環境の悪いポジを増やしてロバストにしないと。
誤検出は増えても、検出位置を追跡していれば誤検出として処理することができる。
ちなみにデフォルトで配られている横顔検出用XMLはどうだったの?
haarcascade_profileface.xmlがそうだと思うけど。
910デフォルトの名無しさん:2010/02/17(水) 08:49:44
デフォルトで配られている正面顔検出のxmlではちゃんと継続的に赤丸が出ます。
「継続的に出ない」というのは赤丸が出たり消えたりして点滅するような感じになってしまうということです。
撮影環境の悪いポジを増やすというのは納得できました。
横顔の定義を緩めたポジとはどのような画像のことでしょうか?
911デフォルトの名無しさん:2010/02/17(水) 09:02:37
すいません間違えました。
デフォルトで配られているhaarcascade_profileface.xmlでは正面顔も検出されてしまい横顔のみを検出することはできないように思います。
912デフォルトの名無しさん:2010/02/17(水) 09:35:11
かなり力技だが横顔+正面から正面引けば横顔だけ残るんじゃね?
913デフォルトの名無しさん:2010/02/17(水) 21:56:32
>>910
赤丸が出たり消えたりするというのは
ビデオのフレームごとに横顔が検出されたりされなかったりしていて
つまり横顔の微妙な動きによって検出される横顔とされない横顔がある。
断続的に検出したいなら、今検出されていない横顔を検出しないといけない。

それで、微妙な動きで検出されなくなるのは、
ポジが統一され過ぎているせいではと思ったの。
断続的に検出したいフレームには
横顔だけど少し正面気味だとか下を向いてる顔があって
それを検出したいのにポジに入っていないのでは。

ただ今の状態で見逃しはあるものの大体検出できているなら
最初に横顔を検出してからN秒の間に横顔を検出したフレーム数のカウントを取って
それが閾値以上ならN秒間横顔を検出し続けたということにしてコマンドを実行したほうが
安定すると思うよ。
914デフォルトの名無しさん:2010/02/18(木) 09:12:54
bool CDetectFaceFromCamera::drawCircle()のfor文にN回入ったらブラウザを起動させるといった感じでやっています。
ポジ画像は一枚の横顔画像からcreatesamplesで7000枚にして使用しています。
やはり1枚の画像→createsamplesで増やす、ではポジが統一されすぎてしまうのでしょうか?
だとしたら断続的に検出するには今検出されていない横顔を検出しないといけないというのは非常に納得できます。
初期の頃は微妙に角度の違う複数枚の画像を原画像に使用し、検出対象の座標をリストに作成しhaartrainingを行ったこともありましたが
検出対象の座標をどのようにしたら正確に得ることができるのかわからず、現在の1枚の画像→createsamplesで増やすという手法に切り替えました。
複数枚の原画像を使った手法についてアドバイスをいただけないでしょうか?
915デフォルトの名無しさん:2010/02/18(木) 19:48:03
>>914
http://note.sonots.com/SciSoftware/haartraining.html#e5c54f60
http://lab.cntl.kyutech.ac.jp/~kobalab/nishida/opencv/haartraining_jp.htm
あたりを見たら分かると思うよ。
座標指定が不安なら検出したい範囲を切り取って個別の画像にして
ファイル名 0 0 画像の幅 画像の高さ
で作ればいい。
数枚の元画像とcreatesamplesを組み合わせる方法は>>835 >>852
916デフォルトの名無しさん:2010/02/18(木) 19:50:26
>ファイル名 0 0 画像の幅 画像の高さ
ファイル名 1 0 0 画像の幅 画像の高さ
917名無し募集中。。。:2010/02/19(金) 02:41:36
点滅的になるなら積分すれば良いんじゃないかと思うが
918デフォルトの名無しさん:2010/02/19(金) 08:53:44
アドバイスありがとうございます。
とりあえず微妙に角度や向きの異なった横顔画像をcreatesamplesで増やしmergevecでマージさせるという方法を試してみたいと思います。
919デフォルトの名無しさん:2010/02/19(金) 19:35:07
http://opencv.jp/sample/discrete_transforms.htmlのソースを使って
フーリエスペクトルの原点を通る水平方向の断面のグラフを作りたく、(7)のあとに
( unsigned char ) value = ( unsigned char ) image_Re -> imageData[ i + j * image_Re -> widthStep ];
(jは固定)をforでまわして値をとってグラフにしても、左右対称っぽいものになりません。

何が原因なのでしょうか。
920デフォルトの名無しさん:2010/02/19(金) 19:48:04
>>919
そんなことしなくても
係数だけ見ればいい
921デフォルトの名無しさん:2010/02/19(金) 20:46:42
>>920
係数とはどの係数でしょうか。
922デフォルトの名無しさん:2010/02/20(土) 00:47:21
2.0のvideowriterで無圧縮とmotionJPEGしかFourccを受け付けてくれない。
他のにするとFFMpegがエラーを吐く。
IndeoとかMSVCとか入ってないわけないんだが、どうしてだ??
923デフォルトの名無しさん:2010/02/20(土) 15:46:22
CvMatを生成するとき
CvMat *mat = cvCreateMat(2, 2, CV_64FC1);
のように行数と列数を指定する必要があると思うのですが、行数があらかじめ分からないときはどうすればよいでしょうか。
vectorのpush_backのような感じで行を動的に追加していくことは可能ですか?
924デフォルトの名無しさん:2010/02/20(土) 17:58:16
大きめにとる
925デフォルトの名無しさん:2010/02/20(土) 18:07:32
動的コンテナならstd::vectorを使えってことだろ
926デフォルトの名無しさん:2010/02/20(土) 18:18:18
いい方法かわからないけど一応解決したかも。

vector<float> data;

// dataにpush_back()でデータを詰め込む

int rows = data.size() / DIM; // DIMはデータの次元数なので割れば行数になる
int cols = DIM;
cout << rows << "x" << cols << endl;
CvMat samples;
cvInitMatHeader(&samples, rows, cols, CV_32FC1, &data[0]);
927デフォルトの名無しさん:2010/02/21(日) 18:41:49
http://d.hatena.ne.jp/blono/20100220/1266660713
どうしてもっと早く教えてくれなかったんだ
928デフォルトの名無しさん:2010/02/21(日) 19:14:40
>>927
こいつ自体は知ってたけどこれの文法が分からん
cv::Matでやるにはどうしたらいいんだ
929デフォルトの名無しさん:2010/02/21(日) 23:01:49
cvFindStereoCorrespondenceのことなんですが、多分、内部処理でマッチングに使う
それぞれのテンプレート画像を切り出してると思うのですが、このテンプレート画像の
サイズを変更ってできますか?

今、元画像を色抽出してcvFindStereoCorrespondenceをかけているのですが、テンプレート画像が
細かすぎて、うまくマッチングできないので、これをもっと粗くするほうほうを探しています。
930デフォルトの名無しさん:2010/02/22(月) 07:35:49
>>927
メモリ表示してデータ型合わせたら見れるだろ
931デフォルトの名無しさん:2010/02/22(月) 19:04:19
>>927
cv::Matでも使えたよ
932デフォルトの名無しさん:2010/02/22(月) 22:25:15
>>931
うん、今気づいた
だが
#array()の中身を
    expr : ((double*)$c.data)[$i],
    size : ($r==1)*$c.rows + ($r==0)*$c.cols,
    rank : 2
にすればもっと行列っぽくなる。
>>932
mjdk!って思ってやってみたら
表示される値が違う(´・ω・`)ショボーン
934932:2010/03/03(水) 15:41:51
現在の設定がこんな感じ。
ttp://codepad.org/fMfvWKEa
935デフォルトの名無しさん:2010/03/03(水) 19:54:02
>>934
対称行列じゃないとき?にズレるね
936デフォルトの名無しさん:2010/03/07(日) 23:42:39
( ´・ω・`)
937デフォルトの名無しさん:2010/03/08(月) 21:54:25
OpenCV2.0のcvLoadImageで16bitカラーのtiff画像読み込んだら、
勝手に8bitカラーに圧縮して読み込まれてしまうようなんですけど、これは仕様ですか?
オンラインマニュアル見ても特に記載されていないので・・・。
938デフォルトの名無しさん:2010/03/08(月) 23:06:41
ソースを秘匿したままでどうしろと?
939デフォルトの名無しさん:2010/03/08(月) 23:25:11
なぞなぞの答えは第2引数を書いてない。では?
CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR
940937:2010/03/09(火) 00:34:02
すいませんでした。
>>939 いえ、第2引数もそのように指定して、
IplImage* tmp = cvLoadImage("test.tif",CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
としても、tmp->depthがIPL_DEPTH_U8となっていて、実際にtmp->imageDataに格納されている
画素配列を確認しても8bitに変換されている状態でした。
サンプル画像はhttp://dl.maptools.org/dl/libtiff/の
pics-3.8.0.tar.gzのflower-rgb-contig-16.tifを使用しました。
941デフォルトの名無しさん:2010/03/09(火) 01:17:56
あ、ちがったか。失礼。
PNGだと読めるみたいだけどtifだとダメみたいですね
grfmt_tiff.cpp見ると8bitにしか対応してないような気もする
942デフォルトの名無しさん:2010/03/14(日) 22:14:36
サンプル画像数100でcreatesamples.exeを実行してるんですが、
3週間近く経っても実行完了しない。
サンプル画像の縦横比はそろえてるんだけどなぁ。
比だけでなく縦の長さ、横の長さ自体をそろえないとダメですかね?

それとももっと別の理由でしょうか。
943デフォルトの名無しさん:2010/03/15(月) 00:55:33
createsamplesって一瞬で終わるものだぞ。
サイズはテキストに書いて指定する。
944デフォルトの名無しさん:2010/03/15(月) 01:07:28
実際に3週間も待つとはずいぶんと気長な人だなあ
945デフォルトの名無しさん:2010/03/16(火) 01:47:05
OpenCVを勉強しようと思ってEssential OpenCVって本を買ったら1.0を使用してたんだけど、1.0をダウンロードして使ったほうがいいのかな?
それとも2.0で使ってても問題無いですか?
946138:2010/03/16(火) 02:08:10
とりあえず、1.1との違いが書いてあったので1.1で勉強してみることにしました。
947デフォルトの名無しさん:2010/03/16(火) 20:53:46
Cなら2.0でもあまり変わらない
948945:2010/03/17(水) 02:24:17
2.0を入れて本の通りにいくつかやってみましたが、特に問題は無さそうですね。
1.1と2.0は関数名とかも同じなのかな?
949デフォルトの名無しさん:2010/03/17(水) 10:47:38
ほぼ同じ。

変わったものもあるけど、コンパイルエラーが出てからググれば大丈夫。
950デフォルトの名無しさん:2010/03/17(水) 18:31:12
画像から任意の三角形を抜き出したいんだけど、マスクを使わずに
座標指定だけでやる方法ってある?
951デフォルトの名無しさん:2010/03/17(水) 20:12:07
三角形から外接の四角形を作りX,Yの点ごとに点が三角形の中にあるか否かを判断し中なら取り出すとか
をやるくらいならマスクのほうがいいな
952デフォルトの名無しさん:2010/03/17(水) 20:19:06
>>950
水平ラインごとに三角形内部の始点と終点座標を求めればOK。小学校の算数レベル。
953デフォルトの名無しさん:2010/03/17(水) 20:51:15
マスクを使わずにってのはマスク画像を自分で用意せずにっていう意味だと勝手に解釈
ならマスク画像を3点の座標からopenCVで描けばいいよね
954デフォルトの名無しさん:2010/03/17(水) 22:29:33
>>951に一票
955デフォルトの名無しさん:2010/03/18(木) 16:02:06
UbuntuでOpenCVやろうとしてるんですが、DVカメラ(所謂ハンディカム)からはキャプチャできないのでしょうか?
956デフォルトの名無しさん:2010/03/19(金) 18:04:48
>>950
どうせ取り出すときにマスク範囲と同じ領域が
必要だからマスクのほうが効率いいんじゃない?
957デフォルトの名無しさん:2010/03/19(金) 22:49:06
ctypes_opencvとopencv2.0に付属のpythonインターフェイスはどっちがお勧め?
openCVに付属してる奴は自分でCの関数書くとそれをpythonから簡単に読めなかった記憶あるんだけど
958デフォルトの名無しさん:2010/03/23(火) 21:35:45
OpenCVデフォルトのpython interface生成方法がすごい変すぎる
なんでctypes使わないの?
959デフォルトの名無しさん:2010/03/24(水) 04:21:22
OpenCVの癖のあるC++はVisual Studioでないと読めない
emacsでは無理なのか
960デフォルトの名無しさん:2010/04/02(金) 14:24:01
OpenCV2.0をVisualStudioで使おうとcmakeからビルドしたら
サンプルプログラムの実行をVisualStudioからできない
コンパイルしたのを直接動かすことはできる
VisualStudioでデバックしながら実行したいのに
961デフォルトの名無しさん:2010/04/03(土) 03:26:55
失礼します。
画像ファイルから動画を作りたいと思っているのですが、以下のプログラムを実行しても、最初の画像しか出てきません。
自分としては2枚目の画像が2秒後に出るように作ってみたつもりなのですが・・・。
また、コーデックで無圧縮AVIは使えるのでしょうか?//にしている部分を実行してみたところ、エラーになりました。
良かったら、どこが間違っているのか教えてください。
WindowsXPでOpenCV1.1preを使用しています。言語はC++/CLIです。
よろしくお願いします。

CvVideoWriter* rec;
CvSize sz;

sz = cvSize(640,480);
rec = cvCreateVideoWriter("D:\\Test.avi",CV_FOURCC('P','I','M','1'), 120, sz,1); // MPEG-1
// rec = cvCreateVideoWriter("D:\\Test.avi",CV_FOURCC('D','I','B',' '), 120, sz,1); // 無圧縮AVI?エラーになる

IplImage* img1 = cvLoadImage("D:\\tmp.bmp");
cvWriteFrame(rec,img1);
IplImage* img2 = cvLoadImage("D:\\tmp2.bmp");
cvWriteFrame(rec,img2);

cvReleaseImage(&img1);
cvReleaseImage(&img2);
962961:2010/04/03(土) 19:10:12
いちおー自己解決しました。
MPEG-1コーデックが壊れていたらしいです。
963デフォルトの名無しさん:2010/04/04(日) 19:09:27
>>955
1394以外だったらキャプチャボードが必要
964デフォルトの名無しさん:2010/04/08(木) 02:21:21
OpenCV始めて1日目です
IplImage* img = cvLoadImage("CMYK.TIF", CV_LOAD_IMAGE_ANYCOLOR);
↑でフォトショで作ったCMYKのTIFF画像を読み込んだのですがimg->colorModelを参照するとなぜかRGBになっています
勝手にRGB変換されてしまうのでしょうか?CV_LOAD_IMAGE_ANYCOLORをつけているのですが・・・
OpenCVでCMYKを正しく扱うにはどうすればいいですか?
965デフォルトの名無しさん:2010/04/08(木) 22:48:40
>>964
そのTIFF画像のRGBにCMYK時の色が付いてるんだろ
966デフォルトの名無しさん:2010/04/09(金) 02:13:11
それってRGBに変換されてるってことじゃね
967デフォルトの名無しさん:2010/04/09(金) 03:06:33
TIFF画像がCMYKで保存されているか調べる方が先だろ
968デフォルトの名無しさん:2010/04/09(金) 21:09:02
RGBで読まれるだろ
いやなら変換しろ
969デフォルトの名無しさん:2010/04/12(月) 14:05:10
ubuntu10.04はOepnCV2.0がパッケージで入るみたいだよ
970デフォルトの名無しさん:2010/04/12(月) 20:55:41
>>969 これだね。
Ubuntu -- lucid の libcv4 パッケージに関する詳細
ttp://packages.ubuntu.com/lucid/libcv4
971デフォルトの名無しさん:2010/04/13(火) 13:05:57
VisualStudio2010出たみたいだけど
OpenCVは対応したのかな
972デフォルトの名無しさん:2010/04/13(火) 23:53:36
OpenCV2.1には特に書いて無かったよな
まぁ2010でも問題無いだろう
973デフォルトの名無しさん:2010/04/14(水) 12:12:57
VS2010は何かdllたりなくてビルド失敗するらしいとブログに書いてあった
974デフォルトの名無しさん:2010/04/15(木) 09:01:28
そのブログがどこか分からんので何ともいえんが、
2010express単体だとopenmpライブラリ無くて使えないから
windowssdk7.1を待つしかないな
975デフォルトの名無しさん:2010/04/15(木) 11:26:14
cmakeのオプションでopenmpはずせるよ
976デフォルトの名無しさん:2010/04/15(木) 16:54:35
USBカメラからキャプチャするプログラムを試してます。
http://opencv.jp/sample/video_io.html
このサンプルプログラムをそのまま使っています。
ビルドもエラー無くでき、カメラは認識するんですが映像が映りません。

環境はVisial C++ 2008 OpneCV1.0 カメラはMicrosoft Life Cam VX-7000です。
設定などは全部できました。
977デフォルトの名無しさん:2010/04/17(土) 14:51:34
素直に2.0以降を使いましょう。

1.0だとDirectShow経由で画像取得してる例がいくつかあるね。
978デフォルトの名無しさん:2010/04/18(日) 21:38:18
cvFindContours で線形上のエッジを検出した後、そのエッジの始点〜終端までの
距離(ピクセル数ではない)を求めたいのですが、どのような方法が一般的でしょうか?

例えば斜めの線だと、2点間の距離はピクセル数ではない為、
線を書いてピクセル数を数える方法では対応できませんでした。
979デフォルトの名無しさん:2010/04/18(日) 23:10:09
ピクセル数じゃない距離って何?
980デフォルトの名無しさん:2010/04/18(日) 23:31:10
>>978

勉強不足ですみません。例えば X1=1 Y1=1 ピクセルを P1、X2=5 Y2=6 ピクセルを P2 とすると
2つの座標間を線を書くなどして現すと■のような軌跡で6ピクセルとなりますが、
これは X2-X1 か Y2-Y1 のどちらか大きい方の移動量を現すだけで、点間の距離ではありません。

P1とP2の距離を座標で計算すると SQRT((5-1)^2+(6-1)^2) で、距離は 6.403 になると思います。

■(←P1:1,1)
□■
□□■
□□□■
□□□■
□□□□■(←P2:5,6)
981デフォルトの名無しさん:2010/04/19(月) 01:00:35
>>980
直線しか検出しないの?

2値化されているなら、
while(1){
 ■(X,Y)の場所から上下左右の9ピクセルの中から
 上の座標以外で■のある場所を探して、その座標をX,Yに
 ■が無かったらbreak;
}
982デフォルトの名無しさん:2010/04/19(月) 03:04:24
>>980
ではどちらか大きい方を選べばいいんじゃ?
len = max ( abs(X2-X1), abs(Y2-Y1) ) + 1;
983デフォルトの名無しさん:2010/04/19(月) 03:12:35
上下左右への移動は1
斜め移動は√2で計算すればいいんじゃないの?
984デフォルトの名無しさん:2010/04/19(月) 12:02:19
>>980
その距離が欲しいなら、その距離を計算すればいいんじゃないの?
等高線の長さが欲しいなら、擬似的には>983でいいし。
>983で>980の状況なら、等高線の長さは4√2+1で約6.66になるね。
985980:2010/04/19(月) 21:10:34
皆さん

アドバイスありがとうございます。
983さんの方法が近似的に計算できそうなので、この方法で考えてみます。
986名無し募集中。。。
【Intel】OpenCV総合スレ 3画素目【画像処理】
http://pc12.2ch.net/test/read.cgi/tech/1271686856/l50