OpenCVとはインテルが開発・公開しているオープンソースのコンピュータビジョン向けのLinux/Windows向けC/C++ライブラリです。
実装分野は
・ユーザーインターフェイス
・物体分離
・セグメンテーションと認識
・顔認識システム
・ジェスチャー認識
・モーショントラッキング
・感情モーション
・モーション理解
・モーションからの構築(SFM)
・モバイルロボティクス
関連リンクなどは
>2-10くらい
2 :
デフォルトの名無しさん:2007/06/26(火) 13:00:57
3 :
デフォルトの名無しさん:2007/06/26(火) 14:06:01
OpenCV先生!
cvLoadImageは
IplImage* image = cvLoadImage("画像ファイル");
のように画像のファイル名を指定して読み込むのですが、
メモリ上にある画像データ(jpeg,bmpなどの画像データ)を読み込むにはどのようにすればよいのですか?
記念カキコ
>>3 cvCreateImageHeaderして、その後画像データをIplImage->ImageDataに
割り当てればいいと思う
そのままポインタに画像データのアドレスを代入するか、
cvSetDataで割り当てる
5 :
デフォルトの名無しさん:2007/06/26(火) 14:11:13
ITKの日本語解説がほしい
6 :
4:2007/06/26(火) 14:11:57
ちなみに、jpegの場合はしらねー
8 :
デフォルトの名無しさん:2007/06/26(火) 17:06:22
今ちょっとした類似画像検索をしようとしてるんですけど
このライブラリのテンプレート検出なるものを使えば出来るんでしょうか?
マッチさせたい物として
・完全一致
・リサイズ画像一致
・一部切り出し画像一致
・グレースケール後でも一致
・再圧縮によるノイズ付加でも一致
こういうものなんですが・・・
回転とかは含みませんし、ある程度精度が悪くても
何かしらの数字が出てくれるものが良いです。(全く違う画像が候補に出てしまうのは許容範囲内だが、逆に何も出ないのが困る)
>>8 やってみてから判断すれば?
テンプレートでできるかどうか。
>>8 使い方間違ってるYO!
このライブラリでやるのはあきらめた方が良い。
ちなみに、そこにノイズさえ無ければ出来る。
>>10 ノイズ(というか、情報の欠落)があっても、ある程度は一致するんじゃね
精度が悪くてもいいって言ってるんだから。
大幅に間違うことはないと思うが
一部切り出し画像一致ってテンプレは完全だが入力画像が一部ってこと?
それはどうなるか分からんが
それ以外なら回転も含めて出来る
>>8に出来るかは知らないがな
テンプレはノイズがあっても一致すんの?
ドットレベルで完全一致しなくてもいいのか
TV 画像で顔検出やってるんですが,思ったより検出しないんだけど,良い設定ありませんか?
本家にリンクしていないのはどういうことなんだってかんじだな
17 :
1:2007/06/27(水) 11:14:37
18 :
デフォルトの名無しさん:2007/06/27(水) 11:21:45
類似画像検索ならITKにあるよ
ITKとOpenCVだと、OpenCVの方が性能が良い。
まぁIntelだからな
資金力が違う。
>>13 リサイズした場合でも完全には一致しない(アルゴリズムが違う可能性があるので)
ドットレベルでは多少の誤差はあっても、近接ブロックとの相関演算で
マッチングしてるはずなので、画像全体ではそんなに誤差があるとは思えない
いろんなアルゴリズムをインプリメントしてあるITKの方が私は好きだけどね
>>17 いや、スレ立てしてくれただけで十分乙だ。
24 :
デフォルトの名無しさん:2007/06/27(水) 22:26:59
OpenCVのユーザーインターフェイスってトラッバーと画像標準ウィンドウしかないん??
ボタンとかスタティックテキストとかつかいたす(´・ω・`)ショボーン
おまけのGUIに何を期待してるんだ
ちょっと凝ったものを作ろうとするなら、
GUIとキャプチャ部分は別のライブラリを使うなり、自前で書くなりするのが普通だとおも。
自分はwxWidgetsと自前v4lコードで問題無くないけてるよん
28 :
デフォルトの名無しさん:2007/06/28(木) 01:35:28
動作テストをこれでやってから最終的にはDirectShowなり処理独自実装なりが普通でない?
一時間程度で作らなきゃならんサンプルにわざわざWinAPIとかで窓制御書いてやるのはめんどいし、他のライブラリもいれんといかんのはなぁ〜せめてスタティックテキストくらいあればよかった。
後、トラックバーを出してる窓は「SetMouseCallback」関数でマウスのコールバック関数設定していても使えないのは仕様ですか?
顔認識について調べてみたんだが、鼻の辺りの陰影を探してるぽ。
検出画像の中心が常に鼻になってるし、
布地の皺なんかが検出されやすいのも納得。
OpenCVの顔認識だったら、Haar-like特徴を使ってるんだから、鼻付近の陰影がどうこうという話ではないと思う。
目や口を含む全体的な特徴や陰影が、畳み込まれて学習されているはず。
検出画像の中心が鼻辺りになるのは、(当たり前だけど)そういう風に正規化された画像群を使って学習させたから。
顔認識じゃねぇ、顔検出だ
>>29 顔の中心は鼻なんだから検出の中心が鼻にならないとむしろおかしいだろ?
>>31 どっちでもおkぽ。現状は顔認識って言っちゃうのが一般的ぽ。
あくまで、ぽ。
>>32 いや、やってると顔の中心にきてないケースは結構ある。
つまり鼻が中心になっているせいでアゴや頭部がはみ出るような。
顔のでかさよりもバランスだな。
>>33 1.いや、顔検出が一般的。顔認識は誰の顔かだ。どこかじゃない。
2.それはただの誤検出だ。
心霊写真も検出される
人面××も
質問です。お答えいただければうれしいです。
IPLimageからヒストグラムを作るときに、カウントしない色を指定したいのですが
(例えば物体のみのヒストグラムをとるために、その物体がないところを一色でぬりつぶす)
どうすればその指定された1色を除くことができるのでしょうか
また他に画像全体じゃなく指定された領域のみ(四角形ではない)のヒストグラムをとる方法があれば
教えていただきたいです。
38 :
デフォルトの名無しさん:2007/07/03(火) 23:27:13
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【池の下に】奈良先端科学技術大学院大学 Part.14【極秘研究施設】 [大学学部・研究]
39 :
デフォルトの名無しさん:2007/07/03(火) 23:38:11
無修正を判別したいのでおまんこの検出方法を教えてください
2chに貼る
スレの反応を形態素解析に掛ける
抽出した単語に、予め用意しておいた用語が含まれていたら検出完了
2chなんか形態素解析かけて、まともな結果が出るとでも?
どんな辞書使うつもりだよ。
まじでレス返されてもw
認識系の研究を2年ほど追いかけてなかったんだけど、
やっぱりboosted cascadeが最高なのは変わらないの?
速度と認識率と対象物の関係で変わるよ。
色なら遺伝的アルゴリズムの方がよさげ。
46 :
デフォルトの名無しさん:2007/07/27(金) 10:15:10
輪郭抽出のcvFindContoursを使用して取得した輪郭データ(CvSeq)を解析したいんだが
CvSeqをどう扱えばいいんだろうか
ソース見て解析するしかない?
マニュアル見れば分かりますよ。
リファレンスマニュアルのCvSeqの項目以外だと、どこをみればいいのでしょうか?
cvSaveImageでjpegを保存するとき、品質を変更して保存したいんですけど
いい方法はありますか?
OpenCVを自分でビルドすればいけなかったかな?
画像をソケット通信でやりとりしてパソコン間で画像処理したいんだけどIplImageを送受信ってできる?
一応通信用のライブラリはあるからやり方を教えてほしいです
haartrainingをビルドしてhaartrainingd.exeを作ったまではいいけど、実行するとエラーがでる・・・
なんでだ?
Runtime Error!
Program: C:\〜\haartrainingd.exe
R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.
>>51 そりゃできるが、無圧縮の画像なんてネットワークでやり取りしたらとんでもない
帯域が必要になると思うぞ。動画じゃないなら別にいいけど。
IplImage->imageDataの内容をそんぐり送ればいいんじゃない?
ギガビットのLANを2本引いてうちは通信させてる。
もちろんローカルでマシン間はPear to pearでね。
普通に実用的な速度で動くよ。
55 :
デフォルトの名無しさん:2007/08/02(木) 04:06:19
>>53 IplImage->imageDataってどんな情報?
あとIplImage->width,height,depthとかは送らなくていい?
>>52 おれのメモ
I got Runtime error R6034 (Visual Studio 8).
On Visual Studio, right Click Solution > Properties > Configuration Properties > Change all Configurations to 'Release' from 'Debug'
Rebuild Solution. It worked.
57 :
52:2007/08/02(木) 08:51:16
>>56 Releaseビルドして、haartraining.exeが上書きされっからそれ使えばいいんだね。
サンクス!
>>48 CvSeqの項を読めば分かると思うけど、例えば何がやりたいの?
>>59 たぶん、こんな感じじゃない?
for(i=0; i<contour->total; i++)
point = CV_GET_SEQ_ELEM(CvPoint, contour, i);
もし、輪郭が複数あるなら、TreeNodeIterator使ってたどればいいよ。
>>60 感動した
ありがとうございます
試してみます
62 :
55:2007/08/07(火) 01:14:04
63 :
55:2007/08/08(水) 01:14:01
一歩進んでUSBカメラからキャプチャして送受信(ストリーミング)をさせてるんだが、
実行してしばらくするとメモリ使用量がどんどん増えていって最終的にはパソコンがフリーズしてしまった
解決策教えてください
メモリを増やせばいいよ
>>63 キャプチャした画像をcvCloneImageしてってのを繰り返してるだろ
ループの外で取得したIplImage*を使い回してcvCopyImageしとけばメモリ食わない
66 :
デフォルトの名無しさん:2007/08/09(木) 11:36:40
どなたか
cvFindHandRegion
または
cvCreateHandMask
を使用した方はいらっしゃいますか?
これらを使って手認識をしようかと考えているのですが、参考文献があまりに少なくて手も足も出なくて…。
参考にできるページ等あればお願いします。
cvauxの関数は、使わんほうがいいんじゃないかね。
ちゃんと動作する確信があるなら別だけど。
>>67 だわな
auxはソース読んで自己責任。
あとはYahoo!Groupsに入れば英語で情報追える。
69 :
デフォルトの名無しさん:2007/08/19(日) 10:24:32
超初心者な質問で申し訳ないのですが助けてください
複数台のUSBカメラを制御しようとして座礁しています
cvCaptureFromCAM();で1台目はキャプチャできるのですが、index
を変えても2台目がキャプチャできません
cvcamGetCamerasCount( );でカメラの数を確認したらあっていたので
認識自体はされていると思うのですが・・・
70 :
デフォルトの名無しさん:2007/08/20(月) 18:41:40
>>67,68
参考になりました。ありがとうございます。
auxの使用はあきらめて、他からアプローチをかけようと思います。
MFCも使ってるんだけどIplImage画像をピクチャコントロールに表示する方法ってある?
ある
73 :
71:2007/08/23(木) 20:50:33
どうやるか教えてくれ
Windowsのことはよく知らないけど、IplImage->imageDataって各ピクセルの値が並んでるだけだよ?
alignmentは調整されてるけど。
おまけにBGRだしな
OpenCVで64ビットWindows用のはありませんか?
64ビットにしたらDLLが使えなくなったので探してます。
sourceforgeのWinの OpenCV_1.0.exe に入ってるよ
opencvのサンプルコードのページ、Operaで見ると表示が場繰りマス
82 :
デフォルトの名無しさん:2007/09/08(土) 02:36:02
age
84 :
デフォルトの名無しさん:2007/09/19(水) 18:51:15
買うかどうか迷っている
リファレンス見れば大体解決するからなぁ
web上でも日本語の情報も増えてるし
これから画像処理始めたいって人向けじゃなかろうか
mycomってのが最大のネックだなw
ページ数多いんだけどほとんどリファレンスっぽいしなあ。
立ち読みして判断するか
あれ?今日発売日?
マイコミのサイトでは今日発売ってなってる。アマゾンでは、明日発売って書いてあるね。
質問者いらっしゃい
91 :
初心者です:2007/09/25(火) 02:27:22
cvFindStereoCorrespondenceって関数で距離画像だせますけど、
そのときの距離の値って、視差の値を直接正規化して画像化してるんですかね?
視差から奥行き距離を算出してるわけではないですよね??
カメラの基線長とか焦点距離とかわかんないし・・・
視差画像だからね。
★東芝、「セル」技術をパソコンに採用
・東芝は来春にも、ソニーなどと共同開発したMPU(超小型演算処理装置)、
「セル」の中核技術を採用したノートパソコンを発売する。映像処理に優れた
セルの技術をパソコン用半導体チップに転用した。ホームビデオで撮影した
フルハイビジョン映像をパソコン上で視聴しながら編集するといった処理が
可能になる。液晶テレビなど他のデジタル家電にも採用するほか、外販する方針。
東芝の新半導体チップ「スパーズエンジン」は、セル向けに開発した演算処理
中枢回路を4つ搭載する。現在製品化に向けた開発を進めており、大分県の
生産拠点で量産する計画。搭載するノートパソコンの価格などは今後詰める。
ソース/日本経済新聞社
http://it.nikkei.co.jp/pc/news/index.aspx?n=AS1D2007O%2020092007
OpenCV本使えねぇ!
元ネタのNAISTのサイトの方が100倍マシだぁ。
巻末のリファレンスがお守りになるくらいだ。
>>95 haartrainingとかは載っていました?
>>95 さては、amazonの書評書いた奴かww
99 :
96:2007/09/27(木) 01:46:28
>>98 どもです。
なら購入はなしかな。
リファレンスで十分だし。
まぁ、初心者には良いんじゃないの?
初心者が画像処理やるかはしらんが?
windowsへのインストールに1章なんていらんだろ。
水増しw
顔検出を試してみたくて色々いじってたんだけど、
ただ単純に1枚の画像について矩形特徴量を全部計算する関数が見つからない。
cvIntegralで矩形領域の画素総和値を計算することはできるんだけど、
どう計算するのかわからんし。
矩形特徴量てなに??
haarなんとかってやつ?
toolでhaartrainingというのがあるよ
cvhaartraining.cppにicvCreateIntHaarFeaturesってのがあるな
構造体(IplImageとか)をまるまるファイルに保存したいのですが、
どうやれば良いのでしょうか?
cvStartWriteStructを使うのでしょうか?
それともcvSaveを使うのでしょうか?
質問です。
8ビット1チャンネルの画像の場合、
1ピクセル(x,y)は
((uchar)( img->imageData + img->widthStep*y))[x];
で表現されるのでしょうか?
8ビット3チャンネルの画像の場合は、
1ピクセル(x,y)は、
((uchar)( img->imageData + img->widthStep*y))[x*3];B
((uchar)( img->imageData + img->widthStep*y))[x*3+1];G
((uchar)( img->imageData + img->widthStep*y))[x*3+2];R
で表現されてましたけれども。
>>108 考え方はあってるけどキャストが間違ってるだろw
>>107 まるまる保存というのが、完全な保存だったら(nSizeとかIDとか)自分でちまちまWriteするしかない。
内部で定義されているopencv-image(ROIとかは含まれる)でいいんだったら、
cvSaveなりcvWriteなりして保存すればいい。
112 :
デフォルトの名無しさん:2007/10/02(火) 01:28:07
cvHoughCirclesってどうやってるんですか?
エッジ部分があったら半径ごとに円周上を投票空間に投票してくんですかね?
その割にはずいぶん処理が速いような気がするんですが
すいません。
2値化した画像のモーメントについて教えてください。
このモーメントという奴は、
背景が黒で対象物が白の場合に正しい値を出すんですよね?
背景が白で対象物が黒の場合じゃないですよね?
cvMoments (2値化した画像, &moments, 1);
とやるんですが、どうも、とんちんかんな値を出してしまって困っています。
どなたか力をお貸しください。
ヒストグラムの各ビンの合計を求めたいのですが、
cvQueryHistValue_1D()をビンの個数分だけループさせて、
出てきた値を足せば良いでしょうか?
ヒストグラムの各ビンの合計って・・・全部のビンの値足したら画像の画素数なんじゃないの?
正規化する前なら。
ああ、そうか。
その通りですね。
ところで、
cvGetMinMaxHistValue(hist, &min_value, &max_value, 0, 0);
でmax_valueに代入されるヒストグラムの
最大値ってどういう意味なんでしょうか?
cvQueryHistValue_1D()で各ビンの高さがでますけれど、
その中の最も値が大きいものとは明らかに違うんですけれど。
いやぁ、すいません。
cvQueryHistValue_1D()で取得した値が、
スケーリングされたものだとすっかり忘れていました!
えへへ。
119 :
お願いします:2007/10/08(月) 20:34:45
>>119 IPL_DEPTH_64Fだからだろ。
そのまま255倍して8Uにすれば保存はできるが、直流だけになる可能性大。
手っ取り早いのはLogスケールで変換かな。
121 :
119:2007/10/08(月) 21:05:59
>>120 返信ありがとうございます!とても助かります!
習いたてで、知らない部分が多く、困っています;
ご迷惑になると思いますが、Logスケールで変換というのは、
cvLogを用いればいいのでしょうか?
>>121 cvLogで良いと思うならそれで良いし、
自分でスケーリングしたければ直接データを弄ればいい
123 :
119:2007/10/08(月) 21:30:24
>>121 重ね重ね、親切にお答えいただき、ありがとうございます!
たった今、サンプルページのcvScale後に
IplImage *img = cvCreateImage(cvGetSize(image_Re), IPL_DEPTH_8U, 1);
cvConvertScale(image_Re, img, 255, 0);
と、加えたところ、cvSaveImageでも画像保存が出来るようになりました。
今後はcvLogでも出来るよう、勉強していく予定です。
120、121さん、本当にありがとうございました!
124 :
119:2007/10/08(月) 21:33:52
121ではなく、122さんでした;
本当に申し訳ないありませんorz
IPL_DEPTH_8Uで読み込んだIplImageを浮動小数点の行列としてで数学処理して、
また8Uに戻して表示したいんだけど、変数型ってどうやって変えればいいんですか?
126 :
125:2007/10/22(月) 17:04:02
自己解決。
cvCopyじゃなくてcvScaleを使えば良さそうですね。
127 :
デフォルトの名無しさん:2007/10/28(日) 12:16:50
Windowsプログラムでの話です。
IplImage に読み込まれた画像を任意のウィンドウに、
任意の矩形で貼り付けるにはどうすればいいでしょうか?
ならWindowsプログラムのスレ行けよw
130 :
127:2007/11/02(金) 22:57:16
ありがとう!
・・・・・・
・・・・・・
・・・・・・
・・・・・・
上のようなキャリブレーション画像のドット中心座標を取得したいのですが
opencvで容易に取得できる関数はありませんか?
IplImage *img=0;
img = cvLoadImage("C:\a.jpg", -1);
でコンパイルはできるのですがimgに画像を読み込めません。
どこかの設定がおかしいのでしょうか?
はい。どこかの設定がおかしいです。
134 :
デフォルトの名無しさん:2007/11/05(月) 00:18:30
>>132 Cの基礎からやり直せ
C:\\a.jpg
>>135 おお、そんな単純なことを忘れてたとは。
指摘ありがとうございます。
これってタブレットからの入力は取れない?
それとバージョンアップはしてくれないんだろうか
???
上から撮影すれば・・・w
pythonと連動して使ってる人いる?
boost.pythonには行列(numpy)とのインターフェイスあるけど
PILの画像とのインターフェイスはないよね
OpenCVが独自でpythonインターフェイスもってたりする?
持っていません。
cvSplit使って色相画像表示したら上下逆さまになった
なんで?
仕様だから
まじ、そうなの?
とりあえず回しとけばOKかな…
145 :
cvop:2007/11/14(水) 07:46:05
プログラミング初心者ですが、
画像処理のプログラミングで、PGM画像中にある、
それぞれのオプティカルフローの角度[度]と大きさ[pixel]の
頻度の分布(縦軸:フローの頻度、横軸:フローの角度or大きさ)を
検出し、グラフにしたい(ヒストグラムみたいに)のですが、
どのようなプログラムを作れば良いのでしょうか?
分かる方がいらっしゃれば教えて頂けないでしょうか。
言語はC言語です。
>>145 それぞれのオプティカルフローの角度[度]と大きさ[pixel]の
頻度の分布(縦軸:フローの頻度、横軸:フローの角度or大きさ)を
検出し、グラフに(ヒストグラムみたいに)するようなプログラムを作れば良いです
>>145 ↓こっちの質問のほうが早く答えにたどり着けるぞ
人間初心者ですが、
「それぞれのオプティカルフローの角度[度]と大きさ[pixel]の
頻度の分布(縦軸:フローの頻度、横軸:フローの角度or大きさ)を
検出し、グラフに(ヒストグラムみたいに)するようなプログラムを作る」
そのためには、どこでどのように質問するのがよいでしょうか?
当方、人間初心者なので日本語を解する猿程度にもわかるよう具体的に回答願います
さ、初心者叩きの開始です。
初心者かどうかに関係なく質問の意味がわからないんだけど、
そういうプログラムを作ってよこせって事?
150 :
デフォルトの名無しさん:2007/11/14(水) 11:32:04
自分で考えたり調べたりしない初心者は、伸びないので
厳しいかと思いますがアドバイスはしません。
うむ、徹底的に叩くべき。
152 :
デフォルトの名無しさん:2007/11/14(水) 14:06:07
ちょ、みんなヒドス
とりあえず
>>145は自分で考えろ。
わかんなかったらググるか本買ってくるくらいしろ。
ubuntuのパッケージリストみてみたらopencvとpythonのインターフェースあった
?
本が発売されてからスレが加速し始めたな
そりゃ気のせいだ。
IntelMacなんですけど
130万画素の外付けwebカメラが320*240になってしまう。
ただ、同メーカーの30万画素のカメラは640*480で認識。
内蔵iSghitは640*480で認識
cvCaptureFromCAMの引数をいろいろ変えて
CV_CAP_QTとか試してるんだけど、同じ
Macで外部webカメラでVGA取り込みしてるかたいらっしゃいますか?
>>157 WindowsならDirectShowかvideoInput使えば制御できるんだが。
OS XでもQuickTimeで比較的楽に制御できるんじゃないの?
>158
そうですか。。
QTでのフレームのグラブって情報全然見あたらなくて
これって解像度どれぐらい以上のWEBカメラならちゃんと動作する?
意味がわからん。
キャプチャできるかどうかという意味での動作ならどれでも動くんじゃね?
そもそも普通のアプリケーションで動かんなら問題あるが。
OpenCVってなんでMatroxのMIL使った画像取り込みが標準装備なの?
付属のサンプルプログラムのletter_recog.cppのdata_filenameはこれから判定する入力画像の特徴量
でしょうか?だとしたらこの特徴量はどうやって作っているんでしょうか?
cvFindStereoCorrespondenceって大多数の素朴な要求に入出力が
一番近いという意味で便利だと思うけど、obsoleteでなかった?
Linux版とwindows版で画像が逆転するのは仕様ですか?????
>>166 IplImageのoriginを設定すればおk
169 :
デフォルトの名無しさん:2007/12/06(木) 08:01:18
windows、VS2005で2台のUSBカメラを用いて同時に画像のキャプチャを行おうとしてるんですが
cvCreateCameraCapture()で指定するインデックスはwindowsではどのような決まりになっているんでしょうか?
>>157 IntelMac + 130万画素UVC (ELECOM UCAM-DLM130HWH)ですが、
キャプチャ画像が1280*1024で固定になってしまいます。
> 130万画素の外付けwebカメラが320*240になってしまう。
ボクは逆に320*240にして取りこみしたいのですけどねぇ。
(縮小すると遅いので、取りこむ時に小さなものが欲しい)
cvGetCaptureProperty()もcvSetCaptureProperty()も動作していな
いようなんです。
誰か教えて!!
>171
ソース嫁。
173 :
デフォルトの名無しさん:2007/12/14(金) 13:42:50
CvCaptureFromAVIで動画ファイルをキャプチャしようとしてもいつもNULLになる。。。
NetBSDで動かしてるんだけど、何が問題なんだろ。。。
char* filename = "cat2.avi";
CvCapture* capture = cvCaptureFromAVI(filename);
if( capture == NULL ){
printf("err\n");
return -1;
}
たのんますーーー
ブヒャwww
175 :
デフォルトの名無しさん:2007/12/14(金) 22:15:53
OpenCVでウインドウ生成するときにタイトルバーって消せないの?
ウインドウの枠とか全部とっぱらった全画面表示したいんだけど、リファレンスにものってないし。
ライブラリを書き換えればOK
177 :
デフォルトの名無しさん:2007/12/15(土) 00:11:02
>>176 ごめん、ライブラリのどこでそれが書きかえれるのか分からないんだ…
さらにどう書き換えるかもわからん/(^O^)\
ウィンドウを生成する関数はわかってるんだから、そこから調べればいいだろ
179 :
デフォルトの名無しさん:2007/12/15(土) 14:41:04
>>178 createWindowの引数見てますが
defStyleを WS_VISIBLE | WS_MAXIMIZE にするだけじゃぁだめなんでしょうか?
最大化されないし、タイトルバーも出っ放し。
>>179 ウィンドウ作ってからタイトルバー外して最大化でもすれば
>>179 何もないウィンドウはWS_POPUP。これに必要なスタイルを追加する。
182 :
175:2007/12/15(土) 16:37:57
>>180 そのタイトルバーの外し方が分かんないです
>>181 WS_POPUPも試しましたが何故かウインドウスタイルが変わらず。
cvNamedWindowは親ウインドウと子ウインドウを生成しますが何か関係あるのでしょうか?
>>182 問題の切り分けは出来てる?
まずOpenCV抜きで、ウィンドウを表示するだけのプログラム書いてみたらどうかな。
少なくともこちらの環境では、WS_POPUPでタイトルバー無しのウィンドウは作れてるよ。
うまくいかない
→GetWindowLongでウィンドウスタイルの確認をしてみると良い。
うまくいく
→cvNamedWindowに導入する際の問題だけど、間違えそうなところは見当たらない。
ちなみに前者の話はスレ違いなので、こっちでは続けないほうが良い。
ライブラリに変更加えたのにビルドしてないとかだったら氏ね。
184 :
175:2007/12/15(土) 18:09:50
求めていた表示になりました、みなさん回答ありがとうございます。
>>183 debugモードでビルドしてましたので氏んできます
8UのiplImageを上下限2値化する場合
cvthresholdとcvInRangeSでどっちが速いだろう?
ってやってみればいいんだけどね
186 :
デフォルトの名無しさん:2007/12/16(日) 17:35:38
初歩的な質問失礼します。
ネット上で紹介されていた画像処理についてのサンプルプログラムをその通り実行してみたところ、
error: 'for' loop initial declaration used outside C99 mde
というエラーが出ました。
C99の意味がよく分かりません。
どなたかお分かりの方がいらっしゃればお教えください。
よろしくお願いいたします。
>>186 ネットで紹介されてたのならリンクはろうよ…
C99でググレ
C99が何か知らなくてもエラーの報告された該当行を見れば
構文エラーの理由はわかるでしょうに。
Cでfor(int i = 0; i < x; i++)
みたいに書いてあったんじゃね?
191 :
デフォルトの名無しさん:2007/12/18(火) 00:59:49
超初心者で申し訳ありません。
画像処理の勉強のためネットをみながら頑張ってOpenCVをインストール
しました。
例として2値化を行うソースをコピーしてVisualC++でコンパイルして、
自分が持っているサンプル画像を実行した所、しっかりと2値化された画像
を表示させることができました。
この画像を保存しようと思いソースの最後に
cvSaveImage("output.bmp", img);
cvReleaseImage(&img);
を記述しましたがうまくいきませんでした。
どうすれば処理した画像をパソコンに保存できるのかどなたか
教えてもらえないでしょうか?
「うまくいかない」
じゃあ何もわかりません。
状況をできるだけ詳しく教えてください。
imgがどんなフォーマットなのかによるんじゃない?
2値化なら8Uかな
194 :
デフォルトの名無しさん:2007/12/18(火) 14:53:32
例えば、10×10の行列(IplImage)があった時に、(3,4)成分から(7,6)成分までの矩形を
コピーして5×3の行列を作る関数って無いですか?
毎回CreateImageして、ピクセルに直接アクセスして代入してるんだけど重い。
あるから調べてみ
196 :
194:2007/12/18(火) 17:41:34
レスサンクス。あるのか。
あるとしたらCXCOREの配列操作だと思って探してみたんだけど見つからなかったんだよな。
もう一度見てみます。
さきゅばすのP905i用オプション書いてみた。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "
http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="EXT">MP4</entry>
<entry key="MAIN"></entry>
<entry key="IN"></entry>
<entry key="OUT">-flags bitexact -vol 30 -vcodec xvid -s 640x480 -r 14.985 -b 1500 -acodec aac -ac 2 -ar 24000 -ab 64 -f psp</entry>
</properties>
変換してファイル名変更してSDに突っ込めば横画面で
コメント付きニコ動が見れるぜ!!!
-vol の数字はボリュームなので適当に。100がデフォルト。
誤爆><
199 :
デフォルトの名無しさん:2007/12/18(火) 23:14:18
>>191 公開されているソースにその記述を加えたけどパソコンに保存されないってことかな?
VisualC++だと何か問題あったかも。カラー画像の場合はチャンネルの順番を
考慮したりと
200 :
悩める人:2007/12/19(水) 06:02:33
はじめまして!
初心者ながらOpenCVを用いて画像処理を
しなければならなくなりました。
画像処理を用いて読唇術を行うのですが、
何からはじめたらいいかわかりませんonz
処理の流れをおしえていただければうれしいです。
201 :
デフォルトの名無しさん:2007/12/19(水) 06:16:46
それって一般的な手法が確立された処理じゃないんじゃないか
202 :
悩める人:2007/12/19(水) 06:25:13
ですよね^^;
ネットなんかで調べてもあまり分からなくて
勉強不足です。
エッジ検出を使ったりするらしいのですが・・・
とりあえず論文くらいでてるだろうから調べるべし
204 :
悩める人:2007/12/19(水) 08:03:19
はい!
しょうもない質問してすみません
今日、初めて気づいたんだが、
もしかして、gif画像って扱えないの?
moe = cvLoadImage("hoge.gif", -1);
ってやっても、null返してくるんだけれど。
opencv-1.0.0$ ./configure --with-python LDFLAGS=-L/sw/lib CPPFLAGS=-I/sw/include
念のために↑ってコンパイルオプションつけて、みたんだけれど、
Image I/O ---------------------
Use libjpeg: yes
Use zlib: yes
Use libpng: yes
Use libtiff: yes
Use libjasper: no
Use libIlmImf: no
で、gifって文字が出てきてないんだけれど。
MacOS Xです。
もしかして特許のせい?
コンパイルオプション間違ったかなぁ?
>>205 コンパイルオプション弄る前にマニュアル読もうぜ
* Windows bitmaps - BMP, DIB;
* JPEG files - JPEG, JPG, JPE;
* Portable Network Graphics - PNG;
* Portable image format - PBM, PGM, PPM;
* Sun rasters - SR, RAS;
* TIFF files - TIFF, TIF;
* OpenEXR HDR images - EXR;
* JPEG 2000 images - jp2.
>>206 マジかぁ。
OpenCV使ってるwebアプリ公開してるんだが、
昨日初公開したとき、「gif使えないっすよ」って、
フィードバックが有ってしらべてたのねん。
有り難う。
Imagemagic使ってjpgに変換する事にします。
しかし、使えないのは特許のせいなのかしら?
>>207 少なくとも日本では特許切れてた気がするけどね
海外はわからない
210 :
デフォルトの名無しさん:2007/12/26(水) 16:42:05
OpenCVで画像処理をはじめたものです。
ネットに乗っていた画像処理のプログラムで
画像の取り込みのところでつまずいてます。
だれか下のプログラムの説明をお願いします。
if (argc < 2 || (src_img = cvLoadImage (argv[1], CV_LOAD_IMAGE_COLOR)) == 0)
return -1;
src_gray = cvCreateImage
(cvSize (src_img->width, src_img->height), IPL_DEPTH_8U, 1);
211 :
デフォルトの名無しさん:2007/12/26(水) 16:43:11
213 :
デフォルトの名無しさん:2007/12/26(水) 19:29:25
>>195 CvMatならあったけど、IplImageは無さそうだな。
IplImageからCvMatに簡単に変換できたらいいんだけど
ヒント: ROI
215 :
宣伝:2008/01/04(金) 00:29:37
>>212 ソースググっても何の意味も無いだろ。
google codeならともかく。
>>210 つまるところが見つからない。
NAISTが出してる本をお勧めする。
216 :
デフォルトの名無しさん:2008/01/04(金) 00:39:46
double d1= cvGetCaptureProperty( capture,CV_CAP_PROP_FRAME_WIDTH );
double d2= cvGetCaptureProperty( capture,CV_CAP_PROP_FRAME_HEIGHT );
ってやってもどっちも0ってでる市
cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH,640);
cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, 480);
結局こう書いても無意味なのはなんで?
>>216 未実装らしい。
サイズ変えたきゃvideoInput使うかDirectShowからフレーム強奪なら何とかなるらしい。
Ver1.0から進展ないよね。
219 :
デフォルトの名無しさん:2008/01/04(金) 21:26:01
そか。やってみるかー。おおきに。
220 :
デフォルトの名無しさん:2008/01/06(日) 03:38:37
OpenCVかIPLでYV12フォーマットをRGB24に変換する関数ありませんか?
手作りすると処理重いので探しています。
IPPは金かかるからNGで。
223 :
デフォルトの名無しさん:2008/01/08(火) 21:51:19
>>221 ありがとうございます。なさそですね。
>>222 ???
よくみるサイトです。
行列計算して早くするまではしたことありますけどMMXやSSEの命令まではわからないから手作りできないのです。
そこでM社が作ったIPP以外のライブラリを探してます
224 :
デフォルトの名無しさん:2008/01/09(水) 15:10:18
OpenCVで画像を切り取ったりするのには特別な関数が必要ですか?
2枚の白黒画像を重ね合わせて、黒色の画素がマッチした画素数を
マッチングスコアとして知りたいんだけど…
OpenCVでできるのかな?テンプレートマッチングとか使うのかな…
初歩的な質問ならごめん…
>>210 そこは自分もつまづいている所だ。
結局その部分は使用せずソースコードで直接画像を指定して読み込む方法で解決した。
おそらくmain (int argc, char **argv)とかで指定している箇所がポイントなんだろうと
思うが調べてもよくわからん。
お互い分かったことがあったらここに書き込もうぜ。
google://コマンドライン引数
229 :
225:2008/01/10(木) 13:46:23
230 :
デフォルトの名無しさん:2008/01/10(木) 18:21:37
opencv初心者なのですが
別端末のwebcamで撮った映像をネットワーク経由で受け取って
それをリアルタイムに処理する方法とかないでしょうか・・・
ググって見たんですけど見当たらなくて。
別に動画じゃなくても良いのですが
ネットワーク越しにファイルなりなんなりを読み込む方法を
ご存知の方いらっしゃいましたら教えていただけないでしょうか。
よろしくお願いいたします。
231 :
デフォルトの名無しさん:2008/01/10(木) 22:08:40
>>230 無理。別のライブラリを探してくるしかない
私はそれをやるのにDirectShOwフィルタを作ってもらった。たしか普通のWebカメラならHTTPをGetしてくる形でコーディングすればいいとおも。
232 :
デフォルトの名無しさん:2008/01/10(木) 22:12:50
>>227 どこが難しいのかよくわからない(´・ω・`)
詳しく!
ヒキスウつけて実行しないとプログラムが動かないって事ですか?
が、画像処理以前にCをおべんきょ・・・いやなんでもない
234 :
230:2008/01/10(木) 22:38:46
>>231 返信ありがとうございます。
別のライブラリって何がありますかね。。。
っというのは環境が環境なだけに(FC5+usb camera)
なかなか動いてくれるアプリ+カメラがなくて・・・
>>私はそれをやるのにDirectShOwフィルタを作ってもらった
linuxなんですけど、なんかいい案ないですかね(´・ω・`)
/dev/usbcam を垂れ流す cgi でも作れば、HTTP サーバが適切に chunked で
垂れ流してくれるんじゃないの?
>>210 >>227 引数に画像のファイル名がない or 画像読み込み失敗で return -1
読み込んだ画像をグレースケール変換
これでおk?
変換じゃなくて、読み込んだ画像と同じサイズの画像を作成だった
>>231ですが、
>>235さんの方法に同意。
別ライブラリとはいっても見つからないとおもわれる。
だからVideoForLinuxで自作する他ないのかもしれませんね
検討を祈る
OpenCVには、画像の任意率の拡大縮小とか
指定ピクセルだけ平行移動する関数ってありますか?
並進移動ってのはあったんだけどなんか違う気が・・・
239だけど・・・
両方アフィン行列変換でどうにかなるみたいですね…
お騒がせしました・・・
241 :
213:2008/01/11(金) 13:25:02
for文の中で処理を繰り返して、繰り返すたびに処理画像をbmp保存したり
バッファとしてキャプチャしておく方法ってある?
当たり前だけどcvShowImageとかcvSaveImageをfor文の中に入れたら上書きされちゃうんだ・・・
別のメモリにコピーしておいて
あとで保存すればいいんじゃ?
cvSaveImageのファイル名を変えないとfor文じゃなくても上書きされるな
なんか急にレベル下がったね。
どっかの学校で課題でも出されたのか?
レベルの高い話なんてしてたっけ?
247 :
デフォルトの名無しさん:2008/01/11(金) 21:21:04
学生がウラヤマ(´・ω・`)
OpenCVの使い方ではなくCについて聞くような
レベルまでは低くは無かったんじゃないかな
249 :
デフォルトの名無しさん:2008/01/12(土) 20:50:31
ここはプログラミング初心者スレじゃないよ
250 :
230:2008/01/14(月) 07:38:21
>>235 >>238 亀レスですがありがとうございました。
ですよねぇ、やっぱそうですよねぇ・・・
卒論で使いたかったのですが、
自作してる時間がなさそうなので方向転換します;
初心者でも高度なプログラムが書けるっつうのがOpenCVの理念だろ。
上級者ぶってるヤツも文句言わず教えろよクズどもw
OpenCVの前にCを勉強しろよ
初心者上級者以前にスレ違い
うむ
252が正論だな
Cの質問かOpenCVの質問かきりわけるのが礼儀だな。
CamShift, CamshiftTrackerの使い方がいまいちよくわからないのですが、いいサンプルコードとかないですか?
本買えばいいんじゃね?
質問です。
ライブラリの中の、get_関数が用意されていない変数の値をとってくるには、
どうし書いたらいいでしょうか。
具体的には、mlem.cppのなかのinv_eigen_valuesとcov_rotate_matsの値が欲しいのですが。。
デバッガ使えないの?
>>257様
>>256です。
少し調べたのですがデバッガの扱いがわかりません。。しかし、知りたい変数は行列なので、見れるか微妙な気がします。もうすこしだけ、ヒントいただけないでしょうか。
>>259様
256です。
それはそうなんですが、関数、というかアルゴリズムがかなり大変なので、ライブラリから取ってこれればそれに越したことはないのです。
実行時間もライブラリのほうが自分で書いたものより早いですし。
ヘッダに無かったら自分で作るしかないだろ
ライブラリのソースがあるんだからget_だけ実装すればいいんじゃね
263 :
デフォルトの名無しさん:2008/01/19(土) 11:36:40
画像の輝度を1ピクセルごとに取得して配列に格納できるような関数ってありますか?
例えば100×100サイズの画像なら、x[0][0]に座標0,0の輝度が入って、x[99][99]に座標100,100の輝度が入っていくようなものです。
>x[0][0]に座標0,0の輝度が入って、x[99][99]に座標100,100の輝度が入っていく
どうやっても無理じゃね、普通
>>263 img->imgDataから自分で2次元配列作れ
×imgData
○imageData
269 :
256:2008/01/19(土) 15:24:29
>>261,
>>262,
>>264様
その通りだと思います。。しかしその書き方がわからないのです。
mlem.cppとml.hの中身をちょこちょこ変えたのですが、(具体的には以下を書き加えたり)どうにもうまくいかないので、ヒントが欲しいのです。そもそもOpenCV以前にプログラミングの知識が心もとないのが問題ではあるんですが。。
const CvMat** CvEM::get_cov_rotate_mats() const
{
return (const CvMat**)cov_rotate_mats;
}
>>269 うまくいかないじゃわからないよ。
何を期待して、現状どうなのかを書かないと。
機械学習は使ったこと無い上にC++すら知らないけれど、
俺だったら、
CV_CALL( inv_eigen_values = cvCreateMat( nclusters,
params.cov_mat_type == COV_MAT_SPHERICAL ? 1 : dims, CV_64FC1 ));
って書いてあるから、
呼び出したい関数の直前に、
適当に変数を宣言して、その変数にcvCreateMat( nclusters,
params.cov_mat_type == COV_MAT_SPHERICAL ? 1 : dims, CV_64FC1 )
の戻り値を代入して、printfで中身見るか、gdbで中身見るというC使いの妄想を垂れ流してみる。
クラスについてよく分からないから、正しいのか分からないけれど。
272 :
271:2008/01/19(土) 21:19:32
せめて、何か反応してくれよ〜
こんな感じでうまくいくんじゃね?とか駄目とか。
カラー画像から色での2値化で切り抜いているのですが
色の境目のにじみできれいに切り抜けていません。
にじみをとれるようなフィルタってないでしょうか。
>>273 色での二値化の意味がわからん。
各チャネルに分解してcvThresholdかましてcvAnd、また結合すりゃおk
>>275 その方法でやってます。
jpegの写真を処理しているのですが、色の境目の
ところがグラデーションになっていて、それがノイズになって
誤検出してしまいます。
そいつを取り除きたいのですが・・・・・
ちなみにHSV色空間でやってます。
>>277 グラデーションをとって
ぼかしを除去したいので
平滑化とは逆のような気がするんだけど
>>278 二値化した時のノイズが何を指してるのかよくわからんけど
小領域でぶつぶつ小さく領域が切り分けられることじゃないの?
ぼかしをとるって、減色の処理を加えても二値化の結果はあまり変わらないと思うけど、何がしたいの?
単に陰影で物体の形状を奇麗に切り取れないって言うなら自分で高度なアルゴリズムを調べるしかないんじゃないの?
形状を滑らかに抽出するならSnakesが実装されてなかったっけ?
>>279 まとまりのない質問ですみません。
切り取った形状の淵がすごいギザギザになるので
何とかならないかと思って・・・・
減色してもあまり効果は見込めないですね
入力画像に問題があると思うのでそちらを
見直してみます。
>>281 なら平滑化してみなよ
やらないよりいくらかましだと思うけど
>>281 まるっきり画像処理に関する質問だな。
色認識の論文とか調べればいい方法あるんじゃないの?
正確性を気にせずギザギザがとりたいのなら
検出結果側にフィルタをかければいいと思うが。
>>282,
>>283,
>>284 スレ違いなのにすみません。
とりあえず全部実験してみます。
何だかjpeg形式にも問題があるような気が
するので、bmpとかでもやってみます。
thresholdにヒステリシス特性のあるフィルタをかます
287 :
デフォルトの名無しさん:2008/01/20(日) 23:41:26
265さんのツッコミが素敵です。
ただ、信号処理の観点から265のツッコミをみると101/100のリサンプルすればいいだけ。簡単にできるお
質問者のやりたいことはもっとレベル低いとはおもう
>>287 >100×100サイズの画像なら
という前提があるのでリサンプリングしてもやっぱり無理。
289 :
デフォルトの名無しさん:2008/01/21(月) 01:32:45
その通りですね。
よくよんでみて気がついた。
100×100の画像で0〜100の座標はないわ。
質問です。
cvLoadImageで読み込んだ画像をウィンドウに表示するとグレーの歪んだ画像が表示されます。
画像の拡大などをして保存しても歪んだ画像が保存されます。
原因がわからないので知ってる方がいたら教えてください。
Xcodeを使っています。
プログラムは思ったとおりには動かない
書いたとおりに動く
293 :
デフォルトの名無しさん:2008/01/23(水) 22:06:38
だな。
書いたコードもどう動かしたいかもわからないで答えられるわけがないな
でも、IPLImageの確保サイズや色の指定が違うんだろう。と、ゆとりにいってみる
294 :
290:2008/01/24(木) 05:54:41
ウィンドウズの方でコードを書いたら正常に動作しました。
>>291は良い言葉だが、この場合は「Macは糞」が正解だったようだな
てかwinあんならwin使えばいいじゃん
296 :
デフォルトの名無しさん:2008/01/24(木) 21:59:11
どちらにしろ
もっともシンプルなコード書いて実験だな
んでコード晒せ
バグがあるのかも知れんね
Macで使っているが、特に問題はない。
>>290 のコードが悪かったとしか思えない。
298 :
デフォルトの名無しさん:2008/01/24(木) 23:04:14
だろうな。LoadImageなんて根本的なとこでバグってたらOpenCVの機能の大半使えないもんな
299 :
デフォルトの名無しさん:2008/01/26(土) 21:16:02
単眼カメラでカメラで取得した座標から実空間の座標を
求めたいんですけど、みなさんどうやってもとめてますか?
あと、実空間と画像との誤差はどれくらいでるのか気になります。
OPENCVでやりたいなと思っています。よろしくお願いします。
>>299 キャリブレするか特定の平面からしか無理じゃね?
301 :
デフォルトの名無しさん:2008/01/27(日) 00:17:51
229
真上からのカメラ映像があれば後は基準となる物から座標補正してやればおk
なんか最近それ関連の仕事きたなぁ
OpenCVでニューラルネットワークを使おうと思ってるんですが
CvANN_MLP mlp;
float test_input[8] = { 0.0, 0.0,
0.0, 1.0,
1.0, 0.0,
1.0, 1.0 };
float test_output[4] = { 0, 0, 0, 1 };
CvMat test_input_mat = cvMat( 2, 4, CV_32FC1, test_input );
CvMat test_output_mat = cvMat( 1, 4, CV_32FC1, test_output );
int nc[3]={ 2, 2, 1 };
CvMat NSeting = cvMat( 1, 3, CV_32SC1, nc );
mlp.create( &NSeting, CvANN_MLP::SIGMOID_SYM, 1, 1 );
mlp.train( &test_input_mat, &test_output_mat, 0, 0,
CvANN_MLP_TrainParams(
cvTermCriteria( CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 1000, 1E-100 ),
CvANN_MLP_TrainParams::RPROP, 0.05 ), 0 );
こうすると
Bad argument( input training data should be a floating-point matrix withthe number of rows equal to the number of training samples and the number of columns equal to the size of 0-th (input) layer
と出ます。
入力とNNの入力層の数が違うといわれてるらしいのですが2と2で同じだと思うし原因が分かりません。
使ったことある方教えてください。
不完全な円(画像から一部がはみだしている)を検出したいのですが
cvHoughCircles では無理でしょうか。
よろしくお願いいたします。
もっとデカいIplImageの中心にROI設定してCopyしてからHoughやってみたら?
>>302 使ったことないけどググってみた感じ
CvMat test_input_mat = cvMat( 4, 2, CV_32FC1, test_input );
CvMat test_output_mat = cvMat( 4, 1, CV_32FC1, test_output );
っぽい気がする
306 :
デフォルトの名無しさん:2008/01/31(木) 08:37:54
>>299 ゲーム制作板の企画スレ見てみ
「企画」で検索な
308 :
デフォルトの名無しさん:2008/01/31(木) 21:44:41
OpenCV初心者なのですが、OpenCVをWindows form applicationで使えますか?
使おうとしているのですが、なかなかうまくいきません。
使えるのであればどのように設定すればよいか教えてください。
よろしくお願いします。
309 :
デフォルトの名無しさん:2008/01/31(木) 22:34:26
初心者という表現は使うな。関係ない
formApplicationで使える。というかVCでもVBでもライブラリが使えない言語はほとんどないぞ?
で、何の開発ツール使っているの?
310 :
デフォルトの名無しさん:2008/01/31(木) 23:29:22
DirectXでのレンダリング画像を1秒ごとにhoge.jpgに上書き保存していき、これを逐次OpenCVで画像処理したいのですがうまくいきません。
int main( int argc, char** argv ){
CvMat *map_matrix;
CvPoint2D32f src_pnt[4], dst_pnt[4];
// 画像ファイル読み込み
for(;;){
filename = argc == 2 ? argv[1] : (char*)"hoge.jpg";
if((src_img = cvLoadImage( filename, 1)) == 0 )
return -1;
dst_img = cvCloneImage (src_img);
/*
画像処理
*/
cvNamedWindow ("dst", 0);
cvResizeWindow("dst", 1270, 965);
cvShowImage ("dst", dst_img);
c = cvWaitKey (0);
if (c == '\x1b')
break;
}
cvDestroyWindow("dst");
}
上記はメインの中身なのですが、このままではキーボード入力をしないと画像が更新されません。
これをキーボード入力なしでおこないたいのですが、どのようにすればよろしいのでしょうか。
OpenCVの話じゃないな
312 :
デフォルトの名無しさん:2008/02/01(金) 00:02:15
>311
申し訳ございません。
OpenCVを用いているのでここに書き込ませていただいたのですが他をあたってみます。
cvWaitKeyしなければキーボード入力を待たずに処理するよ。
>>310 あっという間にメモリ食い潰しそうだなw
ループの前にIplImage確保しといてcvCopyImageにしとけ。
あとcvWaitKey(10)とかやっときゃキー入力待ちのウェイトが10msになって
入力が無い時は勝手に回るようになる
315 :
デフォルトの名無しさん:2008/02/01(金) 02:46:07
>>309 >>308です。
フリーで配布されているMaicrosoft visual c++ 2005 Express Editionです。
「追加の依存ファイル」にhighgui.hとか貼り付けて#includeすれば
formApplicationで使えると思ったのですが、うまくいっていない
というのが今現在の状態です。
え”・・・。
317 :
デフォルトの名無しさん:2008/02/01(金) 02:54:53
間違えました。
highgui.h→highgui.lib
まあ、エラーメッセージくらい書いてくれないと何にもわからないよ
319 :
デフォルトの名無しさん:2008/02/01(金) 03:30:51
わからないなら黙っててください。
・・・
321 :
デフォルトの名無しさん:2008/02/01(金) 04:50:26
ホスト名 www.megavideo.com
IPアドレス 209.222.148.141
Webサーバー Apache
OS Linux
ページ取得時間 0.5 秒
Registrant:
Megavideo Limited
Room 1204, 12/F
48-62 Hennessy Road
Wan Chai, Hong Kong
Hong Kong
Registrar: DOTREGISTRAR
Domain Name: MEGAVIDEO.COM
Created on: 13-NOV-00
Expires on: 13-NOV-14
Last Updated on: 17-OCT-07
Administrative, Technical Contact:
Limited, Megavideo
[email protected] Room 1204, 12/F
48-62 Hennessy Road
Wan Chai, Hong Kong
Hong Kong
+852.30173700
322 :
デフォルトの名無しさん:2008/02/01(金) 07:24:49
>>317 VCでのライブラリの扱い方がわかんないんだね。
ヘッダだけのインクルードでは外部参照エラーになるよ(あたりまえ)
OpenCVのフォルダのなかにある*.libファイルをソースが並んでるところにほおりこんでみな
その前にフォームアプリケーションもビルドできるかすら怪しい
OpenCV 以前だよ〜。VC のスレにでもいけよ〜。
325 :
デフォルトの名無しさん:2008/02/02(土) 02:23:42
>>318さん
原因と思われるエラーメッセージです
1>c:\program files\opencv\cxcore\include\cxtypes.h(212) : warning C4793: '__asm' : 関数 'int cvRound(double)' 用にネイティブ コードの生成が発生します
1> c:\program files\opencv\cxcore\include\cxtypes.h(205) : 'cvRound' の宣言を確認してください。
1>c:\program files\opencv\cv\include\cvcompat.h(784) : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
>>322さんの方法を試しましたが、うまくできませんでした
C4793でググってみるといいよ
大学の情報学科もピンキリなんだなぁ。
328 :
デフォルトの名無しさん:2008/02/02(土) 14:13:11
インクルードするヘッダはちゃんとパス通ってるのか?
どちらにせよOpenCVに限らず、ライブラリを使えるようになれるといいな
(この板はC初心者スレではないから)
どーしてもというならプロジェクト作ってやるけど
329 :
デフォルトの名無しさん:2008/02/02(土) 15:25:21
パスの設定はしました。
皆さんの話からOpenCVじゃなくて
VCの使い方が問題のようなので
もっといろいろ調べてみます
いろいろありがとうございました。
330 :
デフォルトの名無しさん:2008/02/02(土) 16:09:12
VC++は(フリーのやつに限らず)MS独自拡張Cモードでプロジェクトを作る。
これをOFFにしてANSI-CモードにするのがVC++の最初の一歩です。
OpenCVをC#で使えるようにしたラッパーありますか?
sherperCVって本家に完全対応してるの?
334 :
デフォルトの名無しさん:2008/02/06(水) 16:14:35
cvFindContoursを使って輪郭抽出をした後、各輪郭における
すべての座標を取得したいのですが、どうすればいいでしょうか?
>>60 さんの書き込みを見てもなかなかうまく解決できなくて
友達に聞いても誰も分からないのでお手上げ状態になってます。
336 :
デフォルトの名無しさん:2008/02/08(金) 09:23:47
自分めも
OpenCV097はプロジェクトがVC2003で作られ
OpenCV1.0はVC2005で作られている
OpenCVのソースコードデバッグするには中間ファイルを作り、cvd.libなど後ろに「d」がついている
スタティックリンクライブラリをリンクすればいい
なぜdがついてるの?
d=デバッグ用
デブ
336だけど、cvd.libはcvd.libとファイルサイズかわらず97kだったよ。
だからデブのdではないなw
そりゃー同じもの比べたら同じだろうが
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
343 :
デフォルトの名無しさん:2008/02/10(日) 12:37:48
いや誤記だが携帯からだと訂正めんどくさかったんだ。
後、低レベルな奴が多いからOpenCVのバグを取る奴もいないと思った
>>343 Yahoo Groups読んでると分かるが、バグ!とメールする奴は大抵使い方がおかしい
グレースケールにして表示すると上下逆さになるのは?
>>345 #include <cv.h>
#include <highgui.h>
void main()
{
IplImage *src = cvLoadImage("test.jpg",1);
IplImage *gray = cvCreateImage(cvGetSize(src),src->depth,1);
cvCvtColor(src,gray,CV_BGR2GRAY);
cvNamedWindow("src",1);
cvNamedWindow("gray",1);
cvShowImage("src",src);
cvShowImage("gray",gray);
cvWaitKey(0);
}
フツーに表示されるが。
縦のみ伸縮させたいのですが、
アフィン変換とかしないとダメですか
やりたいのは画像内の楕円を円にする事です。
よろしくお願いします。
cvResizeは?
>>348 即レスありがとうございます。
画像を見ながらトラックバーで調整したいのですが
可能でしょうか。
叶姉妹
351 :
デフォルトの名無しさん:2008/02/11(月) 22:13:31
余裕でcvResizeで可能です。はい次
>>349 トラックバーのサンプルはProgram Files\OpenCV\samples見れ
サンクス
出来マスター
入力画像のROIを変化させたらうまいこといきマスター
354 :
デフォルトの名無しさん:2008/02/15(金) 09:59:29
NULL pointer(NULL array pointer is passed)
in function cvGetMat,C:\User\VP\opencv\cxcore\src\cxarray.cpp(2780)
こんなエラーが出るのですが、これってどこを直せばいいでしょうか?
ガッ!
>>354 NULL配列ポインタを渡さないようにする。
357 :
デフォルトの名無しさん:2008/02/15(金) 14:38:55
誰かCvSubdiv2Dの使い方を教えてください。
ドロネー図を書いて、3角形にテクスチャを張りたいのですが、どうやって貼り付けたらいいかわかりません。
おねがいします!
>>357 ポリゴンのROIは無いからなぁ
注目するポリゴン内の点と連結する部分にマスクかけてcvCopy(src,dst,mask)かね
ポリゴンするならCGALあたりと組み合わせてみたらどうだい?
BIASだとopencvのbindingあってなおかつポリゴン使う枠組みあるみたいだけど
CGALよりメジャーじゃないみたいなのが不安なんだよね
fedora7で
gcc hoge.c -lopencv -lhighgui -lcxcore
てやってもcv.hがない、highgui.hがない、cxcore.hがないって起こられてしまうorz
インスコはfedora標準のパッケージマネージャで行いました。
なにか考えられる原因わかる方いらっしゃいますか。
解決法知ってたらお願いします
-Iオプション
haartrainingというプログラムを使って顔画像を学習し、ステージごとのパフォーマンスを比較したんですが、
最初の方だけ、ステージが増えるごとに検出率が増加してしまいました。
カスケードなので検出率は上がることはないはずなのですが・・・
libcv-devel
を入れる
>>362 >>364 ありがとうございます。
gcc hoge.c -I/usr/include/opencv/ -lcxcore -lhighgui -lcv
で無事コンパイルできました。
>>361です
JPG画像を表示させた後
cvWaitKey(5000)で5秒待ち、
cvDestroyWindowでウィンドウを閉じさせようとしたのですが
ウィンドウを閉じてくれません。こういうものなのでしょうか。
プログラムが終了するとウィンドウは閉じられます。
別の方法があるのでしょうか。
367 :
デフォルトの名無しさん:2008/03/01(土) 14:24:17
USBカメラでは、動画が表示できていますがDVカメラだと表示されません。
cvCreateCameraCapture()は、NULLではありません。
DVカメラは使えないのでしょうか。
368 :
デフォルトの名無しさん:2008/03/01(土) 17:42:20
3次元空間の点を2次元座標上に投影するために、
cvProjectPoints2を使いたいのですが、
リファレンスを読んでも詳しい使い方がわかりません。
どなたか教えてください。
370 :
デフォルトの名無しさん:2008/03/01(土) 18:50:59
>369
ありがとうございます。
教えてもらったページを見て、だいたいの引数の意味はわかりました。
しかし、object_pointsとimage_pointsに関しては少し?な感じです。
object_pointsには3次元の入力データをそのまま与えればいいのでしょうか?
また、image_pointsにはどういった値を与えればいいのでしょうか?
image_pointsはoutput arrayって書いてあるだろうが・・・
>>367 IEEE1394カメラとDVカメラは別物
WindowsでキャプチャできるカメラならvideoInput使うかDirectShowと組合せれば使える。
373 :
デフォルトの名無しさん:2008/03/02(日) 01:29:58
>IEEE1394カメラとDVカメラは別物
>WindowsでキャプチャできるカメラならvideoInput使うかDirectShowと組合せれば使える
Windows用のOpenCVで用意されたのキャプチャー関数では、IEEE1394経由のDVカメラは使えないと
いう解釈でよろしいのでしょうか?
DirectShowでキャプチャーしてOpenCV用のフォマットに変換して処理させる事に成功しました。
アドバイスどうもありがとうございました。
374 :
デフォルトの名無しさん:2008/03/02(日) 02:34:41
>371
image_pointsの点データの決定の仕方やデータの与え方がわからないのですが。
、ミ川川川彡 ,ィr彡'";;;;;;;;;;;;;;;
ミ 彡 ,.ィi彡',.=从i、;;;;;;;;;;;;
三 ギ そ 三 ,ィ/イ,r'" .i!li,il i、ミ',:;;;;
三. ャ れ 三 ,. -‐==- 、, /!li/'/ l'' l', ',ヾ,ヽ;
三 グ は 三 ,,__-=ニ三三ニヾヽl!/,_ ,_i 、,,.ィ'=-、_ヾヾ
三 で 三,. ‐ニ三=,==‐ ''' `‐゛j,ェツ''''ー=5r‐ォ、, ヽ
三. 言 ひ 三 .,,__/ . ,' ン′  ̄
三 っ ょ 三 / i l,
三. て っ 三 ノ ..::.:... ,_ i ! `´' J
三 る と 三 iェァメ`'7rェ、,ー' i }エ=、
三 の し 三 ノ "'  ̄ ! '';;;;;;;
三 か て 三. iヽ,_ン J l
三 !? 三 !し=、 ヽ i ,.
彡 ミ ! "'' `'′ ヽ、,,__,,..,_ィ,..r,',",
彡川川川ミ. l _, , | ` ー、≡=,ン _,,,
ヽ、 _,,,,,ィニ三"'" ,,.'ヘ rー‐ ''''''"
`, i'''ニ'" ,. -‐'" `/
ヽ ! i´ /
ノレ'ー'! / O
てのは置いておいて…
object_pointsは3次元データでOK
image_pointsはサイズが合ってれば値は適当(あるいは初期値)でOK
それを渡すと,image_pointsに投影後の2次元座標(貴方の欲しいもの)が書き込まれる
376 :
デフォルトの名無しさん:2008/03/02(日) 12:08:53
>375
わかりました。
とりあえずやってみようと思います。
こういう質問する人ってC言語のポインタ渡しの作法がわかってないのかな・・・
378 :
366:2008/03/03(月) 13:03:02
cvDestroyWindow
実行後
cvWaitKey(1);
でウィンドウが消えました。
とりあえず報告まで。。。
他にも画像処理ライブラリーはたくさんあるのに
なぜOpenCV?
君が画像処理ライブラリの機能比較ページとか作ってくれたら、みんな喜ぶ
USBカメラのキャプチャ実行中にUSBを引っこ抜いたら
どうなんの?
こわくて実験できません
PCが物故割れる
あるJPEGファイル(ネットワークカメラの映像の1コマ)を
OpenCVのcvLoadImage関数に読ませようとすると、
IPLイメージにデータが入らず、
cvShowImageで表示させると灰色の画像が表示されます。
これはJPEGファイルに問題あり?
それともcvLoadImageのバグでしょうか?
.NET FrameworkのSystem::Drawing::Bitmapを使って
JPEGファイルを読み込んだときは問題なく表示されましたが
処理時間の高速なOpenCVを極力使いたいと考えています。
その「あるJPEG」をアップしてみたら?
二値化して、物体検出やってるのですが
二値化画像が真っ黒(要素がすべて0)かどうか判定するには
cvCountNonZeroを使うのが正解でしょうか?
JpegCheckerで調べてみたところ
画像が破損しているということはありませんでした。
info_JPEGを使って調べてみたところ、
[ 画質 ] 93 %
[ サイズ ] 16082Byte
[ 画素数 ]( 320, 240 )
[サンプリング](2,1):(1,1):(1,1)
[インプラント ](なし)
[ サムネイル ]「○なし」
[ インタバル ](無効)
[ フォーマット ]基本DCT方式 / フォーマット「不明」
コメントは
「TOSHIBA NETWORK CAMERA IK-WB21」← 使用しているネットワークカメラ
Exif情報は、「なし」です。
cvLoadImageで読めて、cvShowImageで表示できたけど。
cvWaitKey?
確認していただいてどうもありがとうございます。
当方の環境では以下のような感じで読み込めないんですよ。
↓
http://www.uploda.org/uporg1298567.jpg.html (pass:9999)
cvLoadImage実行後に画像データが代入されている(はずの)
IPLイメージのimageDataをデバッグ時に見てみると「ヘヘヘヘヘ・・・」となっているので
cvLoadImageの段階で失敗しているようです。
当方の環境は Visual Studio .NET 2003で C++(コンソールアプリケーション)を使っています。
CPUはGenuine Intel(R) CPU T2500 @ 2.00GHz を使用しています。
読み込める方もいらっしゃるということは、環境によるのでしょうか・・・。
同じプログラムで別のjpgファイルを読めるならjpgに原因が、そうでないならプログラムに原因があんじゃね
cvLoadImageは読み込めないとNULLを返すような気がすんだけど、imageDataが見れるってことはNULLじゃないんだよね?
cvLoadImageから返される結果は、NULLではないです。
(width, height, nChannelsも値が入って参照できているので)
>>392 関係無いだろうけどファイルのアクセス権限は?
>>393 ファイルのアクセス権限ですが、
どのユーザ権限でも「読み取り」「読み取りと実行」は許可されています。
(現在、当方のPCでは Administrators, SYSTEM, Users, XXX(当方のログイン名。Administrator権限。)が存在しています。)
ソースコードはこれだけです。
IplImage* pimgJpeg = cvLoadImage("test.jpg"); ← 387でアップした問題のjpg
cvSaveImage("OpenCV.bmp", pimgJpeg);
cvNamedWindow("test", 1);
cvShowImage("test", pimgJpeg);
cvWaitKey(0);
cvReleaseImage(&pimgJpeg);
同プログラム、同画像でを他のパソコンでも試してみたのですが
同様の症状となりました。
jpg画像を変えて試したところ、正常に読み込める(imageDataに値が入る)ことができました。
#私見ですが、どうもjpgに原因がありそうと感じてきました。
別のJPGでできて、
問題のJPGだけが出来ないのならJPGが壊れてるのかもね
問題のJPGは何で作った?デジカメ?フォトショから出力?
そのJPGをフォトショやirfanとかで再保存して読み込んでみたら?
問題のJPGデータを読み込みたいのであって
その画像を表示させたいのではないってのなら
意味無いけど
どうでもいいけど、>387が全然拾えない。まぁ恐らく、jpegのフォーマットがどこか変なんだよ。
普通に表示できたよ (´・ω・`)
>>397 だから、指摘されているにも拘らずそんなに流れの速いアップローダを使うのは嫌がらせ?
一応報告
>>394のプログラムのコピペ+
>>400の画像で動いたよ
WinXP + .NET 2003
>>400 コメントの入り方がちょっとおかしい悪寒。
今手元に細かいフォーマットチェックのできるツールがないからよく判らんけど。
IrfanViewだとコメントが文字化けする。
403 :
デフォルトの名無しさん:2008/03/17(月) 18:22:01
Cygwin上でOpenCV1.0.0をインストールして随分と使っています。
前からアレ?と思ってはいたのですが、
highguiを使用しているプログラム(ウィンドウやcvWaitKey)では、
更にいくつかの条件を満たしていないとプログラムが強制終了してしまいます。
具体的に見つけたケースとしては、実行されなくても良いから
cvMinEnclosingCircleやcvCvtColorを書いておく必要があります。
インストールに失敗しているのか、
何か手順が足りないのか分かっていません。
このため、他から持ってきたプログラムを動かせないケースがあったりして
困っています。何か御存知の方、いらっしゃいますか?
どの関数で強制終了してますか?
>>403 てことは
if(0){
cvMinEnclosingCircle()
}
っていう風に書いておかないと落ちるってことか?
バッファ壊してるんじゃないの?
406 :
デフォルトの名無しさん:2008/03/18(火) 10:33:14
>>404 言葉足らずでした。条件を満たしていない場合には、プログラム自体が
起動直後に強制終了しているようです。最初のprint文も実行されませんので。
>>405 cvMinEnclosingCircle(NULL,NULL,NULL);というのを書いておけば大丈夫です。
実行されるとエラーになってしまうので実行はされていませんが。
バッファ壊しているというのはどんな状態を指しているのですか?
>実行されるとエラーになってしまうので実行はされていませんが。
禅問答ですか?
408 :
デフォルトの名無しさん:2008/03/19(水) 23:36:37
>>407 「実行されていませんが」は訂正します。
「実際には実行されていませんが」もしくは「実行されるようにしていませんが」です。
文章がおかしかったですorz
> 実際には実行されない
つまり
if(null) cvMinEnclosingCircle(NULL,NULL,NULL);
こういう事ですか?
そのままベタに書いたなら実行はされてますが
問題が再現する簡単なコードをくれ
>>408 「実行されていませんが」のような自分の解釈で状況説明しようとするから
問題が起きる。2chで質問する奴の9割はそいつ自身の状況把握が信用ならないの
だから、自分の解釈を入れることは極力避けなければならない。
ではどうするかというと、これこれこういう結果になった、こういうエラーが
出た、というのをコピペまたは手書きで写すことによって状況説明する。
つまり回答者の目を代行することに努める。回答者から見れば質問者の
解釈を経由するというのは情報に誤りが入る原因を増やすことでしかない。
よくある話。自分のバグでどこか領域を壊しているんだろ。
無関係のコードを書くと動くのは、そのコードによって壊す領域がずれて
たまたま動いているだけ。
413 :
403:2008/03/21(金) 13:17:19
短いコードを作って試しました。
[コンパイル]
g++ `pkg-config --cflags opencv` a.c `pkg-config --libs opencv` -o a.exe
414 :
403:2008/03/21(金) 13:18:19
[ケース1の動く例]
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
int main( int argc, char** argv ){
printf("OK\n");
while(cvWaitKey(1) != 'A');
cvCvtColor(NULL,NULL,CV_BGR2Lab);
cvMinEnclosingCircle(NULL,NULL,NULL);
return 0;
}
この場合にはOKが出力されています。
また、cvCvtColorやcvMinEnclosingCircleは1つ以上書いてあれば良い。
415 :
403:2008/03/21(金) 13:19:05
[ケース1の動かない例]
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
int main( int argc, char** argv ){
printf("OK\n");
while(cvWaitKey(1) != 'A');
return 0;
}
この場合には何も出力されずに、プログラムも終了してしまいます。
416 :
403:2008/03/21(金) 13:19:41
ケース2の動く例
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
void Dummy(){
cvCvtColor(NULL,NULL,CV_BGR2Lab);
cvMinEnclosingCircle(NULL,NULL,NULL);
}
int main(int argc,char** argv){
printf("OK\n");
while(1)cvWaitKey(1);
}
ケース1の動く例と同様の結果が得られます。
417 :
403:2008/03/21(金) 13:20:33
ケース2の動く例
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
void Dummy(){
}
int main(int argc,char** argv){
printf("OK\n");
while(1)cvWaitKey(1);
}
ケース1の動かない例と同様の結果が得られます。
--
長く見苦しいものになってしまい申し訳ありません。
自分のコードからは問題点を見つけられず、
環境の構築に問題があるのでは?と考えてしまっているのですが
何かご存知の方が居られましたら御教授ください。
WinXPSP2
cygwin OpenCV1.0
で
[ケース1の動く例]
[ケース1の動かない例]
ケース2の動く例
ケース2の動く例(ケース2の動かない例?)
全部コンパイルできたし、動いたよ
実行後
OK
出たまま応答しなくなるけど・・・
これじゃキー入力は受け付けないよ、当たり前だけど
419 :
403:2008/03/21(金) 20:03:27
>>418 ケース2の2つめは動かない例です。書き間違えましたorz
キー入力を受け付けないことはプログラム通りですので問題ありません。
私も環境は同様ですので、OKが出ないケースがあることに困惑しています。
環境の構築に不備があると考えるのが妥当とは思うのですが、
どこに不備があるのかさっぱり分からなくて…
試していただきありがとうございます。
printfの次にexit()とかfflushとか入れてみたら。つかデバッガ使えば。
421 :
418:2008/03/21(金) 20:40:28
>>403へ
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
int main(int argc,char** argv){
printf("OK\n");
while(1)cvWaitKey(1);
}
void Dummy(){
cvCvtColor(NULL,NULL,CV_BGR2Lab);
cvMinEnclosingCircle(NULL,NULL,NULL);
}
ケース2の動く例のmainとdummyを前後入れ替えただけ
これが動かなければ今までの経緯から
コード領域を壊してる恐れが高いと思われ
cywinの再インスコとOpenCVの再インスコを進める
それでも無理だったらOS再インスコもな
つかOpenCVはどうやってインスコしたんだ?
422 :
デフォルトの名無しさん:2008/03/21(金) 23:16:49
俺の記憶では(ver0.97)
cvWaitKey(1);
はバグがあった
括弧のなか0にしてもだめか?
423 :
403:2008/03/22(土) 00:32:49
>>418 入れ替えても動くことに変わりありませんでした。
また、入れ替えた場合にDummyの中身を消すと、同様に動かなくなりました。
しかし、やはり動作環境に問題がありそうですね。
>>420 実はデバッガの使い方がわからなくて。
再インストールの前に勉強して使って調べてみます。
>>420 OpenCVは1.0.0を入れています。括弧の中は0にしても変わりありませんでした。
OpenCVスレの皆様、あやふや文面の質問に対して、
親身なアドバイスをしていただきありがとうございます!!!
変わった事やろうとしてる癖にスキル低いな
cvAgvをつかってモノクロ画像の輝度平均値を求めたいのですが
cvAgvのマニュアルを読むとスカラー値に出力されるとなっています。
このスカラー値の扱いかたがよく分かりません。
スカラー値から欲しい平均値を取り出すにはどうしたら良いのでしょうか。
CvScalarのマニュアル読んでくれ
>>426 読んだけど分がらねえ
CvScalarを参照して代入している例文だけでも教えて頂けないでしょうか。
もしくはどのへんから出直したら良いか教えて下さい。
Cの文法からやりなおせ
>>429 .val[0]でとれました。
お騒がせしてすみません。
文法から出直しまふm(_ _)m
431 :
デフォルトの名無しさん:2008/03/25(火) 11:33:23
日本語マニュアルのcvCreateCameraCaptureで
---------------
関数 cvCreateCameraCapture は, カメラからビデオストリームを読み込むために,CvCapture 構造体を確保して初期化する.
Windows では,次の二つのカメラインタフェースが利用できる:Video for Windows(VFW),Matrox Imaging Library(MIL).
Linux では,次の二つカメラインタフェースが利用できる:Video for Linux(V4L),FireWire(IEEE1394).
---------------
とあります。
IEEE1394接続のカメラ(DVカメラではない)を使うにはDirectShowを経由すれば
よいようなのですが、具体的にはどのようにすればよいのでしょうか。
DirectShowで画像を取得して、
OpenCV用の画像フォーマットに変換
directshow samplegrabberでぐぐれ
>>431 IEEE1394カメラとDVカメラは別物
435 :
sage:2008/03/26(水) 20:22:14
2値画像でラベリングした結果、例えば、5円玉みたいな画像が取得できた場合、
その穴埋め処理を行うような関数ってない?
ラベリングはBlob extraction libraryを使用したけど、
ラベル毎に判定して埋めていくしかないのかな
それか自力で判定して埋めるか。
あと、他にBlob extraction libraryよりおすすめのラベリングライブラリあったら
教えてほしいっす
穴のサイズによる
437 :
435:2008/03/27(木) 10:44:59
膨張収縮では消えないくらい大きな穴です
スレ違いだったらすみません。
OpenCVで作ったWindow上のマウスポインタが
いきなりテキスト用のやつになったまま戻りません。
マウスイベントは使ってますが、
何をやらかしたのでしょうか。
はい
440 :
デフォルトの名無しさん:2008/03/30(日) 13:39:37
オライリーからOpenCVの書籍が出るっぽいね!
Amazonによると 発売日は 2008/06 ってなってるね
アルゴリズムとかチュートリアルとかって書いてある。
OpenCV作者による解説らしいな
洋書だが買ってみるか
445 :
デフォルトの名無しさん:2008/04/03(木) 14:13:12
MacでOpenCVやってる人いる?
cvCaptureFromFileでファイル読み込んで再生するんだけど、
終了条件つけても動画がループしちゃうんだよね。
やっぱQuickTimeが原因かな・・・
誰かわかる?
終了条件はこんなかんじ↓
if(NULL == (input = cvQueryFrame(capture))){
return -1;
}
作者に御礼したいし買うか
>>445 cvGrabFrame
cvRetrieveFrame
でやってみるとどう? 原因絞れるかもよ。
SummerOfCode でこんなのあるんだ
opencvは画像処理の標準になりつつあるのかなあ
boost.gilもいいと思うんだけど
boost.gilとは機能の差が違いすぎるだろ
boost.gilは他のboostの機能との連携がしやくなってるから
違う意味での機能は充実してるだけどね
ファイル入出力とか多次元配列とかlambdaとか
453 :
デフォルトの名無しさん:2008/04/12(土) 19:46:03
OSX でやってる人いる?
画像処理ライブラリが画像処理できないと意味ないだろ
フーリエ記述子のサンプルプログラムないん?
456 :
デフォルトの名無しさん:2008/04/19(土) 16:18:20
みなさんOpenCVの開発環境はどんな感じでやられていますか?
当方Fedora8+IEEE1394で開発行っているんですがIEEE1394から
firewireに名前が変更されてからカーネルの再構築を行わないと
カメラが使えない状態が続いています。
どの辺りを設定変更すれば普通に使えるようになるのか知っている方
がおられればお教授お願いします。
>>456 OSをWindowsにすると簡単だよ。
458 :
デフォルトの名無しさん:2008/04/19(土) 23:19:37
>>457 WindowsだとQtフリーで使えないし色々と不便なのです。またXPでは使えますが
Vistaでエクスプレス変換カードを使用すると画像取り込めないんです。
459 :
デフォルトの名無しさん:2008/04/20(日) 12:21:45
英語版でさえ6月?とかだからなぁ
原書買おうぜ!
opencv+マルチスレッドなコードを作っているんですが、
それぞれのスレッドでウィンドウを作成し、
cvwaitkeyやると
Xlib: unexpected async reply
って出てきて画像の更新がうまく出来ません。
解決するにはどうすれば良いでしょうか。
またOpenCV+マルチスレッドのサンプルコード、
記載されているページまたは書籍などご存知の方いましたら教えてもらえませんか。
ちゃんと、
XInitThreads();
g_thread_init(NULL);
してないんじゃね?
あんまOpenCVとは関係ないと思うが…
>>464 両方とも実行していませんでした。。。
XInitThreads();
g_thread_init(NULL);
を最初に実行することで
今のところエラーメッセージも出ず動いています。
ありがとうございました。
アラウンドビューモニタ見たいな事ってOpenCVだけで実現できるんでしょうか?
OpenCVに直接的な関数はないけど、
要するに画像の幾何的な変換と張り合わせなんだから、
がんばればできるんじゃね?
アラウンドビューモニタは高解像度画像の非線形変換だから、
CPUによるソフトウェア処理だけでリアルタイムの速度を出すのは難しいかもね。
GPUでテクスチャとして扱えば余裕で行けそうだけど。
解像度はあんまり本質的な問題ではないし、
非線形変換っつっても動的なものではないので、
適当な解像度に落としてLUT作っちゃえば終わりじゃね?
パターンマッチングするときに、ドーナツみたいな二重円の範囲で認識できますか?
テンプレートマッチングするときに、探索範囲を矩形以外の形に指定できるか、
という質問だとしたら、それは当然無理。再帰演算しにくいから効率悪いしね。
んで、そういうことがやりたいんだったら、
二重円を包含する矩形内でマッチングとって、その相関値のマップに(その形状の)フィルタかけて最大値をだす、
とかすればいいんじゃね?
・・・もしかして、テンプレート自体をドーナツ形状にする、とかいう話だったり?
いまいち良く分からん。
カメラではなくてキャプチャボードから直接画像を取り込もうとしています。
キャプチャボードはカメラと違って、どのチャネルから取ってくるかの選択がいると思うのですが、
(私の場合はビデオ入力から取得したいと考えています)この辺りの指定をOpenCVから
行うことはできるのでしょうか?
的外れな質問かもしれませんがよろしくお願いいたします。
>>472 関数にはそれっぽいのは無いなぁ。でも
せっかくフリーなのでインストールしてサンプルコンパイルしてレポートしてください。
カメラ番号でダメなのかな。
デフォルト引数ついているだけで指定していると思うけど。
LinuxならL4Vのインターフェースがあるからできそう。
highgui/cvcap_v4l.cppにコメントある。
Windowsはよく知らないけど、最悪DirectShowでブリッジしないといけないかも。
475 :
472:2008/05/06(火) 04:57:56
>>473,474
レスありがとうございます。
Windows環境だったのですが、結局OpenCVだけで指定することは無理だと踏み、DirectShowでチャネルを選択後、
OpenCVを噛ませることで解決しました。
カメラ番号はキャプチャデバイス(ウェブカメラやキャプチャボード)が複数存在する場合に
それらの機器を選択する番号のようで、今回の場合には使えませんでした。
"共通言語ランタイム サポート(/clr)"による処理時間への影響が起こるのはなぜでしょうか。
画像の雑音除去にラべリング処理を行っていたのですが、
cvGetReal2DやcvSet2D関数による画像の配列へのアクセスの処理時間が
かなり掛かっていたようでした。
その時、この処理時間の問題とは別の理由があって
VisualStudio2005の
プロジェクトのプロパティ→構成プロパティ→全般→共通言語ランタイム サポートを
"共通言語ランタイム サポートを使用しない" から、
"共通言語ランタイム サポート(/clr)"に
変更した所、処理時間も速くなってしまいました。
偶然解決してしまったのですが疑問が残ったので質問させていただきます。
>>477 CLRのほうが遅いってのが常識だと思うけど、
変更したときに最適化オプションも変えていない?
cvSet2Dのような短い関数だと、関数がインライン展開される速くなると思うけど。
この話題を深く追求したいなら.NET系のスレに行ったほうがいいと思うよ。
479 :
477:2008/05/08(木) 12:00:23
>>478 説明に重要なミスがありましたw
"共通言語ランタイム サポートを使用しない" から、
"共通言語ランタイム サポート(/clr)"に変更
ではなく
"共通言語ランタイム サポート(/clr)"から、
"共通言語ランタイム サポートを使用しない"
でしたw逆ですwwサーセンwwww
>>cvSet2Dのような短い関数だと、関数がインライン展開される速くなると思うけど
まさにその通りでリファレンス読んで処理の速い配列アクセス方法に変更して
処理速度を上げていました。
今回の"共通言語ランタイム サポートを使用しない"に変更することによってさらに
速度が上がったので何でだろ?って思った次第です。
>>CLRのほうが遅いってのが常識だと思うけど
実はこの辺りからわからなくなってくるんですよねw
.NET勉強しますwww
480 :
デフォルトの名無しさん:2008/05/16(金) 20:13:34
4コアの2CPU環境だと、cvSmoothでガウシアンフィルタ(CV_GAUSSIAN)かけたときの挙動がおかしいんだけど、既出?
計算はされるけど、処理が異常に重くて、CPU使用率100%になる感じ
最初は俺のマシンのせいかと思ったんだけど、同じスペックの別マシンでも再現性アリだったんで、OpenCV側の問題なのかなと
環境:
・Xeon 5365 ×2 (2CPU)
・4GBメモリ
・Windows XP SP2 32Bit
・OpenCV 1.0
・VS 2005 pro SP1
482 :
デフォルトの名無しさん:2008/05/20(火) 23:00:53
背景差分を行ったあと、cvMatchShapesを使って画像のマッチングを行いと思ってます。
しかし、背景差分を行ったあとの画像は2値画像なんですが、
cvMatchShapesではグレースケールもしくは輪郭しか比較できません。
2値画像をグレースケールに変換(グレースケールの形式で表示?)する方法、
もしくは2値画像でマッチングを行う方法ありませんか??
自前でグレースケールに変換すればOK
cvCvtColor
もう画像処理の標準はOpenCvできまりなのか
少し前まではImageMagicだったが
機能がぜんぜん違う。
OpenCVは最先端の学術研究の成果が常に入ってくる。
>>486 本家のサイトみてみると
だいぶ長いこと更新されてないのだけど
本当に最新の結果が入ってるの?
shift operatorとかもあるの?
cvs先端みとけばいいのか?
最新は言いすぎ
更新はcvsに入ってるよ
SIFTは特許があるからダメかもしれないけど
追加機能の候補には挙がっていたよ
最先端は無理でしょ。
でもただのウェブ屋さんとかにとっては、すんげー、ってのが入ってる
WEB屋さん的にはGIFの読み込みに対応していれば言うこと無いのだが
CVSには入っているのだろうか?
OpenCVでTIFFからJPEGに変換できますか?
493 :
492:2008/05/27(火) 11:15:43
やってみました。
読めるTIFFもあるけど読めないTIFFがほとんどですね。
>>493 TIFFは(タグ型ヘッダのお蔭もあって)方言がたくさんある。
取り敢えず、IIヘッダは読めるだろうからエンディアンの違うMMヘッダが読めるかどうかだな。
後は、圧縮方法の違いとマルチページ対応の違い辺り。
業界標準としてTIFFが使われているケースなんかだと、独自拡張されていたりするかもしれない。
GDI+のほうが読めるTIFFは多いよ。
OpenCVは無圧縮8bit以外は全滅だった気がする。
496 :
デフォルトの名無しさん:2008/06/02(月) 14:14:00
自作の関数をOpenCVに追加したいのですが,どうしたらいいのでしょうか.
開発者になってください
yahooのOpenCV グループに入って提案してくる
499 :
デフォルトの名無しさん:2008/06/02(月) 22:24:11
私用の範囲で、自分で作成した関数を使いたいということだったのですが、
ヘッダーなどをいじれば追加可能なのでしょうか?
なんていうか,OpenCVの質問でもない気がする
自分でライブラリ作ればいいじゃん
OpenCVの中に自作関数入れたいなんてやるじゃん!
502 :
デフォルトの名無しさん:2008/06/02(月) 23:07:11
>>259 の「自分で望みの関数を追加してみたら?」
の詳細が知りたいと思った次第なのですが、なにぶん知識が少ないもんで
普通にCかC++で関数書くだけだろ
>>502 ここで聞くよりC/C++スレに行ったほうがいいよ
サンプル作る以外に回答にしようがないから
質問するまでもねぇだろ。
int hoge() {
return 1;
}
でもかいて呼べるかためしてみろよ。
盛り上がっていると思ったらまたC言語もできないやつの質問かよ
こんなのではしゃいでるのは、やはり大文字英数か
yahooのグループは日本のyahooじゃないからね
intelのOpenCVのホームページからリンク張ってるyahoo.com内のページだからね
509 :
デフォルトの名無しさん:2008/06/12(木) 18:54:22
'cvSetMouseCallback' : 2 番目の引数を 'CvMouseCallback (int,int,int,int,void *)' から 'CvMouseCallback' に変換できません。
サンプルをそのままコピペしてるのにこんなエラー出るんですけどなぜでしょう。
それだけじゃなんとも…
C言語できないやつはC言語スレにいくべき
512 :
デフォルトの名無しさん:2008/06/13(金) 00:32:18
>>509 エラー内容から関数ポインタの型が違うことも分からないのなら
まずC言語の基本からやったほうがいいよ。
callback 関数の型が違うのはサンプル間違ってんじゃない
openCV本のページなのにね。昔と仕様が変わったのかな
517 :
デフォルトの名無しさん:2008/06/16(月) 14:39:52
どうも初心者です。
OpenCVを使って、彼女ができる可能性を2倍にしたいのですが、どうしたらいいですか。
OpenCVを使えばいい
OpenCVを使うようになって彼女はできるわ、出世するわ、人生大成功です。
・・・という事例があったら面白いなw
OpenCV使い始めて(2年後に)彼女できた
OpenCVを使ってから、上司のオレを見る眼が変わった
ウホッ
テンプレートマッチングをサーバ上で行うのって難しいんでしょうか?
そんなことはない
関係ないがアクセスが多いならやばい
527 :
デフォルトの名無しさん:2008/06/21(土) 14:34:57
>517〜523
ご丁寧に、ありがとうございます。
皆さんの意見を参考にして、OpenCVを使って、5kgのダイエットに挑みたいとおもいます。
OpenCVでテンプレートマッチングするとき、
指定範囲で画像を検索したいのですが、ROI設定はどのように設定すればいいですか?
CvRect searchRegion; // 探索したい範囲
IplImage *gray; // 探索先画像
IplImage *temp; // テンプレート画像
IplImage *dst; // 結果格納用
cvSetImageROI( gray, searchRegion );
cvSetImageROI( dst, searchRegion ); // これだと実行時にエラーが出る
cvMatchTemplate( gray, temp, dst, CV_TM_CCOEFF_NORMED );
範囲指定しているのだが、エラーが出ます。
IplImage *gray; // 探索先画像
IplImage *temp; // テンプレート画像
IplImage *dst; // 結果格納用
cvSetImageROI( gray, cvRect(72,54,45,35));
cvSetImageROI( dst, cvRect(72,54,45,35)); // これだと実行時にエラーが出る
cvMatchTemplate( gray, temp, dst, CV_TM_CCOEFF_NORMED );
>>528,530ですが、
自己解決しました。
お騒がせて、申し訳ありませんでした。
自己解決でも原因と解決方法を書こうぜ!
>>532 結果格納用のdstを作る時に、ROIを設定したのに↓にあるようにROIのwidthに変更
してなかったことでした。
dst = cvCreateImage(cvSize(gray->roi->width - temp->width + 1,
gray->roi->height - temp->height + 1), IPL_DEPTH_32F, 1);
そして、cvSetImageROI( dst, cvRect(72,54,45,35)); // これだと実行時にエラーが出る
この一文は不要でした。
byte[]列に保存された画像データをIplImageに変換することは可能ですか?
USBカメラから取り込んだ動画をクリックして、そのクリックした場所を中心に切り出す方法が分かりません。
どなたかご教授願えませんでしょうか。
537 :
デフォルトの名無しさん:2008/07/08(火) 18:58:23
OpenCVのエラーじゃねーな
ご教示
539 :
デフォルトの名無しさん:2008/07/11(金) 01:31:45
OpenCVって実はこの先衰退してく?前回のメジャーアップデートからもう2年だし
FedoraCore6以降libdc1394関連のせいでIEEE1394カメラ使えないし
Windowsじゃいいかもしれんがリポジトリ切れたような古い環境の
Linux側は使いにくくて仕方ないんじゃ?
CVSは更新されてるし、Yahooグループのほうも繁盛しているから大丈夫じゃね
>>539 何か代わりになるようなものはあるのかね?
そろそろメジャーアップデートが来るよ。
インテルの代わりに別の企業がサポートに付いてゴリゴリ開発中。
543 :
デフォルトの名無しさん:2008/07/12(土) 17:24:29
>>536 USBカメラから取り込んだ動画をクリックして、そのクリックした場所を中心に切り出せばいいんじゃないでしょうか。
cvCreateImageで作り出したImage画像を、
cvCreateImageHeaderで作ったHeaderに変換するにはどうすればいいでしょうか?
HeaderからImageへの変換ならcvCvtColorでできるのですが
ImageからHeaderへの変換はできませんでした。
cvReshapeとcvGetMatでは
「2 番目の引数を 'IplImage *' から 'CvMat *' に変換できません。」
とエラーが出てしまいます。
CvMatをImageHeaderに変換することができれば解決すると思うんですが…
↓エスパーよろしく
546 :
デフォルトの名無しさん:2008/07/12(土) 23:55:10
>>544 cvCreateImageもcvCreateImageHeaderも同じIplImage*型だろ
データ部分のアロケートしてないだけだよ
ソース読め
547 :
デフォルトの名無しさん:2008/07/13(日) 00:02:27
>>544 >cvReshapeとcvGetMatでは
CvMatとIplImageの違いが分かっているのか?
C言語分かっているか?
548 :
544:2008/07/13(日) 17:36:34
自己解決しました。お騒がせしてすみませんでした。
>>546 データの確保しっかりしていただけに疑問だったので質問した次第でした。
ただ解決の重要なヒントになりました。ありがとうございました。
OpenCVのcvCaptureFromAVIは限定的にしか読み取れませんが
MPEG2やflvやwmv,MPEG4などを読み取れるようにはなりませんか?
>>549 ffmpegをcvCaptureFromAVIにリンクさせ形質変化させれば一応読める
拡張子をそのままで読むってのは無理
どんな動画でも読み取って編集や参照するライブラリは現在存在しない
552 :
デフォルトの名無しさん:2008/07/14(月) 02:02:33
OpenCVのJavaライブラリ化はまだされていませんよね?
yahoo.comのMLによれば一部のデモの移植は成功例があるらしい。
ライブラリごとは未だ。
コンピュータビジョンをJavaでやるやつなんていないだろ
javaでやるくらいならMATLABやるわ
MATLABでやるくらいならpylabでやるわ
ごめん、言ってみたかっただけ。
pylabでやるくらいなら、普通にPython使うかw
pylab を作った人たちってなんで python で数値計算やりたかったんだろうか。
ruby, perl よりなにか言語仕様の時点でやりやすいとかあるのか?
558 :
デフォルトの名無しさん:2008/07/14(月) 23:28:25
linux+OpenCVで複数カメラからの画像キャプチャしたいんですが
OpenCVだけでは複数カメラを同時に使うことはできないようでした。
CvCapture *cap0, *cap1;
IplImage *img0, *img1;
cap0 = cvCreateCameraCapture( 0 );
cap1 = cvCreateCameraCapture( 1 );
img0=cvQueryFrame(cap0);
img1=cvQueryFrame(cap1);
な感じのことをlinux環境で実現したいんですがどうすれば桶?
>>557 Pythonの対話モード(インタラクティブシェル)や組み込み型が、
MATLABと親和性が高かったからでないかな。
最近の言語でインタタクティブシェルが標準で用意されてるのは
Pythonくらいだし、実際結構使いやすい。
エラーは出ないのですが、カメラの解像度が指定できません。
どうしても320*240になってしまうのですがなんでだろ?
double w = 640, h = 480;
CvCapture *capture = 0;
capture = cvCreateCameraCapture(0);
cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH, w);
cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, h);
563 :
561:2008/07/15(火) 19:14:00
>>562サンクス
すでに話題になってたんですか…見落としてました。
>>217のキーワードを参考に別の方法を探します。
OpenCVに備わっている関数の中身を見ることは可能でしょうか?
うん
>566
ありがとうございます。
cvCVTcolor関数のソースってどこにありますかorz
C:\Program Files\OpenCV\cv\src\cvcolor.cpp(2234)
570 :
デフォルトの名無しさん:2008/07/17(木) 14:15:44
C++で書かれた既存のソースコードがあるのですが、この中に
Cで書かれたOpenCVを利用することは可能なのでしょうか。
可能
逆が無理なだけ
逆も無理ではないと思うが
無理ではないが無理がある場合が多いw
ソースコードがあればどうとでもなる
そりゃそうだ
576 :
デフォルトの名無しさん:2008/07/18(金) 13:52:37
実際にガウシアンフィルタを行っているのはいったいどのファイルなんでしょうか?
cvsmooth.cppとかcvfilter.cppとか色々みてるんですけど一体どこで実際の作業をしているのでしょうか?
たぶんcvfilter.cppのどこか
578 :
しんせつなおじさん:2008/07/19(土) 11:21:08
解決していたらすみません。
ガウシアンフィルタなど、コンボリューションフィルタには、カーネル生成と、コンボリューションの計算があります。
1. cvSmooth.cpp ll.1098-ll.1124
メインソースをみると、
CvSepFilter型のgaussian_filterが定義されてその中で処理している。
2. CvSepFilter型
宣言:cv.hpp
ソース:cvfilter.cpp
カーネル生成については、上記ソースのCvSepFilter::に書いてある。
処理部CvSepFilter::processについては,cv.hppによると、CvSepFilterがCvBaseImageFilterを継承しているので、
cvfilter.cppのcvBaseImageFilter::processをみれば実際の作業が書いてある
少し前に画像処理スレで、OpenCVのガウシアンフィルタはFFTで処理してるから速いみたいな話があったが、
実際には普通にSeparableなコンボリューションをやってるだけなんだな。
IPLを利用する場合はまた違うのかもしれないが。
580 :
デフォルトの名無しさん:2008/07/20(日) 21:26:03
ペットボトルを認識させるために、Haartrainingを用いて、
学習データを作成しようとしたのですが、
xmlファイルではなくtxtファイルができてしまいます。
サンプル数はnpos=60,nneg=60です。
ファイル名
AdaBoostCARTHaarClassifier.txt
↓ファイルの内容です
1
1
2
18 26 4 8 0 -1
20 26 2 8 0 2
haar_x2
1.215445e-003 0 -1
1.000000e+000 -9.999974e-001
1.000000e+000
-1
-1
色んなサイトを見て回りましたが、どれもxmlファイルができる
としか書いておらず、解決法が分かりません。
どなたか解決法をご存知の方がおられましたら、教えてください。
たいていのサイトは xml ファイルつくらねージャン、ファッキン
ってかんじでかいてるけどな。英語でぐぐれ
>>580 それステージファイルだろ
XMLは全ステージが終わった後にできる
あと、pos,neg 60じゃペットボトルなんて認識できない
できねーだろ。作るためのコードが sample に入ってる‘
全部終わればできるぞ。
cvCreateTreeCascadeClassifierの最後で保存している。
たしかカレントディレクトリにできるはず
いや、-datで指定したディレクトリがあるディレクトリにできる
うちのPCカメラは古いので少しボケています。
キレイにする関数がありましたら教えてください
cvSmooth(src,dst,CV_BLUR
>>587 それが出来るくらいなら良いPCカメラを買う人はいませんよw
ちとスレ違いではあるけど
OSSの超解像ライブラリでも出てきたら面白そうだよな
モザイキングと超解像ってどう違うの?
全く違うと思うが
>>587 徘徊したり、食事の直後に飯はまだかと言ってきたりするのか。
594 :
デフォルトの名無しさん:2008/07/25(金) 12:42:08
キレイにするため、ブラー+シャープ化、エッジを係数にしたフィルタなどを試しています。
超解像はわかりません……
595 :
デフォルトの名無しさん:2008/07/25(金) 21:56:07
cv画像を綺麗に
PCの電源を切り
「このカメラは非常に高品質で高画質なカメラだ」
と思い込む。
そして二度とそのカメラを使用しない。
・・・完璧。
ピンボケ画像をキレイにするアルゴリズムを思いついたが、ここに書くには余白が少なすぎる。
フェルマー乙
これって課長の色ボケなおすのに使えそう?
特徴少ないから無理だろ
>>602 お前はおっぱいの無限の可能性を分かってないな
エフ!
>>601 パンツじゃないから恥ずかしくないDetectも頼む
606 :
デフォルトの名無しさん:2008/07/27(日) 10:56:38
こんなのでよろこんで、おめでたいよねっつって
おまえらならどうやっておっぱいを認識するの
鼻の穴にチクビをはめてみる。
609 :
デフォルトの名無しさん:2008/07/29(火) 00:44:09
顔を認識して
顔からの距離と色ヒストグラムを学習させる
自動モザイクを夢見て陰毛detectに挑戦したが挫折した
髪の毛にもモザイクかかるとか?
ってか陰毛だけモザイクしてもしょうがなくね?
むしろ(近年の日本では)陰毛は掛ける必要が無いようだな
アメリカだと剃るしな。
614 :
デフォルトの名無しさん:2008/08/02(土) 16:45:53
MFCで作成されたカメラ(IEEE1394)からの取り込み用のソースコードを
いじって画像処理部にOpenCVが使えないか試しています。
MFCを使ったことがなかったので外してるかも知れませんが、CCaptureDoc.hに
IplImageと画像用バッファの宣言をして、そのメンバ関数OpenCV_Processing()で
処理を行う予定です。
それでOpenCV_Processing()を呼びだしたらcvCvtColor()の部分で以下のエラーで
止まってしまいます。
なにか解決策がありましたら教えて頂けないでしょうか。よろしくお願いします。
下のコードの(A)の部分で下記のエラーがでて止まってしまいます。
------------------------------------------------------------------------
OpenCV GUI ErrorHandler
------------------------------------------------------------------------
Bad flag (parameter or structure field) (Unrecognized or unsupported array type)
in function cvGetMat, C:\User\VP\opencv\cxcore\src\cxarray.cpp(2881)
------------------------------------------------------------------------
615 :
614:2008/08/02(土) 16:47:11
------------------------------------------------------------------------
☆CCpatureDoc.h
class CCaptureDoc : public CDocument
{
public:
IplImage* cv_image; // OpenCVの画像
IplImage* cv_image2; // OpenCVの画像
char* pBuf1; // 画像データ用
char* pBuf2;
void OpenCV_Processing( );
〜(略)〜
}
616 :
614:2008/08/02(土) 16:48:00
------------------------------------------------------------------------
☆CCaptureDoc.cpp
CFlyCapDoc::doGrabLoop(){ // 専用カメラ(IEEE1394)からの取り込みループ
〜(略)〜
OpenCV_Processing( )
〜(略)〜
}
CCaptureDoc::OpenCV_Processing( )
{
// メモリ領域を確保 (あ)
pBuf1 = new char[ 640 * 480 * 4 ];
pBuf2 = new char[ 640 * 480 * 4 ];
// OpenCV画像の作成(8ビット4チャネル)
cv_image = cvCreateImage( cvSize( 640, 480), IPL_DEPTH_8U, 4);
// OpenCV画像の作成(8ビット1チャネル)
cv_image2 = cvCreateImage( cvSize( 640, 480), IPL_DEPTH_8U, 1);
// バッファをIPLのイメージ保存部にセット (い) (あ)と(い)の部分は必要ない?
cv_image->imageData = pBuf1;
cv_image2->imageData = pBuf2;
// 0をセットしてみる
cvSetZero(cv_image);
cvSetZero(cv_image2);
// (A) OpenCVの関数が使えるかテスト。ここでエラーがでる <=== (A)
cvCvtColor(cv_image->imageData, cv_image2->imageData, CV_BGR2GRAY);
〜(略)〜
}
cvCreateImageはメモリ確保もしてるからpBufの処理は不要だな
よく調べないで書くけどcvCvtColor(cv_image, cv_image2, CV_BGR2GRAY)じゃないのかな
618 :
614:2008/08/02(土) 17:47:00
>>617 ありがとうございます。
> cvCreateImageはメモリ確保もしてるからpBufの処理は不要だな
なるほど。
> よく調べないで書くけどcvCvtColor(cv_image, cv_image2, CV_BGR2GRAY)じゃないのかな
はい。それでちゃんと動くようになりました。
1週間ずっと悩んでました。orz
技術料5000円です
良心的な価格だな
やっぱりGUIなんかちゃんとしたい時はMFCと組み合わせて使うのが一番いいのかな?
Win32コンソールアプリケーションとかだと限界があるような気がする。
いまさら MFC は無いよ (俺的には)
今からやるならMFCは薦めないけど
俺はMFC(Doc&View)+OpenCVでベースを作っちゃったから不可能では無いとだけ言っておく
624 :
デフォルトの名無しさん:2008/08/05(火) 00:59:24
コア部分DLLにしてC#だろ
>>624 ある程度以上のもの(実験とかトイでないもの)なら俺もそうする
なんでWin32APIじゃだめなの?
いや、別にいいけど。
画像処理部分以外は楽したいじゃん。
>>627 d そういうことね
まだOpenCV始めたばかりだからもっと複雑なことやろうとするとWin32APIだと
何か不具合がでるのかと不安になった
もっと複雑なことやろうとすると「超めんどくさい」という不具合が出るよw
>>628 Win32API使いならやろうと思えば何でもできるでしょう。
デフォルトのWin32コンソールアプリケーション(Dos窓+Windows)の間違いじゃ?
631 :
is:2008/08/06(水) 21:36:52
はじめまして。
opencvで、cvLine()などをつかった描画するときに、
CV_RGBで色を指定できますが、
RGBではなくHSVで色を指定したい場合はどうすればいいでしょうか?
HSV->RGBに一度戻してCV_RGBで指定するしか方法はないのでしょうか?
よろしければ、ご回答お願いします。
632 :
614:2008/08/06(水) 21:37:47
>>623 >俺はMFC(Doc&View)+OpenCVでベースを作っちゃったから不可能では無いとだけ言っておく
ちょっとアドバイスをいただきたいです。
研究室の先輩のMFCで作れらたプログラムを拡張しなきゃ
ならいんだけど、みると処理(カメラからの動画像処理)はViewのOnDrawに
全部書いてあった。
自分で調べた範囲では処理とかはDocで書いて描画をViewにというのらしいのだが違うのかな?
あとMFCで動画像処理を行う上で参考にしたサイト、本などがあったら教えてください。
Doc1つにViewが複数というのがMFCの思想だけど、1対1ならばViewに書いても構わないんじゃないかな
俺はDocでメモリ上に画像を取り込んだ時にViewに更新イベントを投げてる
メニューからの画像処理などはCMainFrameでやってるけど、SDIならどこでやってもいいかも
MDIだとどのViewにフォーカスされているかでメニューが有効にならないとかあって不便
このあたりはbmpファイルを開いて表示するMDIをMFCで組むなんて文献・サイトを参考にすれば良い
あくまでMFCなんて画像処理以外の部分だからね
「動画像」って?カメラから取り込んだ静止画を毎回処理するっていうのは、たぶん動画像とは言わないと思う
>>632 別に構わん思いますよ。Docの意味が無いアプリケーションなんていっぱいあるわけで。
これって作る側だけでなく使う側もOpenCVインストールしてないとだめなの?
とりあえず、スタティックリンクとダイナミックリンクについて勉強してくるんだ!
>>635 必要無い。
例えばWindowsの場合だと、アプリと一緒にDLLを配布すればOK。
いいえ、「動かせれる」なんて言葉はありません。
そうでもありません
>>639 いいえ、それは間違った日本語なので存在はしています。
そこにしびれる
あこがれるー
>>632 ここ三年ほどダイアログベースでしかMFCをいじってないので忘却による勘違いをしてるかもしれないけど
Doc で処理する必要があるのは、「現在のドキュメントの状態」として実現したい場合だけなんじゃないかな
一連の操作を反映した文書をMFCの枠組みで保存・読み込みに対応させるつもりではないのならDocで処理
しなければならないということもないはず
前から気になってたんだけど、
なんで Intel が CV ライブラリ作るの?
なんでだろう。IntelのCUPに最適化されてる有料版IPPを売るため?
なんにせよこれからもOpenCVの開発を続けてもらわないと困る。
Athlon以来ずっとAMD派で今もPhenom X4使ってますサーセンwww
648 :
デフォルトの名無しさん:2008/08/13(水) 11:49:04
そこにCVライブラリがあったから
>>645 自らCPUの正しい使い方を知らしめたいという欲求の産物であろう。
片手間に作ってみたものの、「そういや、俺らあんま関係ねーよな?」って事で
今は開発が停滞してんじゃね?
将来的にはGoogle辺りに売り払われそう。
Intelは昔、サウンドもやってたよな。
CPU使わせることをいろいろやってるんじゃないかと。
652 :
デフォルトの名無しさん:2008/08/13(水) 23:43:16
はじめまして。
opencvで画像を保存する際に、cvsaveImageを使うと、アスキー形式で保存されます。
これをバイナリ形式で保存したいのですが、うまくできません。
ライブラリのコンパイルが必要なのですが、やり方がよく分からず、うまくいきません泣
詳しく教えていただけないでしょうか。
環境は、
win xp sp3
visual studio2008
c++
です。
かなり困っています。
プログラミング初心者で汗
よろしくお願いします。
まずは、画像形式についての説明をどうぞ。
OpenCVプログラミングブック買ってやってるんですが、カメラを使うプログラムが
サンプルプログラムをそのままコピペしても参考画像みたいに上手く認識しない
これってカメラが悪いのか参考画像はたまたま上手くいったのを集めて載せてる
だけなのかどっちですか?
両方じゃないすか?
顔認識なんてのは、認識系では大体そうだけど不確定要素が多すぎて、
そうそうロバストに検出できるもんじゃない。照明光の問題もあるし。
だから今でも一大研究分野になってるんだろう。
サンプルで認識やろうとしてるって、何を目的にしてるのかな?
みんなはOpenCVって何のために使ってるの?
認識させようとする顔が悪いんだろw
冗談さておき、日本人(アジア人種)の顔は、白人用に調整された顔認識では苦手だと思われるね。
658 :
デフォルトの名無しさん:2008/08/14(木) 17:55:00
■■みんなでサイトつくろうぜwwwwwwwwwwwwwwww■■
「お前ら一緒にサイト作ろうぜwwwwwwwwww」
「2ちゃん越えるサイト作ろうぜwwww」
http://gacco.o0o0.jp/ http://yutori.2ch.net/test/read.cgi/news4vip/1218673130/ http://ex14.vip2ch.com/test/read.cgi/part4vip/1218612197/ 興味沸いたらきてください!
======================!! 人材募集中 !!======================
■プログラムを組んでくれる人
*サーバー側
言語はRubyかPerlの予定ですが、Perlが有力候補。
・チャット
定期的にクライアントから着信があり、それに対して更新されたチャットのメッセージを返信する程度の能力。じゃなくて機能。
通信するときのフォーマットは未定。
・ログイン・アカウント管理
ログイン認証、各アカウントの点数などの管理。データベースは未定。
・お絵描き
未定。とりあえず鯖に負担がかからない程度にたまに画像を送信してあげるって感じで
*クライアント側
はっきり言って俺もわからね。Ajaxだとかflashだとかjavaだとか。
■機能提案(正しくは人材ではなく、意見?)
「こんな機能があったら良い!」「こうするともっと楽しくなる!」などの意見募集中。
挨拶とか気にせずスレにどんどん書き込んでくれればおk
■デザイン
サイトのデザインを考えてくれる人、作ってくれる人募集中。
できればphotoshop illustrator使える人(プロジェクト共有しやすいので)
659 :
659:2008/08/18(月) 18:00:52
opencvでjpg画像の上に透明情報を持ったpng画像を
貼り付けるにはどうすればいいのでしょうか?
イメージとしては、jpg背景画像の上に、
png鳥画像を乗せるようなことがしたいです。
やったことないけど、アルファチャンネルを使うんじゃないかな
661 :
659:2008/08/18(月) 18:22:03
660さん、お返事ありがとうございます。
アルファチャンネルを使って自分で1ピクセルずつ
背景と前景の混ざり具合を計算して
画像を重ねていくしか方法はないのでしょうか?
そもそも、png読み書きはアルファに対応してなかったような気がするけど。
間違ってたらすまん。
663 :
659:2008/08/18(月) 19:26:13
662さん、お返事ありがとうございます。
そうかもしれません!
png画像を読み込んでアルファチャンネル部分だけ値を見てみると
絵とアルファチャンネルの値が対応していないようです。
png画像をそのまま貼り付けられればよかったのですが、
できないようなので別の方法を使おうと思います。
みなさん、ありがとうございました。
cvmSetとcvmGetってCvMatが浮動小数点型じゃないと使えないんだな
気付かずにエラー起こしててソース見て納得
てか整数にも対応できんのになぜやらないんだ?なぞ
666 :
659:2008/08/22(金) 01:03:08
664さん、重ね合わせはこれでうまくいきそうです!
これで、画像の上に画像を乗せて動かすことができます!
ありがとうございました。
IplImageの矩形コピーってどうやればできますか?
まさか自力??
cvCopy
dstもsrcも同じサイズのROIを指定してcvCopyだったかな
>>667 わざわざ ROI なんて仕組みがあるぐらいだじょー
でも確かIPLじゃROIが無効なような気がしたぜ
IPLImageにはROIあるのにな
>>645 DSP使わなくても画像処理できますからwwww って言いたかったから.
BGR チャネルを B+G+R したりする関数ってある?
img1 と img2 の各要素毎で
(B1-B2)^2 + (G1-G2)^2 + (R1-R2)^2
ってのをちょちょいとやりたいだけなんだけど。
cvSplit?
cvSub/cvMulとかでもできそうか
cvSplitしてテンプレートマッチして結果マップの足し合わせ?
やっぱり cvSub → cvMul → cvSplit → cvAdd 2つ
とかせにゃならんのかい?
cvSub → cvMul → なんか
ですまないのかなぁと思ったんだけど。
グレースケール変換は1つの関数でできるのにねぇ。
677 :
デフォルトの名無しさん:2008/08/28(木) 00:50:51
今現在ハフ変換を行って直線を検出しています。
それで複数の線が検出されるのですがx軸方向のみに伸びる線が
邪魔なので消したいんですがどうすればいいんでしょうか?ご教授お願いします。
ご教示
n個の(x, y)からなる(X, Y)群から点(a,b)と最もユークリッド距離が近い点を効率的に探すにはどうやったらいいですか?
データとしてはnx2の行列(X, Y)と1x2の行ベクトル(a, b)があります。
cvmGetしながらfor文で最小ノルムを探すしかないんでしょうか
データ(X,Y)に拘束(ソートされてるとか)がない場合は、効率的なアルゴリズムってのはないんじゃないかな?
あんま詳しくないから自信ないけど。
行列の全データにアクセスするならcvmGet使うよりも、直接データポインタにアクセスしたほうが多少速いんじゃない?
コンパイラが最適化しやすい希ガス。
距離の二乗で比較して√を求めない。なんていうのは当たり前として、
Nがバカでかくて、繰り返しこの検索をしないといけなくて、(X Y)が毎回全部変わるとかではない場合なら
あらかじめ適当な大きさの範囲ごとに割り振っておいて、(a b)がある範囲とその周囲だけからだけ検索するとかすれば。
(X Y)が移動するなら、範囲ごとの配置はリスト構造にしといて範囲間移動の負荷を軽減するようにするとか
状況によって最適な方法は変わるだろうし、がんばれば早くなるってもんでもないと思うけど
682 :
679:2008/09/03(水) 01:32:15
>>680 (X, Y)はソートされてません。
ソートすると余計に時間がかかるかと思ってやっていません。
>>681 (a, b)は固定ですが、(X, Y)は毎回変わります。
Nは固定ですが、かなり巨大(1万弱)です。
681です
毎回変わるにしても前の位置から全くかわるのか、少し動くのかとかにもよるかな。
何をするのかによってうまい方法があったりなかったりということ
でも、たかだか1万ならストレートに作って、その部分のシステム時間を計ってみてから考えてもいいんじゃないだろか
まぁ全計算だよね。knn っしょ?
685 :
デフォルトの名無しさん:2008/09/03(水) 15:00:18
探索開始点と終了点を指定して輪郭線を抽出する方法は無いでしょうか。
例えば、四角形の画像があったら左上の頂点から右下の頂点までの
輪郭線を抽出するというような感じです。
cvFindContours関数を使うと開始点が指定できないですし、またぐるっと
一周して終了点が開始点のところに戻ってきてしまうので、希望する処理が
できません。
いまいち、やりたい事が分からない。
エスパー頼む。
>>685 1. 希望するサイズのcvImageを作る。
2. cvCopy
3. 輪郭線を取るなどの処理を行う
4. 必要なら元の画像にcvCopy
こういう手順がお望み?
>>687 それならROIだけでいいはずだから違うんじゃないか?
>>685 その例みたいにパスが2つある場合はどっちを辿るの?
まぁ cvFindContours で輪郭みつかっているんだから、
輪郭辿っていけばいいんじゃないかな?
>>689 「ぐるっと一周してしまうので、希望する処理ができません」
と言ってるところをみると、そういう話でもない気がするが…謎
CV_BGR2GRAYとかの2ってtoを表してたのか。洒落てるな
いや2とか4とか普通に使うだろ?
今の若い者はEXE2BINとか知らんのだろう
大昔のMacにはp2cstr()とかp2cstr()とかあった。
>>691 おまえはプログラミングど素人か。そうなんだろうけど。
>大昔のMacにはp2cstr()とかp2cstr()とかあった。
大事なことなので二度言いました。
ごめんなさいp2cstr()とc2pstr()の間違いです><
"P2P"もそうだな
atoiあたりしか知らない世代なんじゃない?
Core2Duo
2chもだよな
703 :
685:2008/09/06(土) 16:32:36
説明が下手で申し訳ない。
具体的に書くと
1. 画面フレームに入ってきた対象物体を背景差分で抽出する。
(ただし、対象物体が他の物体(邪魔な物体)で一部隠されている場合がある)
2.対象物体の輪郭情報を抽出し、これを事前準備した辞書データ(複数の物体の
輪郭情報を保持)と照合して一致度が高いものを選択する
ということがしたいのです。
以下の□が邪魔な物体で、三種類の丸(○,◎,●)が対象物体。
輪郭情報として●の部分を指定した場所(始点)から順序よく取りたいの
ですが、cvFindContours関数を使うと◎の部分も含んで輪郭としてとってしまうという
ことです。
始点
□↓
□●●●●
□◎○○○●●●●
□◎○○○○○○○●●●●●
□◎○○○○○○○○○○○●
□◎○○○○○○○○○○●
□◎○○○○○○○●●●
□◎○○○●●●●
□●●●●
□↑
終点
>>703 ものすごく基本的な前提だけど、
□と●と◎、特に●と◎にはコンピュータが判断できるような明白な差異はあるの?
差異が無いなら cvFindContours関数の挙動は正しく、あなたはその関数を
使う以外の方法を考える必要がある。そもそも輪郭を使うという発想自体が
目的にそぐわないかもしれない。
差異があるなら cvFindContours関数のソースを探してきてその差異を考慮するように
改良すればいい。そうすれば「□に隣接する輪郭だけ消す」とか実現できるんじゃないの。
cvFindContoursの結果からお好みの範囲だけを使えばいいんじゃない
多変量正規分布の関数って自分で書かないといけない?
探したけどないっぽい・・・
コンピュータヴィジョンのライブラリにそこまで期待するんだw
つーかそんなん1行なんじゃ…?
>>707 GMM はあるんですよ?なぜ別個の関数がないのかと。
predict のソースをみたけれど自力で書いているっぽい。
なぜ別個の関数がないのかと。
>>708 cvSub と cvTranspose と cvInverse と cvMul, cvMul の5行に
正規化項が必要なら6行だと思います。多変量ですよ。
実際、cvCreateMat などのせいでもう10行ぐらい増えそうなのが一番めんどうくさい。
「多変量正規分布の関数」ってのが意味分からないんだけど、
それに従う乱数が欲しいって話?
んー、でも、それなら別にソースはWeb上にありそうだし、全然違う話かなぁ・・・
どっちみち
>>709によると16行ぐらいで書ける(?)らしいし、
そんなにメンドくさー言わんでもいいんでないの?
>>709 > なぜ別個の関数がないのかと
そういう目的のライブラリではないからだと思う
712 :
デフォルトの名無しさん:2008/09/11(木) 20:59:38
cvKMeans2を使おうとしているんですが、下記のプログラムの
errorのコメントのところでコンパイルエラーがでます。
原因がさっぱり分からなく、困っています。
どこが悪いか指摘してください。
よろしくお願いします。
MyImageはIPL_DEPTH_8U 、nChannels=1,width=512,height=512
という形式で初期化も終わっており、表示させて確認しています。
size = MyImage->width * MyImage->height;
CvMat *cv_clst_clusters = cvCreateMat (size, 1, CV_8UC1);
CvMat *cv_clst_points ;
cv_clst_points = cvCreateMat (size, 1, CV_8UC1);
int cv_clst_cnt= 0;
for( int x = 0;x< MyImage->width;x++ ){
for( int y = 0;y< MyImage->height;y++ ){
cv_clst_points->data.fl[cnt_cv_clst] = MyImage->imageData[
MyImage->widthStep*y + x];//error
cv_clst_cnt++;
}
}
cvKMeans2(cv_clst_points,30,cv_clst_clusters,
cvTermCriteria (CV_TERMCRIT_EPS , 10, 1.0));
>>712 とりあえず cnt_cv_clst が宣言されてないな。
cv_clst_cnt はあるけど。
714 :
デフォルトの名無しさん:2008/09/11(木) 21:50:16
>>713 書き込むときに、指摘されたとこがみっともなく見えて、cnt_cv_clstから
cv_clst_cntにとりあえず修正したんですが、全部直っていなかったようです・・・
↓訂正したソースです
size = MyImage->width * MyImage->height;
CvMat *cv_clst_clusters = cvCreateMat (size, 1, CV_8UC1);
CvMat *cv_clst_points ;
cv_clst_points = cvCreateMat (size, 1, CV_8UC1);
int cv_clst_cnt= 0;
for( int x = 0;x< MyImage->width;x++ ){
for( int y = 0;y< MyImage->height;y++ ){
cv_clst_points->data.fl[cv_clst_cnt] = MyImage->imageData[
MyImage->widthStep*y + x];//error
cv_clst_cnt++;
}
}
よろしくお願いします。
なんにも確認しないで書くけど、
MyImage は1チャネル?
CV_8UC1 で data.fl でいいんだっけ?
それもよくないけど、コンパイルエラーはデータ型の違いだと思う。
C言語初心者乙なのか、CvMatの仕様が分かっていないのか知らないけどリファレンス読んだほうがいい。
717 :
715:2008/09/12(金) 00:20:15
>>714 あ、ちなみにその目的には cvReshape が使える。
入力が IplImage でも cvMat 返してくれそう。
なんにも確認してないけどね。
ところで cvKMeans2 って中央の値 (codebook) とるインターフェースないのな。
量子化できないな。なんだかしょっぺーな。
cvkmeans2はしょっぱいと思ったので、俺は自作した。
2週間あれば組めるでしょ。
>>719 せっかくだからそれを公開できるレベルまで仕上げて
公開しておいてくらさい。
まあ本職でやってるわけじゃないからな。
毎日ちょっとづつやってそれくらいかかったし。
それにおまいらが俺の書いたソース見たらプゲラの嵐だぞ。
723 :
722:2008/09/12(金) 16:39:06
724 :
720:2008/09/12(金) 16:49:32
急ぐんならコードあげるけどどうする?
725 :
722:2008/09/12(金) 16:50:17
失礼
>720
726 :
720:2008/09/12(金) 21:53:47
cvGetCol はあるのに cvSetCol がないのはなぜだ?><
そんなの当たり前だろ
なにが当たり前?
SetColが無い理由
会話をしてください><
732 :
デフォルトの名無しさん:2008/09/13(土) 17:57:15
opencvって停滞してたのか。
じゃあいろいろコード書いてyahooのグループに書いては
noooo
とか言われてアーカイブ消される遊びでもすっかな
リファレンスに例文を挙げてください ><
難しい日本語だな・・・
>>732 任意のサイズで取り込めるようになった。
Thanks!
質問なんだけどさ
もともとpointsに800個くらいの構造体が格納されていて、
for(){
:
:
cvSeqPush( points, new_point );
free( new_point );
}
ってすると、freeのところで、points->totalの数が4こくらい減るんだ。
データを後ろに追加したあとは、もうnew_pointとは関係ないよね?
なんでだろう?
cvFreeだろ
freeでもやってることいっしょじゃん
OpenCVが確保してるメモリはalignを調節しているから違うだろ
自分でmallocしてるなら逆にfreeじゃないと駄目だからワカラネーヨ
それは知らなかった。ここで言うalignって何ですか?
アライメント
cvAllocはmallocしたポインタを16バイト境界にずらして返してる
OpenCVにQR分解する関数はないですか?
746 :
デフォルトの名無しさん:2008/09/29(月) 14:30:28
GPL・・使い物にならん
インターレース解除する関数ってないでしょうか?
もしくは、インターレース解除に使えそうな関数などがありましたら、ご教示ください。
memcpy
ライセンス汚染気になるからGPL使えないの?
dllで別ファイルにしてもだめ?
dll にしてもだめでしょ。
バイナリ配布しなきゃいいんだよ。っつって
754 :
749:2008/09/30(火) 23:58:00
>>750,753
ありがとうございます。
avisynsthのAutoDeintみたいなことをしたかったんですが、
なかなか難しそうですね。
その手の論文とかあるのかな・・・
えぇこっちゃ
ロボットベンチャーか
cvd.libってopencv1.0に入ってます?
cv.libならあるんですが、こいつがないので、デバッグができないです
デバックモードでビルドしる
cvd.libが見つかりませんってでます…
cvd.lib をビルドする
cvd.lib をビルド????
ごめんなさい、よくわからないです。
>>763 _make\opencv.slnをデバッグモードやったらできない?
Ver.6.0だったらopencv.dsw
opencvをdebugしようと思う人じゃないとcvd.libは無関係
そうでもない
OpenCVにbugがあるとは普段疑わないけど、
自分のコードがおかしくて、OpenCVのライブラリの中でそのおかしさが露呈してる場合もあるから、
OpenCVの中のコードを追っかけられたほうが簡単な場合もあると思うけどねえ。
だからcvd.libがあったほうがいい場合もあるんじゃない?
まあ、OpenCVのコードは一切読む気ありませんっていう人だったらいらないだろうけど。
この種の「楽ができるぜイェイ!」系のライブラリで
ソースコードを読まないとかありえないだろ。
らくがきレベルのなんちゃってツールでいいなら別だが。
「楽ができるぜイェイ!」系のライブラリ
って表現は始めて聞いたw
まぁ、ライブラリ全般が楽するためにあるような気はするが
てか普通にopencv.jp読んでも何するんだかわかりにくいからソース読んで理解したほうが楽だよね。
流石にそれはない
773 :
デフォルトの名無しさん:2008/10/05(日) 17:54:28
>>773 Yahoo Groupsのにv4ならあるね。
776 :
773:2008/10/05(日) 20:20:31
初めまして、今晩和
error C2664: 'cvLoadImage':1番目の引数を'IplImage *'から'const char *'に変換できません。
って出るんですけど、コレって何故なんでしょう?
一応、凡ミスは潰してあるはずなんですが・・・・
C/C++の違いかとも思ったんですが
もしかしたら凄く低レベルな事なのかも知れないのですが、お願いします
IplImage *frameImage, *src_img, *src_gray;
src_img = cvLoadImage (frameImage, CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
凡ミスです。
凄く低レベルです。
ドキュメント読んでください。
780 :
777:2008/10/05(日) 22:11:39
>>778 分かりました。ドキュメント読んで出直して来ます(_ _)
>>779 highgui.h?
せっかくの777を自分が踏んでしまっている・・・・
781 :
773:2008/10/05(日) 22:37:42
783 :
デフォルトの名無しさん:2008/10/08(水) 03:36:07
一つのマークの最も外側の輪郭に対して、4連結境界線追跡を行ってそのチェーンコードが欲しいのですがどのようにしたら良いでしょうか?
8連結であればcvFindContoursを使うことで出来たのですが
よろしくお願いします
オライリーのOpenCV本を既に手に入れた方いますか?
日本在住で。
なかなか売ってなーい。
785 :
デフォルトの名無しさん:2008/10/08(水) 17:47:30
CvCvtColorでBGR2GRAYを用いてグレースケールに変換すると、ImageJで8-bitグレースケールに
変換するより輝度値が低くなってしまいます。
どうすれば、ImageJを用いたグレースケール値をOpenCVで得られるでしょうか?
グレースケール変換程度なら、ImageJのソース見て、
自分で実装しても大した手間ではなさそう
787 :
デフォルトの名無しさん:2008/10/09(木) 11:37:43
すごい可能性を感じてたのに、全然話題ないんだな。残念
俺はこれからこれで人生を賭けてみるよ
Insufficient memory (Out of memory)in function cvalloc
とかでるんですけど、どう対処したらいいでしょうか。
>>788 確保しようとしているメモリ量を見直す。
790 :
デフォルトの名無しさん:2008/10/09(木) 15:37:40
独学で最近OpevCVを勉強を始めたんですが、cvLoadImageで読み込んだ画像って-127〜128で取り込まれるんですか?
どうも結果がおかしいと思って階調値を出してみたら128以上の値が出なかったので
処理の上でそれだと面倒なのですが、どうにかならないものでしょうか
読み込んで出力するだけの最低限のプログラムで確認したのでバグはないと思うんですが
>>790 IplImage::imageData が char* だからでは?
OpenCV 以前の問題。
793 :
790:2008/10/10(金) 14:58:00
直りました、ありがとうございます
もう少し基礎を勉強してから画像をいじることにします
返答遅くなってしまい申し訳ないです
794 :
デフォルトの名無しさん:2008/10/11(土) 22:05:26
「CPad for Borland C++Compiler」でOpencvを試みようとしていますが、うまくいかず
「〜を含む関数はインライン展開できない」など多く出て実行できません。
Cpadで、Opencvを使えるようにするにはどうしたらいいでしょう?
いいサイトなどもあれば教えてください。
っVC++2008 Express
cvCreateCameraCaptureの引数の番号変えても2台目以降のwebカメラからデータが取れんぞい
あるある。
>>797 USBの転送速度を絞るといけるらしい。
それかUSB拡張ボード増設w
800 :
デフォルトの名無しさん:2008/10/14(火) 16:21:32
xmlを作っていてエラーがでるので、調べてみると
haartraining.exeを再コンパイルする必要があることがわかりました。
手順がわからないのでどなたか うpしてくれませんか?
vc++ の project ファイルなかったっけ?
それダブルクリックしてビルドすればいけんじゃね?
>>800 再コンパイルは必要ないと思うが古い情報じゃないの。
ちなみに_makeのしたのプロジェクトをVC++ 2008で開けばビルドできます。
chihara-labにあるやり方でキャリブレーションを行うとしているのですが、
あそこでいう実空間座標というのはどういった座標なのでしょうか?
OPENCVのソースって読めませんか?
読めるに決まってるジャン。Open じゃん。
たとえば、GOODFEATURETRACK という関数があって、この関数で何をしているのか、中身を見たいんですよ。
中身を見ればいいじゃん。Open じゃん。
Intel のサイトから OpenCV のコンテンツ消え始めたな
いったいなにがおきているんです?
OpenCV有料化
>>810 有料化?なんのこっちゃ。
>>755 管理する団体が変わるんだろ?
opencv 1.1pre1 出たみたいだよー。
うおおおお 動きがあったのか
てゆうか、俺の知らないところで動いてましたか?ずっとVer1.0でやきもきしてたんだが
まじか
最近はじめたとこだけどいいタイミングだったのかな?
Changelogみたけど機能や使い方が大幅に変わるとかそういうのは無いよ。
opencvを使ってウインドウキャプチャのようなことは出来るのでしょうか?
directxで描画した画像を取り込ませて画像処理することを考えているのですが
Changelog より。おいらの琴線に触れたものだけ。
interfaces/swig/octave が追加された!
Speeded-up Robust Features (SURF) が追加された!(Better Harris Corner みたいなもん)
RANSAC が追加された!
Approximate nearest neighbor が追加された!
HIGHGUI で FFMPEG が利用可能になった!
全般的に videoInput library ってのが使われるようになった!
あとカメラキャリブレーションとか stereo correspondence とか。
ビデオ入出力関係の関数は改善されとるのかな?
>>818 videoInputがマージされたようだから、directshowで素直に使えるデバイスなら結構楽になるかと。
素直じゃないのはゴリゴリ書かないと無理。
あと全体的にいろいろ高速化もしてるみたい。
特にインテルのマルチコア使ってるならかなり良くなるかも。
cvCalcOpticalFlowPyrLKで怪しいフローを検出しないよう
条件を厳しくしたいんだけど、どのパラメータをいじったら手っ取り早い?
昨日挑戦し始めたけど、cvcam.libが開けないとか言われてコンパイルできんかった。。
探してもcvcam関係が見つからないので1.0にしたらコンパイルできた。
<cv.h>をcppの先頭につけるとエラー
error C2664: 'cvFree' : 1 番目の引数を 'CvGraphScanner **' から 'void **' に変換できません。(新しい機能 ; ヘルプを参照)
とでます。
原因に心当たりはないでしょうか。
>[2009年09月30日] opencvサンプルコードの,"カメラキャリブレーション" を修正,解説を詳しくしました.
僕はこの一行に未来を感じ取りますた。
いつのまにか、Linux版の1.1pre1もでてるんだね
827 :
679:2008/10/29(水) 22:50:57
WarpAffineの行列成分を変数で与えて画像の拡大縮小を切り替えたいんですけど、
x方向の拡大率a、Y方向をbとすると行列は
| a 0 0 |
| 0 b 0 |
であってますよね?
aかbが1以上になると拡大がうまくいかずグレー1色になってしまいます。
縮小はきれいにできます。
WarpAffineでは縮小しかサポートされてないのでしょうか?
Resizeではウィンドウの大きさが変わってしまうので避けたいのですが、
ウィンドウサイズを変えずに拡大する方法はありますか?
cvWarpAffineでもcvResizeでもどっちでもできるYO!
827です。自己解決しました。
WarpAffineはインライン処理できないんですね。バッファに出してCopyで戻したら行けました。
画像処理関係はインラインできるのとできないのが混在してるんですね。全部行けると思ってました。
インラインって何やねん
in-placeで処理可能な場合はヘルプにちゃんと書かれてる
831 :
デフォルトの名無しさん:2008/10/31(金) 12:05:27
スレ違いかもしれませんが、H8マイコンやPICマイコンで、
OpenCVを扱って、ロボットに搭載するって出来ますか?
マイコン用にコンパイルできるか?って意味なら、
不可能じゃないかもしれんが相当大変だと思うよ。
サイズの問題とかもあるし…試してみる気にはなれないな。
>>832 ロボットの眼を作りたいんですが、OpenCVは不向きって事ですか?
おとなしくPCをロボットに乗せるか、それが無理なら、画像処理は外部のPCに任せる。
ってのが一番手っ取り早いと思うよ。
マイコンでの処理に拘るなら、OpenCVは良い選択肢ではないかもね。
>>834 参考になりました。ありがとうございます
しかし近頃のデジカメで、ファインダー内顔を
おいかけることのできるものは、
OpenCVを組み込み用に移植したんじゃない?と
思っちゃう
ねーよ。。カメラ会社馬鹿にすんな
カメラ会社て…
HarrLikeFeaturesくらい誰でも書けるだろ…
HarrLikeFeatures に一致する情報は見つかりませんでした。
検索のヒント:
キーワードに誤字・脱字がないか確認します。
別のキーワードを試してみます。
もっと一般的なキーワードに変えてみます。
>>830 インラインはinlineだろw
たしかマクロみたいにコンパイル時に展開される関数のこと
インラインオブジョイトイ
顔検出とかは意外と自前でも書けるし
特にOpenCVに依存する事もないと思うけどな
>>843 顔検出って色でやるの?それとも目とか口とか基本パターンを追う感じで?
OpenCVのやつは、そのどっちでもない。
>>843が自前で実装?してるやつがどうやってるかは知らん。
haartraining.exeで、-mem 200としているにもかかわらず
起動直後にどんどんメモリを確保して、2GBに達したところ(1分ぐらいかかる)でメモリ確保に失敗して落ちます。
どんな要因が考えられるでしょうか?
Windows版の1.0と1.1pre1で両方同じ現象になりました。
ポジティブサンプルは約5000枚で、vecファイルは470MBですが、
ポジティブサンプルを100枚程度にしても落ちるまでの時間に変化がないので、画像が多すぎるからではないと思います。
848 :
846:2008/11/01(土) 13:14:01
32bitwindowsでプロセスが2GBまでしか確保できないのはいいのですが、
haartraining.exeが"-mem 200"による"メモリ200MB以内で処理してね"というコマンドを
無視するのが問題なのです。
200を指定しないとどうなるの?
デフォルト200だよね
850 :
846:2008/11/01(土) 21:58:23
200を指定せずデフォルトのままの場合も同じようにメモリを確保しまくって自滅しました。
逆に-mem 10としても同じ症状でした。
死亡時にはOpenCV GUI Error Handlerというダイアログが出るのですが、
枠だけでクライアント領域が描画されていない変なウィンドウです。
このときのメモリ使用量はタスクマネージャで見て2005MBでした。
以下は使用したオプションです。
haartraining.exe -data output -vec positives.vec -bg ..\negative.txt -npos 5106 -nneg 358 -w 240 -h 240 -mode BASIC
-w 240 -h 240
って、でか過ぎじゃね?
852 :
デフォルトの名無しさん:2008/11/03(月) 15:50:42
顔検出をすると、いくつか顔が検出されるんだけど
どれが最も顔に近いか知る方法ない?
ソースをいじらない限り無理だとおも。
いや、理論的に無理
顔と目の位置を特定してその位置関係で精度をあげるというのを
どこかのWebプログラムでやっていたのを見つけたことがあるんだがURLを失念した。
見つけたら教えて欲しい。
>>855 それって片方が検出失敗した時どうするの?死ぬなの?
こういう複数の分類器を組み合わせるのは理論的な
導出がなくて「やってみたら精度あがりました。」
程度の論文多くて萎える
SURF 実装されたけど、特許とられるらしいな。
SIFT も特許あるし、いいかんじの interest point detector がないんだな。
>>856 読んでる論文誌か学会誌のレベルが低いんじゃね?
あるいは、アプリ寄りの分野とか?
それぐらいじゃ釣られないクマ
>>856 「やってみたらできました」が工学。
理学部の理論屋さんは萎えるかもしれんが。
工学の分野でも、数学的な方向からアプローチしてる人は多いと思うけどなぁ
確かにぶっちゃけるとそんな感じなのも多いけど
まるで考察なしっていうのは流石に無い気が…
opencvのpythonインターフェイスがバグだらけだったけど
バージョン上がってだいぶ良くなった?
>>863 ホント?8月頃のCVSはビルドさえ通らないほど駄目駄目だったけど。
ちょっと試して見るか
ほんと?って>863がきいているんじゃないのか?
866 :
783:2008/11/08(土) 19:01:39
やっと出来たお。
追跡のソースのif ( *i4 != 0 )とかがドット探索だから、その条件式をif (*i4 != 0 && (s%2 == 0))にすることでできたお。
データの構造体そのものが変更になったりしたものってある?
CvMatとかIplImageとかは変更ないよね
>>860 >「やってみたらできました」が工学。
色々な考えがあるんだなぁ。俺は「やってみたら出来ました。この方法が上手く行くロジックは〜だと考え、
実験してみたら確かにそれでよさげです。この原理は応用できそうですよ(・∀・)」くらいまで書かないと論文に
ならないと教わったけど、最近は違うの?
869 :
デフォルトの名無しさん:2008/11/12(水) 04:19:06
>「やってみたらできました」が工学。
こういった論文も今日では結構あるけど、
有用な論文はやっぱ理論的な導出もしっかり行っているのが事実。
ちなみにサーベイする際、
「やってみたらできました」的な論文を選ぶと、俺の指導教官は怪訝な顔をする
OpenCV
うまくいったら
文献を
ネットで検索
コピペする
パスがちゃんと通ってないんじゃない?
>>860 ViEW2008にorzな論文投稿したのはお前だったのか
Canny使ってみた
やたら速いな!
あんまモジュール切ってなくて、Windows専用命令のおかげ?
俺のよりかなりいやずっと…まぁ実機用に作ったのPCで比べたんだが…
でもこんな差があるとは
国内のしょぼい論文にいちゃもんつけて何がしたいんだ
もともとIntelが画像処理ボートなしで画像処理できますよって
宣伝として作っていたものだからそりゃ速いだろ
画像処理ボートってのは、どんなボートですか?
>>879 それは「ボード」ですよね。それなら判ります。私は>877の言うところの「ボート」について聞いているのです。
nice boat.
OpenCVのpython bindingはバグがあるので
美しい船の映像をお楽しみください
くだらん
884 :
デフォルトの名無しさん:2008/11/18(火) 20:10:24
IplImage の ImageDate[0] の位置が ver1.0 と ver1.1 では違うのは仕様ですか?
え?
IPLのバージョンってことはないよな?
Iplimage imagedateの検索結果 6 件中 1 - 6 件目 (0.74 秒)
構造体メンバをメモリ位置で読んでるやつが悪い
ImageDateって画像を取得した日時か?
そんなのあったっけ
891 :
デフォルト。。。:2008/11/18(火) 23:38:22
「imageData」ちゃうんかい?
そしたら重要だと思うけど。
日付なんて使って何するの?
>>889 rows と colsは無くなったよな。
IplImageではSIZE_EQのマクロが使えなくなった。
>>893 cvBlobslibのビルドでコケたよ。
widthとheightに置き換えてIplImage用のマクロに仕立てた。
895 :
デフォルトの名無しさん:2008/11/19(水) 13:30:26
cvSVDで固有値、固有ベクトルを求めようと思っているのですが、
以下のようなエラーが起こってしまいます。
OpenCV ERROR: Bad flag (parameter or structure field) (Unrecognized or unsupported array type)
in function cvGetMat, cxarray.cpp(2881)
宣言の部分のソースは以下のようになっており、省略していますが
matrix[2][2]には値がちゃんと格納されています。
double matrix[2][2], eigenvals[2], eigenvects[2][2];
cvSVD(matrix, eigenvals, eigenvects, 0, CV_SVD_U_T + CV_SVD_MODIFY_A);
どのように修正すれば良いか教えていただけないでしょうか。
よろしくお願いします。
CvMat を作りなさい
>>884 の検証
ImageDateではなくimageDataでした
>>884では
↓画像として 数字はimageData[n]のとする
■■■■■■■■
■■■■■■■■
■■■■■■■■
89■■■■■■
01234567
がいままでのOpenCVのIplImageの画像格納仕様だった
が、OpenCV1.1では
01234567
89■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
となってました.
しかし,ソースから見たわけではないので環境によっては違うかもしれません.検証は
Windows XP Professional
VC++ 2008 Express Edition
比較 OpenCV1.0 OpenCV1.1
十字路のとこ、グレーの丸が見えるw
iplimageのflagに逆順にするのなかった?
それがデフォルトでonなのかな
900 :
デフォルト。。。:2008/11/19(水) 23:22:17
902 :
デフォルトの名無しさん:2008/11/21(金) 13:40:28
物体認識をしようとcreatesamples.exeを動かしたのですが、
parse error
というのが出て指定の枚数を作ってくれません
何が原因なのでしょうか
エスパーもできねぇ
素朴な質問なんですが cvHoughCircles って二重や三重の円を
検出できないと考えて良いのでしょうか?
できるんじゃね?
>>902 まず正しい方法を調べて
自分の方法との違いを比較すると原因が分かると思います。
parse errorが原因だろ
908 :
デフォルトの名無しさん:2008/11/22(土) 00:23:03
>>902 一般的にparseする対象はXMLなのだから、
まずそこらへん問題ないか調べましょう
パーサーがPCに入ってないとか?
コマンドプロンプトからパターンファイルを作成する方法があるけど
何千枚もOK画像とNG画像を作るからすげー時間かかった
バッチとかで実行できないかな?
>>906 createsamples.exeを使うならリファレンスなどに目を通す必要ありかも
909 :
デフォルトの名無しさん:2008/11/22(土) 00:40:59
>>904 cvHoughCircles()←この関数は使ったことないが(理論上)できるはず
ただし、円検出に適したエッジの鮮鋭化&2値化が行われていることが条件
cvSobel()だとX/Y軸に沿った直線しか鮮鋭化しないからcvLaplacian()が有望かも
>>908 一般的ってなんだよ。
XMLパーサーはOpenCVが持ってるし、createsamplesの入力は独自のテキスト形式だ。
>>905>>909 cvHoughCircles()はどうも一つの円を見つけ出すとその円の中に中心点が
出来る別の円は投票しないようになっている感じがする。
もう一度ちゃんと知らべてみます。
>>911 ちゃんと投票はしてるよ。
円を決定するプロセスよりも、投票のプロセスが前にあるんだからあたりまえだけど。
でも、OpenCVの関数の場合、
最初に中心座標を決定して、次に半径を決めてるので
>>911の想像とは少し違うかもしれないけど。
んで、
同じ中心をもつ(ように見なせる)円が複数ある場合は(たいていの場合そうだけど)、
その円に対する投票数の密度(に比例する値)をつかって、それがデカイ方を適切な円とみなしてる。
同心円を検出したいなら、自分で関数書くのが手っ取り早いとおも。
>>905>>909が言うみたいに、Hough変換の理論上は、もちろん検出できるんだけど。
913 :
デフォルトの名無しさん:2008/11/22(土) 18:14:51
8bit符号なし整数値のIplImage画素値を
32bit浮動小数点のcvMatに移したいのですが、
全画素ループしてひとつひとつキャストするしかないのでしょうか?
ConvertScaleで出来ない?
915 :
デフォルトの名無しさん:2008/11/23(日) 10:15:56
>>912 ありがとう。
てっきり密度の閾値を使って投票処理を軽くしていると勝手に想像してた。
開票の時に同心円を省いてるんですね。
そうですね、自分で書いてみようと思う。
cvHoughCircles()は検出すべき円の最小半径と最大半径の
パラメーターがちゃんと働いてないし。
OpenCVのcvNamedWindow関数で生成されたウィンドウを、子ウィンドウ化して、
親ウィンドウからMoveWindowで整列させたら、とんでもない座標に動いちゃう。
(しかも、毎回座標が違う?)
開発環境は、VC++2005で、OSはWinXPsp3。
コードの概要を↓に載せるけど、何が悪いか分かる人いますか??
char *szTitle[]={"カメラ1","カメラ2","カメラ3","カメラ4"};
int i;
HWND hWnd;
for(i=0; i<4; i++){
cvNamedWindow(szTitle[i], CV_WINDOW_AUTOSIZE);
if( !(hWnd = FindWindowA(NULL,szTitle[i])) ){
//〜〜エラー処理〜〜
}
else{
SetWindowLong(hWnd,GWL_STYLE,WS_CHILD | WS_VISIBLE | WS_CAPTION);
SetParent(hWnd, hParent);
MoveWindow(hWnd, .... );
}
}
917 :
デフォルトの名無しさん:2008/11/26(水) 19:37:33
現在、2値化処理を自分で実装して効果をOpenCVと比較しています
自分でCanny処理を実装したいのですが、
cvCanny()ってどんな処理しているんですか?
ググってもなかなか引っかかりません
ご存知の方 Cannyアルゴリズムについて教えてください
数式などが載っているサイトなどを教えて頂けると最高です
画像処理ハンドブックとかに載ってるだろ。
>>917 James R. Parker : Algorithms for Image Processing and Computer Vision
に解説+ソースつきで載っていた気がする。
DLL再配布が面倒なのでスタティックリンクしたいんですが、
何か問題あるでしょうか。
ライセンス表記さえちゃんとしていれば問題ないですか?
915です。
円のハフ変換を作ってる途中なのだが、何かウンコみたいに遅いw
cvHoughCircles()は何であんなにビュンビュン動くんだろう?
>>923 openってことはソースが公開されてるんですね。
俺がアフォでした。
サンキュ。
>>922 俺はウンコも小便並みの速さで済ませることが出来るぞ
なめんな!!
928 :
デフォルトの名無しさん:2008/11/30(日) 06:31:05
ノートPCについてるカメラを使ってキャプチャした画像をテクスチャにするということをしてます。
で、下のような流れでやってるのですが、★の箇所にSleepやMessageBoxを入れて(環境はVCです)
カメラの起動を待ってあげないとテクスチャが真っ黒になってしまいます。
カメラが起動するまで自動で待つ方法はないでしょうか?
CvCapture* capture = cvCaptureFromCAM(0); // カメラ起動
if (capture) {
// ★ここでカメラの起動を待たないと駄目??
IplImage* frame = cvQueryFrame(capture); // キャプチャ
create_texture(frame);
}
真っ黒だったら起動していないと判定して
一定数読み直すとかじゃダメなの
>> 929
真黒な映像をキャプチャしたい場合もあるじゃないですか!
というのは冗談ですが、もうちょっとこうエレガントな…。
そもそもカメラが起動していないのにどうしてcvQueryFrameが
きちんと値を返すのか理解できないのですが。
# 真っ黒の時のframeの値はNULLではないようです。
>>930 そのノートPCの奴がどんなカメラか知らないけど、それってカメラ側の問題じゃないの?
起動はしてるけど、絞りが開ききってないとかの理由で受光が完全じゃない、っていう。
全くの予想だけど、その真っ暗な画像も、常に全部の画素値が00ってわけじゃないのでは?
なにが言いたいかってーと、
カメラの問題だとしたら、カメラが起動したと言い張ってる以上、
プログラム側はそれを信じるしかないので、
結局、最初の数フレームは捨てるとか、そんな方法しかないって事。
>>931 ナルホド…。カメラは「起動してる」わけですね。
誤解してました。
ちなみにPCはVaioのZ90で、カメラというのは液晶の上に付いてるMOTION EYEです。
cvCaptureFromCAMを実行すると少し間をおいてカメラの脇の緑のランプが点くのですが、
ランプが点く前にcvQueryFrameを呼んじゃうと駄目っぽいです。
じゃぁランプが点くまで待てよw
ランプが点くのを検出するために別のカメラを使って、
そのランプが点くのを検出するのに別(ry
結論: カメラが全部悪い
>>928 ちょうどやってみたかったことをやられててワロタ
ほどよくできたら公開してみてください
937 :
298:2008/12/01(月) 04:21:22
シャッターキー(例えばスペースキー)でフレームを取得という使い方をイメージしてたんですが、
結局、カメラはアプリケーションの最初の方であらかじめ起動しておくか、
あるいは何かキーを押したら起動して、起動の確認(シャッターを押すタイミング)は
ユーザーに任せるという感じになりそうです。
// WM_CREATE等の初期化部分でカメラを起動しておく
capture = cvCaptureFromCAM(0);
// WM_DESTROY等の終了部分で解放
cvReleaseCapture(&capture);
// SPACEキーのイベントでフレームを取得してテクスチャ生成
IplImage* frame = cvQueryFrame(capture);
IplImage* image = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 3);
cvFlip(frame, image, 0);
glGenTextures(1, &id);
glBindTexture(GL_TEXTURE_2D, id);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image->width, image->height, 0, GL_BGR_EXT, GL_UNSIGNED_BYTE, image->imageData);
glTexParameterf( 略 );
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, image->width, image->height, GL_BGR_EXT, GL_UNSIGNED_BYTE, image->imageData);
cvReleaseImage(&image);
CreateMatNDの使い方だれか教えてく。
ググってもマニュアルしか引っかからない。
そんなに使い勝手悪いの?
>>938 マニュアルに書いてるままだろ
CvMatND* cvCreateMatND( int dims, const int* sizes, int type );
type型のdims次元sizes[0] x sizes[1] x ... sizes[dims-1]の行列を作る。
dims = n のとき
int sizes[n]={N1, N2, ----, Nn}
*mat = cvCreateMatND( N, &sizes, type)
こんな感じゃないか
小さい画像を回転して、大きい画像に貼り付けるにはどうしたらいいものだろうか.
大きい画像内の貼り付け位置は x,y,width,height,angle で教える。
小さい画像を回転してから貼り付けると余白が出来るので
マスクして元画像を取っておいてとか数ステップ必要か
大きい画像を回転してから貼り付けて元に戻すのは簡単だけど画像が劣化するな
大きい画像内での各ピクセルが小さい画像のどこに対応するか計算して
たぶん小数になるから色は補間して求める、かな。
そうじゃなくて変換の式が知りたいってのなら
アフィン変換とかで検索すると良いかも
>>943 うーん、大きい画像にななめ線を引くだけでもかなりめんどいと思うんだよね。
CvPoint tmp;
int dx = pt[1].x - pt[0].x;
int dy = pt[1].y - pt[0].y;
int abs_dx = abs( dx );
int abs_dy = abs( dy );
int sign_dx = CV_SIGN( dx );
int sign_dy = CV_SIGN( dy );
if( abs_dx > abs_dy ) {
if( pt[0].x > pt[1].x ) {
CV_SWAP( pt[0], pt[1], tmp );
sign_dy *= -1;
}
float step_y = sign_dy * abs_dy / (float)abs_dx;
int x, y; float yy;
for( x = pt[0].x, yy = pt[0].y; x <= pt[1].x; x++,yy += step_y ) {
y = cvRound( yy );
ふんが
}
} else {
…
float step_x = sign_dx * abs_dx / (float)abs_dy;
for( …; y++, x+= step_x ) {
…
}
ふー、やっとでけた。テストはしていない。
で、さらにもう一重ループして矩形を染めるんでしょ?うぼぁ
cvWarpAffine とかあるのに、あれ使い物にならねぇ…
小さい画像を、回転してもはみ出さ無い程度にでかい画像の中心にコピーして、回転してターゲットにマスク付きで張り付ければいいのでは
>>942 >大きい画像を回転してから貼り付けて元に戻すのは簡単だけど画像が劣化するな
まずそもそも回転したらはみ出した分消されちゃうよね?元に戻せないよね。
>>945 それ考えたけど、のろくなるよね?
でかいメモリ確保と、それ全体の回転。
マスク画像も同じ大きさ作って、回転しないといけない。
本来小さい画像サイズのオーダーぐらいですむのに…
cvWarpAffine とかなんではみだしてくれないんだこれ…
なかで座標計算とかいろいろやってるのに再利用できねぇ…
cvFillPoly とかの中では大きい画像での座標取得しているだろうのに、
再利用できねぇす…
>>946 945だけど、回転するためにコピーする先を4chの画像にしとけば、マスクも一緒に回転できんじゃないかな
すごい細長い画像とかじゃなければコピー先もそんなでかいく用意しないですむだろうし
速度重視ならいっそopenGLとかでテクスチャ(ry
949 :
941:2008/12/07(日) 16:39:12
結局自分で書きましたさ。
まず4角だけ回転つーかアフィン変換して、そこから必要な画像サイズを取得。
そっちの画像を基点にループして、
アフィン変換の逆行列から、小さい画像オリジナルの座標を取得、代入。
って関数をまず作って、
小さい画像とマスク画像をアフィン変換したやつを作っておいて、
大きい画像に貼り付けるときも、必要な画像サイズ分だけループして、
その変換した小さい画像を貼り付けるようにした。
cvGetAffineTransform も非常に使いづらいから自分で、
trans_x, trans_y, scale_x, scale_y, angle, shear_x, shear_y
を引数にしてアフィン行列作る関数も書いたし、
こんなどうでもいいユーティリティ作るのに一日費やしてしまった。
どっかに英語で公開してあるから、いつか気になったら
cvPutImageROI.h で検索してみて。
CvMatND で三次元データ作ったときに
3次元 == z な2次元データをとりだすことってできる?
matlab でいう A(:,:,z) みたいな。
できる
>>951 どうやんの?ループ回すとかはなしだぞ。
cvVideoWriter 動かなくない?
出力されたビデオがぶっこわれてる。OpenCV 1.1pre
954 :
sage:2008/12/10(水) 04:18:57
落としたtxt形式の学習データを使用するにはどうすればよいか教えてくださいな。
>>954 それは OpenCV がサポートしている形式なのかい?
>>952 performance.exeの引数に指定する。
CvLoadでCvHaarClassifierCascadeが取得できるはずなのでソース読め。
>>956 performance.cpp は cvLoadHaarClassifierCascade() って関数で、
xml にも directory tree にも対応してる。ただし obsolete。
普通は sample/convert_cascade.c を使ってxml に変換してから
sample/facedetect.c の引数に渡す。
どうやって変換しているのかとか、xml を読んでいるのかはソースを読めばわかる。
>>957 ってーことは cvGetRows/Cols みたいにアドレスだけ参照するようには
出来ず、コピーせざるを得ないのかな。
あと、4次元配列で3次元をインデックス指定したら、メモリ続いてないからループになる?
>>953とは関係ないと思うけど、
1.1preのLinuxVideo周り(cvcap_ffmpeg.cpp)はだめだめ。
最近のffmpegにさっぱり対応できてない。
1.0は適時パッチ当ててしのいでたけど、もう面倒で諦めた。
>>963 それはただの1要素へのアクセスじゃ内k?
CvMat のタイプによらず、同様の方法で
要素の値を得ることってできる?
あ、ちなみに全部 double にぶっこみたい
cvGet*D か。
ん?でも cvGet*D ってのろいのか?
ループの中で使用したら、毎回タイプチェックすることになる?
うーむ
だれか OpenCV のマクロ関数の一覧、解説つくって〜
つ 言いだしっぺの法則
なぜに cvConvertScale はチャネルごとにできないんだ!
cvAddS の Mul 版のような、引数が CvScalar の cvMulS はないのか!
要するに需要が少ないからっしょ。
自作ガンガレ。
001100
001100
111111
001100
001100
のような2値画像から
001000
001000
100000
001000
001000
のように左側のエッジだけ取り出す関数ないでしょうか。
>>973 -101
-101
-101
みたいなカーネル定義してフィルタ処理で良くね?
>>974 レスありがとうございます。
000000
001001
001001
000000
の場合
000000
001000
001000
000000
となりますでしょうか。
画像全体で左から1番目の画素のみ1にしたいのですが・・・
>>975 それは単純に1行ごとに左から値を見ていって最初に出てきた0以外の数字以外無視すればいいじゃないか?
いまいち、左側のエッジを残す理由がわからん
>>976 ラインレーザーで形状を切り出す実験してます。
レーザーの左端を検出したかったので、
普通に左からスキャンしてやってみます。
978 :
デフォルトの名無しさん:2008/12/23(火) 23:06:47
たすかに。何が増えたんだっけ
次スレの季節