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]
【朝鮮日報】米国は時に韓国を裏切ってきた