2012年09月プログラム94: 【Intel】OpenCV総合スレ 4画素目【画像処理】 (323)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
Pythonのお勉強 Part47 (755)
★初心者にVisual C++を教えるスレ★ Part38 (630)
くだすれC++Builder(超初心者用)その5 (328)
NullPointerExceptionを「ぬるぽ」と呼ぶスレ6 (378)
★★ Java の宿題ここで答えます Part 72 ★★ (405)
Embarcadero RAD Studio/Delphi/C++Builder その3 (323)
【Intel】OpenCV総合スレ 4画素目【画像処理】
1 :2012/02/12 〜 最終レス :2012/11/01 OpenCVはインテルが公開したオープンソースのコンピュータービジョンライブラリ。 現在はWillowGateが開発している。 本家 http://opencv.willowgarage.com/wiki/ 日本語資料など http://opencv.jp/
2 : 2ならOpenCVは俺の嫁
3 : >>2 の面倒はしっかりと我々WidowGateが見させて頂きます。
4 : これは>>1 を応援する
5 : Haar-LikeじゃなくてLBPで顔検出したいんですがどこかにコピペしてパス通すだけのサンプルコードないですかね? cv::MatじゃなくてIplImage使ってるやつでお願いします
6 : コーナー検出の処理時間をCore2 E8500、VGAサイズで計測してみたんだが、 FAST 1〜2msec Harris 105msec GoodFeatureTotrack(固有値) 105msec ってハリスとGF2Tの実装遅すぎじゃね?
7 : >>5 cv::Matだけど opencv/samples/c/facedetect.cpp でええやろ
8 : >>7 レスありがとうございます それ訳が分からなかったんで、cook-bookのコード使ったらとりあえず動いたけど C++はよく分からないから出来ればCでのサンプルでお願いします
9 : >>8 まずお前が10年間C++を勉強すれば済む話だろ
10 : それ言われたらそれまでなんだけどね C++でしかサポートしない関数とかもあるらしいし覚えるしかないんかな これリファレンスとか微妙に見づらいし マイクロソフトかGoogleあたりが最強の画像処理ライブラリ作ってくれんかな
11 : >>10 勉強する気がないやつは何使っても一緒だろ
12 : >>10 お前が見やすいリファレンスを書き上げればいいんじゃね? ほかの言語用にラッパーライブラリを作り上げればいいんじゃね?
13 : >>10 金出せば色々あるけど、とりあえず安い部類の画像処理ライブラリ。 TEO http://teo.sourceforge.jp/ IPP \26,250 http://www.xlsoft.com/jp/products/intel/perflib/ipp/index.html $199 http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-purchase/
14 : すみません質問です OpenCV2.2のサンプルプログラムであるgrabcut.cppを見ているのですが 最初に与えた前景・背景情報を別の画像に用いる場合にはどの辺りを書き得ればいいのでしょうか やりたいことの例としては 固定カメラの画像列を入力として,最初の画像で人を前景として指定 その後の画像では自動で人っぽいところを切り抜いていくといった感じにしたいと思っています 人は画面外に出ず左右に揺れる程度です
15 : そいつはコマンドラインで動くプログラムだから、 string filename = argv[1]; を string filename = "ファイル名.jpg"; みたいにすればいいんじゃないか?
16 : >>15 とりあえずコードいじろうとしてたんですが今現在 imreadが変?っぽくて困ってます string filename = "baboon.jpg"; Mat image = imread(filename,1); で上手く読み込んでくれてないみたいで IplImage *img = cvLoadImage("baboon.jpg"); は普通に動くのでパスは通ってそうなんですが OpenCV入れなおしてみるのが早いでしょうか?
17 : >>13 TEOなんてスゲー久しぶりに見たな まだ使ってる人なんて誰もいないだろ
18 : >>16 Visual Studio on Windows 環境の話しなら, ・使ってるライブラリのバージョンが正しいか (2008用のライブラリを2010で使ったりしてないか,等) ・Debug / Release の指定とリンクしてるライブラリは正しいか の2点をまず確認.
19 : >>17 使っているのは学生の実験や研究くらいだろ、昔も今も TEOのEってどこだっけ?Tsukuba, Okayamaは分かるんだが
20 : EDOだったはず
21 : ついカッとなって変なこと書きこんでごめんね いろいろ調べたけど今現在実在する環境ではOpenCVが最善ぽい
22 : 今更C++みたいなクソ言語使わせるのは止めろよ JavaかPerlかRuby当たりにしてくれ
23 : 負けず劣らずの糞言語あげんなよw
24 : >>13 IPPはOpenCVと一緒に使うものだろう
25 : 魚眼レンズで取った写真の復元って出来たっけか
26 : >>25 カメラキャリブレーションと3次元再構成 opencv v2.1 documentation http://opencv.jp/opencv-2.1/cpp/camera_calibration_and_3d_reconstruction.html できるとしたらこのへんかなぁ。3次元再構成じゃなくてカメラキャリブレーションのほうね。 魚眼レンズを通したチェスボード格子点の認識がうまくいくかどうかは知らないけど。
27 : 2.2以降は歪みモデルが拡張されて、魚眼のような広角レンズでもキャリブの精度は上がってるはずだよ。 使う関数は一緒だけど。 http://pr.willowgarage.com/wiki/OpenCVMeetingNotes/Minutes%202010-09-07
28 : 魚眼レンズの画像補正の実験中に自分の頭頂部が薄くなっていることに気付いて驚いた。
29 : リアルタイムで髪をふさふさに補正するビデオチャット機能の実装が急務
30 : ヅラ被ればええやろ
31 : ロマンが無いだろ
32 : ヅラ職人のロマンを馬鹿にしてんのか
33 : >>32 夢とロマンを混同するな。ズラは夢だ。
34 : ヅラの話題になった途端に、近年稀に見る盛り上がりようだな。 おまえら…
35 : リアルタイムで毛で顔全体を隠すのなら作ってもいいぞw チャット目的ならdirectshowフィルタで実装し、メリット値(フィルタ選択優先度)最大で使ってもらうのがいいかな。 汚物が隠れて相手も喜ぶな。 ハゲ頭は特徴検出難しいからおとなしくズラにしてください。
36 : haarcascade でトレーニングに再配布不可の画像を使った場合、 xml に画像の情報が少し含まれると思いますが その場合はプログラムも再配布不可になりますか?
37 : >>36 復元できないし再配布には当たらないと思うけど 利用規約があるのなら反するかもな
38 : xmlのデータを見て、あの画像使ったな、って分かっちゃうことあるのかな?
39 : 無理でしょう 相当情報を削減してるし、不可逆だろう
40 : haartrainingを実行しているのですが、 +----+----+-+---------+---------+---------+---------+ | N |%SMP|F| ST.THR | HR | FA | EXP. ERR| +----+----+-+---------+---------+---------+---------+ ここまで表示され1時間ほど経過しても進む様子がありません CPUの使用率は高いので何か作業をしているようにも見えますが、 このまま放置しておけば学習は進むのでしょうか?
41 : 画像の枚数によっては数日以上かかる
42 : 動画ファイルの指定フレームに画像を挿入する関数ってあります? cvCreateVideoWriterで新たに動画ファイル作って元動画から1フレームずつコピって、 挿入するフレームが来たら画像入れて、また元動画から次のフレームを貼りつけてくしか無いのでしょうか?
43 : そうするしかないだろうな 挿入なんて関数はない
44 : やっぱり無いですよね。 ありがとうございました。
45 : 赤や青やオレンジなど様々な色のピンポン玉が複数バラバラにあります。画像上の形・大きさはほぼ同じです。 赤っぽいピンポン玉がどこにいくつあるか、 オレンジっぽいピンポン玉がどこにいくつあるか、 など取得するにはどのように処理するのが最適でしょうか? 素直にテンプレートマッOすると、輝度で判断するのでオレンジと黄色の区別があまりつきませんでした。
46 : 色が違うピンポン玉なのに色を見ない理由が知りたい。 円検出、円内の色判定が素直なやり方じゃないかな?
47 : >>45 とりあえずボールっぽいのだけ全部列挙して 後で色の近さで赤や青やオレンジ(あらかじめ色のテーブルがある?)に量子化して 指定された色でフィルタすればいいのでは
48 : >>45 「素直にテンプレートマッO」というけど具体的にはどんな手法/類似度を使った?
49 : まず、ピンポン玉に重なりがあるのかどうか
50 : ピンポン玉の画像を用意して、テンプレートマッチして、 結果の画像の輝度を見ました。 ピンポン玉に重なりはあります。 なので、 左にオレンジの玉(A)、真ん中に黄色の玉(B)、(B)に半分重なった黄色の玉(C) の画像に対して、用意していた黄色のピンポン玉の画像でテンプレートマッチすると 輝度がA=0.8、B=0.99、C=0.8 くらいになって、輝度で調べるとA,Cの区別がつきません。
51 : >>50 素朴な疑問なんだけど、重なったピンポン玉の奥の方は見つける必要あるの? テンプレートマッOじゃ厳しいと思うんだけど。 で、肝心な内容に触れると、 グレースケールのテンプレートマッOしかわからないなら、R,G,Bの3色でそれぞれグレースケール作れば? 3回マッOさせて色判断すればいいと思うけど出来ない理由があるんかいな
52 : 色なのにメイドって
53 : WindROOFで似たようなことやってるの見たような 重なった球体も予測してカウントするやつ
54 : >>45 先にRGB若しくはHSVでフィルターをかけた画像を準備して 抽出すればOKじゃないですか?
55 : >>51 いやカラー画像とグレースケール画像両方用意して グレースケールで位置みつけた後にカラー側を参照して色を見ればいいだろ
56 : おすすめのopencvの本を教えて下さい。
57 : OpenCV 2 プログラミングブック
58 : >>54 すいません、どういった手順かよくわかりません。 >>53 しらべてみます!ありがとうございます。 >>55 それはよさそうですね。 参照して色を見る時、1ピクセルだけだと荒い画像なら黒い点とかになっちゃうので 半径nピクセルくらいの色を平均する形だと思うのですが、 こういった曖昧?な比較は、ブラーフィルタでもかけて小さなゴミを消してから その範囲の色の平均値(単純平均ではなく偏差かな)で比べるのがベターでしょうか?
59 : >>58 そのへんは撮影環境と欲しい精度で相談して決めたほうがいいと思う。 単純にはぼかしていくつかサンプリングして平均を取って あらかじめある?色リストとの距離を計算して一番近い色を選ぶ。 色空間も影響するのでRGBでうまくいかなければCIELABでやってみるとか。 ボールが重なっている場合は、クラスタリングしてから領域を選ぶとか。
60 : とりあえず、ハフ変換まで勉強したぜ。 学会発表目指して研究やるぜ。 by大学4年
61 : >>58 画像をR,G,Bに分解して R,G,Bの閾値でルックアップテーブルを作ってフィルタリングします。 R,G,Bの画像をANDすれば2値化、若しくはグレー画像ができるので、 その画像からパターンマッOすればよろし。
62 : RGBの画像をandして、オレンジと黄色は別パターンになるのか?
63 : 何言ってるのか分からないし気にしないほうがいい
64 : オレンジ R=252,G=136,B=50 イエロー R=252,G=252,B=50 一度、RGB(HSV)分解してからフィルターかけてからcvANDすれば 当然結果は変化します。 http://chihara.naist.jp/opencv/?%BF%A7%BE%F0%CA%F3%A4%CB%A4%E8%A4%EB%CE%CE%B0%E8%C3%EA%BD%D0 http://wiki.livedoor.jp/mikk_ni3_92/d/%A5%EB%A5%C3%A5%AF%A5%A2%A5%C3%A5%D7%A5%C6%A1%BC%A5%D6%A5%EB でわかんなければ、諦めろ
65 : >>63
66 : ルックアップテーブル、フィルタリング辺りを翻訳最適化して書き直してやんよ。 >>64 は何を書きたいかと言うと RGBの255色×255色×255色のを1600万色を減色して255段階の色にしてグレースケール画像を作る この画像と同じように減色された元画素をパターンマッOかければオレンジと黄色わかる。 で、明るさ変化考慮不足なんで私も>>63 と同じ意見
67 : 僕の解釈は、RGBそれぞれのチャンネルで2値化すると 各色の領域を抽出した画像ができるので それに対してテンプレートマッOを行う 同じ位置でRとGが1でBが0ならYellowだと分かる というものだったけど 詳細を気にかけるほどよい方法とは思えなかった
68 : >>67 最初はそうかなって思ったんだけど >>61 を読んだらand取ってからパターンマッOと書いてあった。 だから66の解釈のが近い 詳細を気にかけて時間を無駄にしたようだ
69 : >>66 >>67 cvSprit してRGBかHSVに分解 256階調1chの画像が3つできる。 夫々にcvLut使って閾値で2値化orグレイスケール化する。 当然閾値以外は0に。 で、この3つの画像をAndしたらどうなる? まぁ、マスクで隠したり色々手法はあるしこの方法は演算多い からリアルタイム処理には向かんかもしれんが、フルカラーで 判別できるぞ? これでも理解できない?
70 : あと、先にtemplateかけて内部の色を判別する方法もあるけど、 templateで取りこぼしたり、対象が多くなりすぎたり、内包した 色の平均を取るとか面倒な処理が出るんから、色は先に消してし まったほうが処理は早いな。 まぁ、なんにしたって先に画像をグレースケールに変換したほう が処理が楽だ。
71 : ボール検出をどうやるかって問題で ボールの内側と外側で輝度だけ違う場合や色相だけ違う場合などもあるわけで 色を気にせず位置だけを先に見つけてそのあとに色を参照するほうが ずっといいと思うけどな 分解とか減色とか言ってる時点でよく分からない前提を置いててまともじゃないだろ
72 : 大学で配布されたファイルをVS2008で動かしてもエラーが起こるなぜでしょう・・・ http://uproda.2ch-library.com/lib524530.cpp.shtml カメラはelecom ucam-H1S30MSV PCはwin7 pro 64bit キーは基本で
73 : どんなエラーなの?どこでいつエラーになるの。
74 : >>73 実行まではできます。ウィンドウが作られて少し止まった後に OpenCV GUI Error Handler in function cvCvtColor, .\cvcolor.cpp(2255) Press "Abort" to terminate application. Press "Retry" to debug(if the app is running under debugger). Press "ignore" to continue (this is not safe). ってのがでます
75 : >>74 たぶんframeImageのサイズが640,480じゃないんじゃね?
76 : >>75 ありがとうございます。 できればサイズをどの値に設定すればいいか教えていただけるとうれしいです。
77 : >>76 frameImageのwidthとheightを出力してみてやってもいいし、 cvGetCapturePropertyでcaptureのwidthとheight取ってもいいし
78 : >>77 double width = cvGetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH); double height = cvGetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT); //グレイスケール用の宣言 char windowName1[] = "処理後1"; IplImage *resultImage1=cvCreateImage(cvSize(width,height), IPL_DEPTH_8U,1); という感じに設定してみましたがエラーがでました openCVとC++については超初心者なもんでよくわからないです・・・
79 : >>72 のDLキーってなに?
80 : >>79 kihonです。 IplImage *resultImage1=cvCreateImage(cvSize(640,480), IPL_DEPTH_8U,1); を IplImage *resultImage1=cvCreateImage(cvGetSize(frameImage), IPL_DEPTH_8U,1);にして行を変えたらiplImageの宣言の位置を変えたら解決しました。 ありがとうございました!
81 : 日本語リファレンスはOpenCV2.2までしか無いんですか?
82 : >>91 はい 最近勢いがあるから追いつてもすぐ次が出て無駄になるのだろう
83 : OpenCV2.4とVC++2010を使っているのですがSURF関連のプログラムになると動かなくなります。 サンプルに入っているfind_obj.cppは大丈夫なのですがttp://fry.no.coocan.jp/lecture/CPP/findobj.cpp を試してみたらコンパイルは通りますが実行すると OpenCV Error : The function/feature is not implemented (OpenCV was built without SURF support) in unknown function, file C:\slave\WinInstallerMegaPack\src\opencv\modules\legacy\src\features2d.cpp, line77 というエラーが出ます…なぜでしょうか
84 : これ以上ないくらい明確に書いてあるじゃん
85 : いまopencv2.1をarmv7でコンパイルしているのですが、cxmat.hppのabs関数のreturnでエラーが発生して困っています。 「No viable conversion 〜」というエラーです。 対処法などお心当たりありましたらよろしくお願いします。
86 : >>85 自己完結しました。 戻り値の型とreturnさせている変数の型が違っていたのが原因でエラーになっていたようです。 windowsでは同じソースでコンパイルできたので、根本的な解決にはならない気がしますが。。
87 : >>84 features2d.cppの77行目で定義されているsurfという変数がemptyであるということは自力で分かったのですが どうしたらこの表示が出ないように解決できるのか教えていただけないでしょうか 先週からOpenCVを使い始めたばかりでまったくわかりません
88 : なお画像自体はちゃんと読み込まれているのは確認済みです。 後だしばかりですみません…
89 : >>83 2.4まだ手を出してないけど、 The function/feature is not implemented (OpenCV was built without SURF support) ってあるから「OpenCV 2.4 SURF」でググったらなんか2.4から変わったみたいよ
90 : SURFとSIFTは特許の問題があるのでnonfreeに移動したって聞いたぞ ビルド時にオプションで指定しないとビルドされてないのでは
91 : >>89 >>90 遅くなりましたがnonfree関係を調べなおしてmainの冒頭に cv::initModule_nonfree();を追加したら動くようになりました! そしたら次はExtractSURFするとカメラでキャプチャした画像だけに対してエラーが出るというバグが… とにかくありがとうございます!
92 : exactsurfのバグは昔からあった。解像度小さくないかい?
93 : SURFのバグは2.2くらいで修正されたような
94 : エラーメッセージをみたらincorrect size of input array () in unknown functionで datastructs.cppの372行目に問題があるようなのですが、createseqもしてないし storageも最後に解放していますし、子ストレージを作ってみたりもしましたが変わらずどうすればよいのかまったくお手上げです… >>92 カメラデフォの640×480ですがまずいでしょうか?
95 : >>94 場所までわかってるなら エラー出ないと時と出るときで何が違うのか見たら
96 : バージョン:OpenCV2.4 httpでgetしてメモリ上に展開されたjpgをcv::Mat形式で読み込みたいです。 jpgがそのまま展開されたchar*を与えるとポインタ引数、参照引数もしくは返り値としてcv::Matを返してくれる関数などありませんか? ない場合はどのように実装すればいいですか? よろしくお願いします。
97 : >>96 一回ファイルに書きだしちゃえば楽かな
98 : >>97 実行していませんが最終手段として考えています。 問題はいちいちHDDを動かす必要があるので繰り返し実行すると遅さが目立ちそうです。 秒間10回は走らせたいので。
99 : >>98 そっか,じゃあメモリ上のストリームを流し込むかjpgデコードを直でやるかだね
100 : >>98 HTTPでGETするのに比べればHDDへのアクセスなんて誤差レベルだと思うが…
101 : 本来ディスクアクセスなしでできる・できそうなことを、使える道具の制限で ディスクアクセス必須になるのは確かに気持ち悪いね。 常時稼働するタイプのプログラムだとHDDの寿命が…とか考えちゃうし。 ちょうどメモリ上に展開されたbmp(データが'B','M','P'から始まるビットマップファイルそのもの)に対して 同じようなことをしたいと思ってる。こっちは幸いデコードが不要なのでCreateImageHeader()で どうこうするかヘッダを読めばなんとかなりそうだけど、JPEGはわかりませんごめんなさい役に立てなくて。
102 : なぜこのページを見ないのだ 画像をメモリ上でエンコード/デコードする http://opencv.jp/cookbook/opencv_io.html#id9
103 : imdecodeでできるだろ
104 : クローラーなら画像捨てずに持っておいたほうがやり直したくなった時に楽だぞ
105 : >>102-103 おおありがとうございます!便利そうですねimdecode()!
106 : >>100 そうですね。 ローカルネットで通信するので高速なのですがHDD読み書き速度と比べるとやはりとても遅かったです。 一旦ファイルに落としこんでからimread()で読みこむことにします。 幼稚な質問に答えていただきありがとうございました。
107 : おっと再読み込みするの忘れてた。 >>101-103 なんと解決策が! imdecodeはimencodeでメモリに読み込んだデータしか適用できないのだと思っていました。 Matをはさむと使えるのですね。感動しました。 ありがとうございます。
108 : ネットワーク上のmjpegファイルをOpenCVでUSBのWebカメラみたいにしてフレーム取る方法ありますか? ちなみにNIC付きのLAN接続できるカメラを使っています。
109 : OpenCVで人と車や人とテーブルなど、複数種類のオブジェクトを検出する検出器は作れますか?
110 : 頑張れば何でも作れる
111 : opencvはただの部品だから自分したいで作れるし作れない。 自分がつかいたい部品があるかどうかは本読んで調べてね
112 : 単純に複数の検出器を用意して、順に読み込ませればいいだけでした 失礼しました
113 : webカメラを使いUSTREAMで配信しているものをRTMPDUMPでflvファイルにしOpenCVで吸い取りたいのですが, OpenCVでどのように記述すれば出来るのでしょうか?
114 : もう少し詳しく カメラでディスプレイを映して録画するってこと? 何したいのかわからないし、RTMPなんとかがわからん。
115 : うーん。全然意味わからん。 ユーストリームをカメラで配信するのと普通に動画を配信するのではフォーマットがなんか変わるの? Opencvはどこで使いたいんだ? flvにしたデータを読みこむのにつかいたいの?ストリームを制御するのにつかいたいの?
116 : openCV2.4.1もしくは2.4のpython用リファレンスってありますか? 検索しても2.1のしか出てこないのですが
117 : >>116 http://opencv.willowgarage.com/wiki/ の 「Online documentation/reference manual (C++/Python/C). 」を見てみて。 C++/Python/C を全部、1つのマニュアル(以下のサイト)に併記しているよ。 http://docs.opencv.org/
118 : 画用紙にテレホンカードを載せて撮影した写真から テレホンカードだけを抜き出したいんだけど どういう方針で抜き出せばいいのかよくわからない まず何をすればいいかな ズボンはすでに脱いだ
119 : 二値化して輪郭だしてそれが納まる矩形を求めて傾ければいいの?
120 : ズボンは畳んだか? カメラとテレカの距離固定ならエッジ抽出してハフ変換なんてどうだろう? 外クケイが同じ大きさなんでわかりやすい。 あとは固定色を透過させるクロマキーは?
121 : 制約条件をどの程度付けられるかが鍵なわけで、それを書いてくれないと 答えにくいんだな
122 : 画像紙が自分で選べるなら色付けて抜き出すだけだな
123 : それこそ光板を画用紙がわりにするとグッド。 光板は回斥しにくいledね。 高い装置になるががんがれ
124 : 回折の typo?
125 : >>118 テレカの切り抜き画像が欲しいだけと仮定して話すよ。 カメラと画用紙、テレカの位置を固定する。 そしたら画像内のテレカのCvRectを決められるから、 後は片っ端から読んでいけば良いよね ・CvRectは、カメラ出力窓に、矩形を表示させて(cvRectangle) 上下キーで決められるようにすればおk ・トリミングはこれ見れ http://okwave.jp/qa/q5479021.html
126 : 同じサイズのグレースケール画像2種類の輝度値をそのまま差分にしたいのですが、 この場合、用いるのはaddなのでしょうか?
127 : >>126 何がしたいのかよく分からないのですが、 2つの画像をHSVに変換(cvCvtColor)して、Vのみの画像を抽出(cvSplit) その2つのVの画像で輝度値の差分を取(cvAbsDiff)ってから、 またHとSを合体(cvMerge)させてやればいいんじゃないでしょうか
128 : >>126 なんで差分なのに足すの?
129 : 待て待て、マイナスの符号を付けてから足すと言いたかったのかもしれん。
130 : 何をしたいかわかってないみたいだし、もう少し様子をみよう
131 : iplImageから輝度を直接取り出して計算汁
132 : >>126 エスパーすると、2つの画像を「加算レイヤー」みたいに合成したいので それの演算は「加算」なんだから「add」でいいんですか?という質問でしょうか?
133 : ベルファイアに当て逃げされました! 防犯カメラに写ってるけどナンバーが光で分からないんです、どなたか画像解析出来ないでしょうか? 宜しくお願いします! http://beebee2see.appspot.com/i/azuYw7jZBgw.jpg http://beebee2see.appspot.com/i/azuYxLjZBgw.jpg
134 : >>133 いくら出すの?
135 : 59−63だな
136 : >>135 ごくろうさん ってか
137 : 画像処理スレの59-63ってことだな
138 : opencvで 『CvCapture* capture = cvCaptureFromAVI("sample.avi");』 というように動画を読み込もうと思ったんですが,ビルドはできるのですが,実行すると 『0x00905a4d でハンドルされていない例外が発生しました: 0xC0000005: Access violation』 というエラーが発生してしまいます。 いろいろ調べて,Cvcapture構造体captureを不正なアドレスに確保しようとしている?らしいということはわかったのですが,対処法がわかりません. どなたか分かる人教えていただきたいのですが. ちなみにopencvは2.2でmicrosoft visual c++2010を用いています.
139 : すみませんエラーメッセージは test.exe の 0x00905a4d で初回の例外が発生しました: 0xC0000005: Access violation test.exe の 0x00905a4d でハンドルされていない例外が発生しました: 0xC0000005: Access violation プログラム '[3632] test.exe: ネイティブ' はコード 0 (0x0) で終了しました。 でした.
140 : >>138 aviのパスが違うかcodecがないんじゃね?
141 : >>140 お返事ありがとうございます。 パスはあっています.作業フォルダに直においてますし,画像は同じような指定でできました. codecについては自信がないです. 動画プレイヤー(GOMPLAYER)では再生できているのですがダメなのでしょうか. あとサンプル動画はmicrosoftのHP↓ http://support.microsoft.com/kb/119383/ja のなかのSAMPLE.AVIを(ファイル名を小文字にして)使っているので,とくに大きすぎるとかは無いと思うのですが.
142 : 同じくOpenCVで無圧縮の(=codecの問題が起きにくい)aviを作れるから先に作ってそれで試すとか? 141の書き方だと、俺視点でまだパスの疑いが晴れたわけじゃないんだよな…俺140じゃないけどね。 cvCaptureFromAVI("samprya.avi")に変えてエラーの内容が変わればいいけど。
143 : ファイル名変えても同じエラーでした。 ご指摘通り無圧縮のaviファイルを作るのを調べながら先にやってみようと思います. とりあえず今のところいろいろ勉強してる段階なので,また何かあったら個々でお聞きするかもしれません。 その時はよろしくお願いします。
144 : いや、同じエラーならそれって…ん? わかりにくかったかもしれないけど、変えるのはソースコードだけで、 実際のファイルをrenameしちゃダメだよ?わざとfile not foundを出したかったわけで。 まあ確認をどうするかってだけで実際可能性は低いと思うし別にいいけど。
145 : デバッグの仕方が分かんないのか、大変だね
146 : >>143 file がopenできなかったらcvCaptureFromAVIはNULLを返すはずだけどチェックしてる?
147 : >>145 掲示板のやり取りじゃ仮説を立ててこれじゃね?って言ったほうが(俺の)手間は少ないんだよね。 にしても無圧縮avi作るとこからやるのは流石に遠回り過ぎたね。Visual Studioでやってるならデバッガで追ってちょ。おやすみ。
148 : >>147 エスパーじゃないと無理か
149 : >>144 こちらこそ書き方が悪かったのですが,ソースコードの方だけファイル名を変えてやりました。 今mainの中を CvCapture* capture = NULL; if(NULL==(capture = cvCaptureFromAVI("sample.avi"))){ fprintf(stderr,"指定のaviファイルが見つかりませんでした."); return -1; } だけにして実行しているのですがそれでも>>139 のエラーが出ます。 ちなみにずっとリリースモードでやってます。なぜかデバッグモードだとリリースで実行できるプログラムもエラーが出てしまうので。 まあそれも問題なのですが。
150 : 俺はAVIファイルでもcvCaptureFromFile使ってるなぁ
151 : cvCaptureFromFileでも同じエラーが出ます。
152 : >>141 の画像、AVIだけど圧縮してあるな
153 : で?
154 : まず10年間C++を勉強しろと何度も言ってるだろ
155 : >>138 2.2.0使ってるんだったら、これとか違う? ttp://stackoverflow.com/questions/3889373/opencv-crashes-trying-to-read-a-video-with-release-build このバグはFixしてるみたいだし最新版のOpenCV使ってみたら
156 : >>155 なんかこれっぽいですね。 ありがとうございます。最新版でやってみようと思います。 お騒がせしてすみませんでした。
157 : どうみても素人だけどわざわざ2.2なんてダウンロードしたんかね。 ビデオ読み込みのエラーは自前でビルドすると治ることが多いと思う。
158 : たぶんaviの仕様もOpenCVの実装もわからんと質問してるような
159 : Adult Video Interface
160 : aviの仕様もOpenCVの実装もわからんと回答してましたすんませんすんません。 今のところ俺はcameraやaviのin/outで不自由なく使えてるし、 そういうのを知らなくても使えるってのがOpenCVのいい面の一つだと思ってます。 今回の流れで質問者にaviの仕様わかっとけOpenCVの実装わかっとけっていうのはなんか違うような
161 : >>160 デバッグできないだろうと思っただけだよ
162 : >>161 そうでしたか、ごめんなさい。デバッグのしかたを(もしまだなら)覚えたほうがいいというのには賛成です。
163 : 知らなくても使えるけど、知らないと躓いた時に対処方法どころか質問の仕方すらわからんからなぁ
164 : どうせ2chの過疎スレなんだし、 知らない人が質問したり回答したりして、ドタバタ楽しくやればいいよ
165 : >>2 です 僕の嫁は大活躍してるようですね
166 : >>160 そう思うなら動かない時点で諦めなさい ビデオ関連で動かすための方法は色々あるけど、君には負担が重すぎる
167 : >>166 これまでのやりとりの読解は君には負担が重すぎたようだ
168 : 一応言うと167を書いた俺は>>160 ね。
169 : おまえがどれかなんておまえ以外知るわけねーだろ という前提で話をしろ
170 : こんにちは. Visual Studio 2010を用いたデバッグ方法について質問です. OpenCVを利用したプログラムでエラーが発生すると,時々「呼び出し履歴」に十分な情報が出ず,不便に思っています. 改善することは出来ないでしょうか. 例えば,Debugモードで各種OpenCVのpdbを読んでいる状態で, cv::Mat test = cv::Mat_<double>(10, 10) * cv::Mat_<double>(100, 100); このような行を実行するエラーが起こります. その際に,「呼び出し履歴」にはKernelBase.dllからopencv_core242d.dllの間のスタックしか表示されません. (エラー出力の表示はされます) 呼び出しの順序を辿って上記の行に問題があると知ることが出来れば開発が楽になるのですが,これは無理でしょうか. ぜひアドバイスをお願いします.
171 : ファイルとしてではなく、メモリ上にだけあるjpegファイル(freadで読み込んだような状態)を IplImageで開くにはどうすればいいですか? 一度ファイル出力して読みこめば楽だけど、かっこわるすぎる
172 : >>171 >>103
173 : 顔検出につかうhaarcascade_frontalface_default.xml内の thresholdの値ってやたら小さい値な気がするんですけどどうやって使われているんですか? 明るさの範囲って0〜255ですよね? なぜ-0.03のような小さい値が閾値なんですか?
174 : 関数見ないで言うと x / 255 とかやってると思う
175 : こんにちは androidに使うためlbpcascadeに使うxmlファイルを作ってるんですが stage 20に w, h は 24やってるのに18時間ぐらいかかってもまだ終わってません。 もともとこんなに時間がかかるもんですか? そしてlbpcascade_frontalface.xmlやネットで見たものはtreeが多かったのに なぜか自分が作ったものはstage 一つにtreeも一つしかありませんでした。 やっぱtreeが多くないと認識にくいんでしょうか? アドバイスお願いします。
176 : >>173 面積で割わったりと正規化しないとスケールの変化に対応できないから >>175 まともなデータ量でやれば普通に数日かかる 木の深さは、最近のバージョンには詳しくないのだけど maxDepathが1になってるからじゃないかな あとは分類の複雑さによると思う
177 : >>173 にわかばかりだな マジレスするとintegral image
178 : >>176 ありがとうございます。でもmaxDepthを変えてもサンプルが600個ぐらいだったのが 問題だったのかtreeは一つだけでした。 それにlbpcascade_frontalface.xmlにも<maxDepth>1</maxDepth>となているんです。 他に何かあるんでしょうか
179 : >>178 意図的に増やす意味なんてないと思うけど データに対してboostParamsの条件が満たせるように学習するし 満たしているなら分岐が少ないほうが速いわけで 精度がよくないのなら学習データの作り方が悪いか少ないかLBP Featuresが問題にあっていないのだと思う
180 : >>179 分岐が多ければいいってわけじゃないんですね。 学習データはどう作るのがいいでしょうか? 時計を認識させようとしてるんでpositiveには時計の画像だけを使って negativeには時計とはぜんぜん関係のない画像を使ってるんですが いいサンプルを作るにはこうしろとかあるんですか?
181 : >>180 特徴量が回転不変ではないし学習データの時点ではスケール不変でもないので pos画像内の時計の位置と角度と大きさを揃えるくらいかな あと時計の色と壁の色などの明るさが逆転していると全く違う特徴量になってしまうから 時計の種類と背景の柄と秒針の組み合わせも考えるならデータは多いほうがいい 個人的な感覚だと時計検出はかなり難しいと思う 時計といってもいろいろな形や状態があるし
182 : OpenCVのC++のガワは何か使いたくない CのOpenCVをBoostで包んだ方が安心できるし速度出そう OpenCVのC++でないと使えない機能ってあったかな 機械学習の一部ぐらい?
183 : Cがガワだったりして
184 : 今のOpenCVはC++がメインでCはC++の関数呼んでたような
185 : 今のOpenCVはC++がCのOpenCV関数をきれいに包んでて使いやすいと思うよ。 matとかvideocaptureとか、デストラクタで自動的にリリースしてくれて安心して使える。
186 : 速度もC++とCであまり変わらない?
187 : 実装はC++だからC++のが早いことはあっても遅いことは無いんじゃないかな
188 : 最近のコンパイラはCよりもC++に最適化されてるのかな?
189 : OpenCVの実装見た限り、Matは完全にC++実装で、メンバ関数もインライン化されてたからCと速度はほぼ変わらないと思う。 でもVideoCaptureの実装を見るとCのときのCvCaptureをオーバラップして実装してたから、Cより早くなることはありえない。 でも、インライン関数化されているから、コンパイルの仕方によればCと速度はまったく変わらなくなる。 自分の経験から言えばC++がC言語よりも効率的で速度がでることは絶対にありえない。 それでも、C言語のIplImageとかCvなんたらな関数を使うのはもうやめてほしいな。
190 : matのほうがいいの?
191 : 一部C++実装されずにほっとかれてるのもいい加減統一してほしいね
192 : matのほうがいいです。 メモリリークの心配もない、安全、スマートに書けてコードも見やすくなる。
193 : ありがとう。やっぱMATの方が信頼できるよな。 それに引き換え、TACはダメな組織だ。
194 : OpenCVのリポジトリがsvnからgitに変わっちゃっててびっくりした しかもgitでとってきたコードはコンパイル通らない、2.4.9をgitで取ってきてVisualStudio2010でビルドできた人とかいる?
195 : 2.4.9ってどこでリリースしてるもの?正式?
196 : もちろんBetaだけど、http://code.opencv.org のリポジトリで最新が2.4.9かな
197 : 2.4にしてから回転した画像に対してSURFを使ったfindHomographyをすると、ホモグラフィーが正しく推定出来ない nonfreeに移ったときにSURF実装も変わったのかな?
198 : 動画の2フレーム間での対応点画素座標をカメラ内部行列がI になるように(=正規化カメラ?)直してから cvFindFundamentalMat()に与えることでE行列を求め, そこからフレーム間でのカメラの移動具合(=外部パラメタRとT)を計算しようとしています. Nフレーム間カメラがほぼ同一方向に平行移動している映像でテストしているのですが しかしEからTの方向がフレームによって反転するような現象が起きてしまっています. Tを-Tにしてもエピポーラ拘束の式は満たせるから そのときどきでどっちになるかが変わってしまっているのか? と思っているのですが,だとしたら本当のカメラ移動のTの方向がどっち側だったのかを知ることはできないということなのでしょうか? 例えばカメラが前進しているか後退しているか 等を知りたいのですが…
199 : 無理
200 : 無理ですか… 「Tのスケールは不明」の"スケール"に方向も含まれるってことですかね. だとしたら対応点の3次元座標を計算してみてなんか判断するとかしか無いのかなぁ
201 : スケールはただの絶対値だから方向はどうでもいい。自由にきめられる。
202 : opencv2.4.2+eclipseCDT8.0.2+mingwで開発してる人いますか? コンパイルは通るのにデバッグすると一行目でsegmentation faultになってしまいます…
203 : ソース貼れ
204 : >>203 http://d.hatena.ne.jp/aidiary/20091016/1255696516 これの8. ソースファイルを作成のところのコードです
205 : "C:/OpenCV2.0/samples/c/lena.jpg"が存在しないとか。
206 : カメラでの空間認識をやってるんだけど、2眼だと結局のところ 人と同じような錯視のワナにハマっちゃう。 画像だけじゃ無理なのかなぁ? 3眼にすればいい?
207 : >>206 二眼の錯視について kwsk
208 : 落ち着け!これは孔明の罠だ!
209 : >>207 前後左右が逆でも矛盾しないから
210 : >>205 VC2008では普通に動いたので問題はないと思います
211 : 無償環境だと何が一番いいんだろう とりあえずVCのC++/CLIを使ってるけど
212 : >前後左右が逆でも矛盾しないから の意味がまったくわからんけど、事前情報の設定がおかしい(足りてない)だけじゃ? やろうとしてることもよくわからんけど、カメラ(あるいは対象物)の姿勢を事前情報として (キャリブレーションはするにせよ)使えば一意に求まらないわけがないと思うんだが。
213 : 3次元復元するときにカメラの前に物があるっていう制約条件つければ解決
214 : すみません、質問です createsamples.exeで生成したvecファイル(ポジティブ画像集)の中身の画像を見る方法はないのでしょうか vecファイルを見れるソフトを調べてみたところ、FileViewProというものがあったので 試してみたのですが、案の定中身を見ることはできませんでした 自力ではいくら調べても情報が出ません 生成された画像の出来を見たかったのですが、 やはりそういう事をする必要は無いということなのでしょうか?
215 : >>214 .vecファイルって、独自の形式のような気がする。 createsamples のソースコード、例えば OpenCV 2.4.1 の以下のソースコードを調べるt、 opencv\modules\haartraining\createsamples.cpp opencv\modules\haartraining\cvhaartraining.h opencv\modules\haartraining\cvhaartraining.cpp opencv\modules\haartraining\cvsamples.cpp cvsamples.cpp の以下の関数で *.vec をファイルに書き出してる。 void icvWriteVecHeader( FILE* file, int count, int width, int height ) void icvWriteVecSample( FILE* file, CvArr* sample ) この関数はfwriteでint変数を書き出してるので、このデータは可搬性がない。 (sizeof(int)やバイトオーダーに無頓着な処理を行っている)。 あと、データフォーマットのバージョンを示すようなものも含まれていない。 よって、一般的なアプリケーションやツールが使うようなデータフォーマットに見えない。 だから .vecを読みたいなら、自分でOpenCVを使ってそういうことやるツールを自作するのだと思うよ。
216 : あ、OpenCV 2.4.1 の 「opencv_createsamples.exe -vec ファイル名」で画像として表示できるね。 この処理は cvsample.cpp の cvShowVecSamples() でやってる。
217 : opencv_createsamplesに-showってオプションがある
218 : >>216 ありがとうございます! こちらのサイトにも書いてありました http://wiki.livedoor.jp/hama1010/d/OpenCV%20%B2%E8%C1%FC%A1%A2%BC%CC%BF%BF%C7%A7%BC%B1%A1%A2%B8%A1%BD%D0%A1%A2%A5%E1%A5%E2%C4%A2 該当するオブジェクトに近い画像のみを選択する、なんてことが出来たらいいんですけども・・・
219 : matchTemplateについて質問 OpenCV for PHPっていうの使ってるのでCやC++とは多少違うかもしれないけど ttps://github.com/mgdm/OpenCV-for-PHP (これのリファレンスはどこにも見つからなかった) 結果が画像で返ってくるけど、マッチした部分の座標を配列で得たい場合はどうするのが良いですか? やりたいことはオセロの盤面の画像から、白と黒と置いてない状態のテンプレ画像を比較して 盤面の状態を配列で得ること 他にもっと賢いやり方があればそちらも教えていただけると嬉しいです よろしくお願いします
220 : 2.4.2だけど、imreadでmainの引数を与えると読み込むけど、フルパスをベタ書きするとエラーになるのなんでだ
221 : >>220 \\
222 : このレベルだとそれだけじゃ分からないかもね
223 : OpenCVちゃんとチュッチュしたい
224 : >>221 それならコンパイル通らねーよハゲ
225 : >>224 荒い語調で書いとけばいつでも間違いを指摘してもらえたり解説をもらえたりすると思うなよ?
226 : 背景画像と入力画像をグレースケール化し、cvAbsDiff で差分処理すると、入力画像と背景がかぶってしまうのですが、 被ってしまっている背景画像を取り除くにはどうしたらいいのでしょうか?
227 : >>224 デバッグすれば分かるだろカス
228 : >>224 とは限らん。
229 : _imread パクろうとしてるけど根っこを掘ったら100mぐらいあった感
230 : libjpeg, libpngあたりを使って画像読むだけだろ
231 : カラー画像→グレースケール→二値化→カラー画像 ってやりたいんだけど、二値化からカラーへ戻すのがよくわかりません・・・
232 : >>219 は誰もわからない感じ? テンプレートマッOって誰も使わないほどマイナーな関数なのかな
233 : >>232 お前が変なライブラリを使っているから関わりたくないだけ まずOpenCVでどうやるか調べろ >>231 無理だろ 条件によるが
234 : >>233 背景差分をしたいのです。 最終的には物体が映っている画像から背景だけを抜き出し、 物体のみが映っているカラー画像を抜き出したいのですが、よく分かりません・・・
235 : ttp://d.hatena.ne.jp/rebelwidow/20101024/1287925436 のマスクとして合成し、グレースケールで抜き出すというのは出来たのですが、 その下のカラー画像へは、の所で詰まってしまいます。 これは差分画像のカラー画像を抜き出すので合っていますよね?
236 : >>235 元のカラー画像とグレースケール画像を両方持っておけば 対応しているピクセル位置は同じだから グレーと同じ位置を元のカラー画像から抜き出せばいいだけだろ
237 : >>236 ありがとうございます。 理屈では分かりました。 cvSplitで分割する必要は無いって事ですよね? OpenCV使い始めたばかりなのでリファレンスがまだよく分かってないです。
238 : グレート同じ位置を元のカラー画像から抜き出す場合は、 要素の絶対値の差分ではなく、ピクセルの座標などを指定すればいいのでしょうか?
239 : >>233 変なライブラリの部分は多分関係なくない? ttp://opencv.jp/opencv-2svn/c/imgproc_object_detection.html?highlight=template#cvMatchTemplate これ見る限り別のライブラリ介さなくても似たようなもんに見えるんだけど 別のライブラリのこと書いておいてなんだけど普通のopencvでどうやるかを知りたかったのです
240 : >>239 使ったことないのであれだけど、マニュアルには >>比較計算が終わると,関数 MinMaxLoc を用いて最も良いマッO結果を,最小値( CV_TM_SQDIFF )や最大値( CV_TM_CCORR )として検出できます. と書いてあるから >結果が画像で返ってくるけど、マッチした部分の座標を配列で得たい場合はどうするのが良いですか? これが間違っているのでは? 結果は画像ではなくて、各画素位置に対するマッOのスコア表みたいなもので スコアがしきい値以上の座標をマッチした座標として扱えばいいだけでは?
241 : openCV2.4、visual Studio C++2010の環境下で単純にwebカメラの入力を表示するプログラムを作成するとDebugモードで >LINK : fatal error LNK1104: ファイル 'tbb_debug.lib' を開くことができません。 と表示されてしまいます。Releaceだと問題なく表示されました。 少し調べたところ、 ・同梱されているTBBはRelease版のみのためDebug実行すると【コンピュータにbb_debug.dllがないため〜】と表示される ・これを解決するためには別途TBBを用意し対応したフォルダの中へコピーする とあったのでopencv\build\common\tbb\ia32\vc10内のtbb.dllとtbb_debug.dllを上書きしてみましたが解決しませんでした。 どうすればこの問題を解決することができるでしょうか。 また、あるサイトには VisualStudio2005からはReleaseモードのみ実行可能なので、Debugモードでも実行したい場合はVisualStudioをインストールすると実行可能です。 と書いてあったのですが意味がよくわかりませんでした。どういうことなのでしょうか。 初歩的な質問ですがよろしくお願いします。
242 : どっかにあるtbb_debug.libがあるはずだからそこをVC10のライブラリディレクトリに追加すればいい
243 : すいません、ここで聞いていいのか分からないんですが、 OpenCVなどと同様の顔検知技術をMSが出してたと思うんですが ご存知ないでしょうか? ※ Windows Phone向けのFace SDK以外であったと思ったのですが
244 : >>243 OpenCVの顔検出で使われているViola–Jones methodのviolaがMSの研究者だけど そういう話ではなくてKinectのFace Trackingとか?
245 : >>243 http://blogs.msdn.com/b/aonishi/archive/2012/07/11/10328665.aspx
246 : >>241 OpenCV - Bug #1940: missing debug TBB binaries in OpenCV 2.3 windows installer http://code.opencv.org/issues/1940 ここに、DLLの入手方法が書いてある (IntelのTBBのダウンロードページへのリンクあり) また、OpenCV 2.4.1 で解決 (tbb_*.debug.dll を同梱) してるので、 2.4.1 か 最新の 2.4.2 に入れ替えても解決するよ。
247 : いま確かめたら、OpenCV-2.4.2.exe みたら、build/x86 ディレクトリに vc8 (=VS2005) がないねえ。 vc9 (VS2008), vc10 (VS2010) しか無いね。 TBB (common/tbb/ia32/vc8/) はあるのに。 どうしてもVS2005で使いたかったら、OpenCVのソースコードをCMakeとVS2005で自分でビルドする必要があるね。
248 : opencv初心者です。 opencvを利用した瞼の検出方法をどなたか教えていただけないでしょうか。 opencvsharpを利用しています。
249 : >>248 まずOpenCV上級者になります。
250 : opencv初心者です。現在opencv2.4.2を使っています。 cv::Mat img = cv::imread("../../image.jpg", 1); if(img.empty()) return -1; の状態で、座標(x,y)における、 ※x,yは整数のピクセル値 check[0]=img1.data[y * img1.cols + x * img1.step1() + 0]; check[1]=img1.data[y * img1.cols + x * img1.step1() + 1]; check[2]=img1.data[y * img1.cols + x * img1.step1() + 2]; などをして、特定のピクセルのBRG情報を取り出そうとしましたがうまくいきません。 どなたか、cv::Mat::dataの中身についてか、どういう風に書けば取り出せるか教えていただけないでしょうか?
251 : >>250 すいません、何ともあっさり解決しました。 check[0]=img1.data[x * 3 + y * img1.step1() + 0]; check[1]=img1.data[x * 3 + y * img1.step1() + 1]; check[2]=img1.data[x * 3 + y * img1.step1() + 2]; このように書き換えました。
252 : >>>251 for (int color = 0; color <3; ++color) { check[color] = img1.at<cv::Vec3b>(y, x)[color]; }
253 : 普通Mat::at使うでしょと思ってたけど 速度遅いの? http://kassymemo.blogspot.jp/2011/09/opencv2cvmat.html あんまり気にしたこと無かった
254 : さすがに最適化オプションも知らないだけだろ
255 : NDEBUGつけてないとか
256 : ちょっと他のことやってて進んでなかったけれど phpライブラリのソースを読んだらIplImageの中身が見れないようになってて minMaxLocって関数も実装されてなかったり実用性低そうだったので結局Cで書くことにしました それで改めて質問なんですがminMaxLoc使うと最も近似してる部分がわかるけど、 >>240 さんの言うように閾値を設定して、一定以上似ているのを全て列挙するようなのはどう書けばいいでしょうか ttp://opencv.jp/sample/matching.html のコードでcvMatchTemplate (src_img, tmp_img, dst_img, CV_TM_CCOEFF_NORMED); 以降、dst_imgのimageData辺りをあれこれすればわかりそうな所まではわかりましたがその先がわかりません。 ヒントなど頂けると助かります。よろしくお願いします。
257 : cv::threshold
258 : 2.4.2でMatニ対応したcvSmoothに変わる関数ってありますか? MatとcvArray??間の変換がうまくいかず困っています
259 : >>257 ありがとうございます! その先はcvGet2D()なんかを使って目的の座標を得ることが出来ました。 助かりましたー
260 : ガウシアンブラーの関数があった気がする
261 : cv::normってクソ遅い? 2つのベクトルの距離求めるのに使ってたんだが、自力でforループ回すのに比べて6倍くらい遅かった 何かおかしかったのだろうか
262 : ソース見てないけど、ノルムの種類によって場合分けしてるだろうから 関数呼び出しとかも考えたら遅くて不思議じゃないな 大きさが固定なら自前でインライン展開して書いたほうが絶対速いと思う
263 : >>262 openCVのMat関係の関数便利だなーと思ってけっこう使ってたんだけど、 自分で書いてもたいしたことないやつはしっかり書くべきなのかな。 まだまだ自分のソースを見直す必要がありそうだ。ありがとう
264 : OpenCV側が最適化BLASくらい速くなるべきだろう
265 : VS2010 C++ Expressを使用しています。 OpenCV(opencv-win)をDL後、諸々設定、コンパイルは通るようにしたのですが 実行すると下記のようなエラーメッセージがでます。 「C:\opencv\build\x86\vc10\bin\opencv_core241d.dllはWindows上では実行できないか エラーを含んでいます。元のインストールメディアを使用して再インストールするか、 システム管理者もしくはソフトウェアの製造元に問い合わせてください。」 Release,Debugモード両方ダメでした。 また、バージョン(2.4.2)もダメでした。 何が原因でエラーがでるかご存知の方はいますか? お手数おかけしますが、よろしくお願いします。
266 : すいません、 OpenCV-2.2を使用したら無事に実行もできました。 ただ、2.4.xが何故使用できないのかわからないのでしっくりきてませんが。
267 : うむ、がんばりたまえ
268 : おめでとう 追求するかしないかはあなた次第
269 : 画像を半分に分割して別々のウィンドウに表示したいんですが 画像を半分に分割する関数ってありますか?
270 : >>269 ROI設定してコピー
271 : 最近OpenCVに関数が用意されてないと何も出来ない人が急増してきたな
272 : そういう感想文いらないよ
273 : 用意されている関数を知らずに再実装するな
274 : >>270 ありがとうございます やってみます
275 : >>270 コピーいらない.ROI設定した画像(cv::Mat)をそのまま imshow の引数に入れればいける. cv::imshow("Show Clip", image.rowRange(0, 120)) とか.
276 : >>275 そういうのどうやって勉強してますか?
277 : リファレンスを全部読め
278 : 勉強の仕方から勉強して来い
279 : >>277 無理 >>278 どうせお前教えられないだろ
280 : 必要になったら地道に調べて使ってみるしかないよ 少しずつ知識を増やそうぜ!!!
281 : マニュアルも読めないやつに何を教えても無駄
282 : >>280 そうだな。実際そうしてるんだけど 効率良く吸収していきたい しかしプログラム組む人って本当まともな奴少ないなー
283 : 教えたり教わったりで何とかなるもんじゃないからな 結局自分で身に付けた自負が大きくなりすぎて変人と化す
284 : >>282 プログラム組む人側から見るとお前がまともじゃないから関わりたくないんだよ
285 : 関わりたくないくせにレスしてるw
286 : OpenCVのTIFF対応状況が分かるサイトないですかねー 対応してるはずのTIFFがエラーになったり 客に文句言われて困ってまそ
287 : >>286 ソース見れば分かるだろ libtiff使ってる
288 : >>287 さんくす、 オープンソースだと言うことを忘れてますた・・・
289 : >>286 libtiffのほとんどの機能はハブられているよ。 自分で読み込んでOpenCVに渡すのが正解だな。
290 : templateMatchingって画像が大きくなると判定雑になったりしませんか? 囲碁ゲームの盤面を取得しようとすると500*500pxくらいなら閾値0.9とかで全て+多少の誤判定が取れますが 1000*1000pxくらいにすると閾値0.7でも取れない部分があって 閾値減らした分誤判定も増えすぎてどうしようもなかったりしてます・・・ テンプレもソースもpng画像で劣化無しなので100%一致していいんですが、なんだかうまくいってませn 何かうまいやり方はありますか?
291 : ほす
292 : >>290 盤面まるごとマッOしてるの? 線を取ったほうがいい気がするけどな
293 : 知識をお貸しください。 VS2010でOpenCV2.4を実験に使用しています。言語はC++です。 2.2から上げたところ、以下の不具合(?)が発生しました。 カメラを2台接続して、それぞれがcapture=NILLならreturn-1をさせたいのですが、 1台にしてもNULLの判定にかかりません。 どうやら1台のカメラから2枚キャプチャしているようです。 正しく判定されるようにするにはどうしたらいいのでしょうか。
294 : cvCreateCameraCaptureでエラー出て無いんかい
295 : >>294 レスありがとうございます。エラーの表示はありません。 カメラを1台にして画像を表示させると、capture1もcapture2も同じ画像が入っています。 2台にすると、それぞれのカメラからの画像が表示されます。
296 : cvCreateCameraCaptureの引数-1にしてんじゃないのかね?
297 : >>296 引数は、0と1で指定してます。 capture1 = cvCreateCameraCapture( 0 ); capture2 = cvCreateCameraCapture( 1 ); です。
298 : setPropertyで片方のカメラのパラメータ変更したら、もう一方も変化する? 解像度とか。 それとcapture1とcapture2自体の値は異なる?
299 : >>298 setProperty試してみました。 capture1を640*480、capture2を320*240にすると、ちゃんとそれぞれのサイズで取得されます。 この状態でカメラを1台にすると、 Assertion failed (src.depth() == dst.depth() && src.size == dst.size) と出て止まってしまいました。 >それとcapture1とcapture2自体の値は異なる? すみません。値とは何でしょうか?宣言時には、 CvCapture *capture1 = 0; CvCapture *capture2 = 0; としています。このことですか?
300 : 問題を整理するけどカメラ1台なのにcvCaptureがエラー無く二個作成できてしまうってことで良いの? >値とは何でしょうか? 同じデバイスなら同じ値になるのかと思って。 createcapture後のcvcaptureの値。 んでそのエラーはどの段階で出てるの? srcとdstが出てるけど画像処理くさいんだけど。 getquery->showimageだけの最小構成でやってみてよ。 getpropertyでデバイスの項目無いので最悪directXで自分で書くとか おそらくcvCaptureの何処かにはデバイスを記録している部分があるからそこを探すとか。 ただしwindowsとlinuxとかの違いを吸収するためにそこはブラックボックスにしてるから 普通の方法では見れない。
301 : >>300 >問題を整理するけどカメラ1台なのにcvCaptureがエラー無く二個作成できてしまうってことで良いの? その通りです。 仰るとおり、プログラム全体を回しつつではエラー箇所が曖昧ですね。 明日、最小構成で試してみます。その際にcvCaptureの値も確認します。 もうしばらく自力でがんばってみます。 アドバイスを下さった方々、ありがとうございました。
302 : cv::Mat型からラベリングする方法はないですかね? ないならlabeling.hなら一手間加えてなんとかなりそうですが画像の幅が4の倍数じゃないと動かないと聞きましたが今は直ってますか?
303 : ごめんなさい、実際に自分で確かめてから書きこんだ方が良かったですね 今確認したら幅のサイズに関係なくちゃんと動作しました しかし、やはりcv::Matから直接操作したいのですがそういうのはないのでしょうか? 後、labeling.hで画素数以外の条件でふるい分けをする方法はないのでしょうか?
304 : opencvベースのラベリングはどっかで見た libblobとかcvblobとかそんな名前
305 : どっちもIplImage構造体しか使えないみたいです 後、既存のものは4連結しか出来ないものが多いみたいで 8連結ラベリング使えるのないですかね?
306 : labeling.hってのが何なのかよくわからんが, ラベリング処理自体そう難しいわけでもないんだし見つけた既存のものが使えないなら自分で書けばいい気がするけど 自作だと問題あるのだろうか
307 : >>303 Labeling.h が ttp://oshiro.bpe.es.osaka-u.ac.jp/people/staff/imura/products/labeling のなら、 int Exec( SrcT *target, DstT *result ...) の phase 1 しか入力画像にアクセスしないから そこを IplImage とか cv::Mat を使うように書き換えれば良いよ。 あと、8連接も ConnectRasterSegment() の min_x, max_x の if文を書き換えればできたと思うよ。 なお、輪郭を探索してラベリングしたいなら cvblobslib か cvblob のどっちかがそういう作りだったと思う。
308 : >>305 cv::MatからIplImageに変換できるだろ
309 : >>306 他に手段がなかったらそうします >>307 まずはそれ試してみます >>308 確かにそうでした いろいろレスありがとうございます。まずLabeling.hの書き換えから試してみます
310 : >>309 imura's のラベリングライブラリは速度的にもあんまりなので, 業務で使うならちゃんとしたところから購入した方がいいと思うが参考まで. 趣味なら知らん.
311 : 今まで散々行われてきた質問かもしれませんがよろしくお願いします MatchTemplateでマスクを使用したいんですが実現する方法ってあるのでしょうか?
312 : MatchTemplateの結果をマスクすればいいだけ 非効率なのが気になるならROIを複数設定するでもいいし もっと細かいなら自分で回せ
313 : いや、結果をマスクするのとは全然ちがう。 結論から言うと出来ないので、自分でコードを書き換えるしかないよ。
314 : >>313 何が違うの
315 : >>313 ども!出来ないって分かっただけで大収穫でした となると、アセンブリに落とし込めないC#で書き始めたってのはちとメンドイですね どうにでもなりますが
316 : >>314 テンプレートをマスクするって意味なら 黒い机の上のリンゴも 白い机の上のリンゴも 同じスコアで見つけられる ってことじゃね?
317 : 画像の上に別の画像を描画する関数ってないですか? できればCじゃなくてC++のcv::Mat型の関数でお願いします もちろん普通にラスタスキャンして自分で1画素ずつ操作してもできますがそれ以外で
318 : ROI指定してコピーするだけだろjk
319 : 描画先からRange指定で部分行列を取り出して別の画像を代入すれば1画素ではなくて 一気に操作できるんじゃね?
320 : watershed使って、選択した1領 域をテンプレートマッOの テンプレートにしたいです。選 択は出来たんですが、テンプレ ートにするため、選択領域を含 む最小の矩形画像で、対象以外 をマスクしたものを作りたいで す。watershedの結果からうま く作れませんか?openCV2.0の watershed丸パクリしました。 中の処理は理解出来ないので、 どうすればいいかわかりません 。いい方法あったらお願いします
321 : src.copyTo(dst(cv::Rect(張り付けたい場所))); 試してないから動くかは知らん
322 : 2012で動かすのに有給丸々一日使ってしまった RC出すならVC11ビルド入れといてくれてもええやん
323 :2012/11/01 充実した有給でしたね
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
Androidアプリ制作依頼スレ (618)
ゲームプログラムなら俺に聞け26 (465)
Gtkプログラミング on Windows!!! (343)
OpenMPプログラミング (388)
日本語プログラミング言語『なでしこ』スレ5 (813)
OpenMPプログラミング (388)
--log9.info------------------
大分県の単車乗り達のスレ Part26 (377)
◆◇◆シグナスX & BW's125 part76◆◇◆ (535)
★台湾スクーターKYMCO キムコ総合6★ (731)
【FORZA】フォルツァ総合スレ 66km/h【HONDA】 (917)
バイク野郎の防寒スレッド★11 (409)
【NC31・NC39・NC42】CB400SF・SB 161台目 (688)
舞茸親切な奴が何でも質問に答えるスレ☆part343 (298)
【埼玉】道の駅"安行"スレ その22【川口】 (639)
GRAND MAJESTY 【グランドマジェスティ】 Part15.00 (561)
いっつも1人でツーリング ver.85 (1001)
IDにB出したヤツを全力でバカにするスレ 58バカ目 (1001)
HMS 第23コース (951)
一緒に走りたくないライダーを挙げるスレ10 (422)
「売ります」「買います」「交換」スレ52 (798)
大型二輪免許中高年コース その15 (437)
うちさぁ・・・バイク、あんだけど買ってかない?9 (897)
--log55.com------------------
【北朝鮮】河野外相 非核化達成まで北朝鮮への制裁維持が重要[06/06]
【拉致問題今回は避けるべき】米元高官「米朝首脳会談 まずは核問題に集中を」[06/06]
【国際】北朝鮮五輪参加へ特別支援 IOC、日本などと協議へ[06/06]
【大阪】「平壌で一緒に冷麺食べる日を」 南北会談、歓迎の集い[04/19]
【国際】英団体、韓国兵の性暴行追及へ 米議会議事堂での慰安婦像計画に合わせ[06/07] ★3
【国際】米朝首脳会談前に安倍首相が訪米、北朝鮮メディア「日本は朝鮮半島問題に関わる資格失っている」[06/07]
【萬物相】 常識ではなく非常識を信じる韓国社会のコメディー〜彼らは最初から「ファクト」には関心がない[06/06]
【朝鮮日報】米国は時に韓国を裏切ってきた