【Intel】OpenCV総合スレ 4画素目【画像処理】
2ならOpenCVは俺の嫁
>>2 の面倒はしっかりと我々WidowGateが見させて頂きます。
Haar-LikeじゃなくてLBPで顔検出したいんですがどこかにコピペしてパス通すだけのサンプルコードないですかね? cv::MatじゃなくてIplImage使ってるやつでお願いします
コーナー検出の処理時間をCore2 E8500、VGAサイズで計測してみたんだが、 FAST 1〜2msec Harris 105msec GoodFeatureTotrack(固有値) 105msec ってハリスとGF2Tの実装遅すぎじゃね?
>>5 cv::Matだけど
opencv/samples/c/facedetect.cpp
でええやろ
>>7 レスありがとうございます
それ訳が分からなかったんで、cook-bookのコード使ったらとりあえず動いたけど
C++はよく分からないから出来ればCでのサンプルでお願いします
>>8 まずお前が10年間C++を勉強すれば済む話だろ
それ言われたらそれまでなんだけどね C++でしかサポートしない関数とかもあるらしいし覚えるしかないんかな これリファレンスとか微妙に見づらいし マイクロソフトかGoogleあたりが最強の画像処理ライブラリ作ってくれんかな
>>10 勉強する気がないやつは何使っても一緒だろ
>>10 お前が見やすいリファレンスを書き上げればいいんじゃね?
ほかの言語用にラッパーライブラリを作り上げればいいんじゃね?
すみません質問です OpenCV2.2のサンプルプログラムであるgrabcut.cppを見ているのですが 最初に与えた前景・背景情報を別の画像に用いる場合にはどの辺りを書き得ればいいのでしょうか やりたいことの例としては 固定カメラの画像列を入力として,最初の画像で人を前景として指定 その後の画像では自動で人っぽいところを切り抜いていくといった感じにしたいと思っています 人は画面外に出ず左右に揺れる程度です
そいつはコマンドラインで動くプログラムだから、 string filename = argv[1]; を string filename = "ファイル名.jpg"; みたいにすればいいんじゃないか?
>>15 とりあえずコードいじろうとしてたんですが今現在
imreadが変?っぽくて困ってます
string filename = "baboon.jpg";
Mat image = imread(filename,1);
で上手く読み込んでくれてないみたいで
IplImage *img = cvLoadImage("baboon.jpg");
は普通に動くのでパスは通ってそうなんですが
OpenCV入れなおしてみるのが早いでしょうか?
>>13 TEOなんてスゲー久しぶりに見たな
まだ使ってる人なんて誰もいないだろ
>>16 Visual Studio on Windows 環境の話しなら,
・使ってるライブラリのバージョンが正しいか
(2008用のライブラリを2010で使ったりしてないか,等)
・Debug / Release の指定とリンクしてるライブラリは正しいか
の2点をまず確認.
>>17 使っているのは学生の実験や研究くらいだろ、昔も今も
TEOのEってどこだっけ?Tsukuba, Okayamaは分かるんだが
EDOだったはず
ついカッとなって変なこと書きこんでごめんね いろいろ調べたけど今現在実在する環境ではOpenCVが最善ぽい
今更C++みたいなクソ言語使わせるのは止めろよ JavaかPerlかRuby当たりにしてくれ
負けず劣らずの糞言語あげんなよw
>>13 IPPはOpenCVと一緒に使うものだろう
魚眼レンズで取った写真の復元って出来たっけか
魚眼レンズの画像補正の実験中に自分の頭頂部が薄くなっていることに気付いて驚いた。
リアルタイムで髪をふさふさに補正するビデオチャット機能の実装が急務
ヅラ被ればええやろ
ロマンが無いだろ
ヅラ職人のロマンを馬鹿にしてんのか
ヅラの話題になった途端に、近年稀に見る盛り上がりようだな。 おまえら…
リアルタイムで毛で顔全体を隠すのなら作ってもいいぞw チャット目的ならdirectshowフィルタで実装し、メリット値(フィルタ選択優先度)最大で使ってもらうのがいいかな。 汚物が隠れて相手も喜ぶな。 ハゲ頭は特徴検出難しいからおとなしくズラにしてください。
haarcascade でトレーニングに再配布不可の画像を使った場合、 xml に画像の情報が少し含まれると思いますが その場合はプログラムも再配布不可になりますか?
>>36 復元できないし再配布には当たらないと思うけど
利用規約があるのなら反するかもな
xmlのデータを見て、あの画像使ったな、って分かっちゃうことあるのかな?
無理でしょう 相当情報を削減してるし、不可逆だろう
haartrainingを実行しているのですが、 +----+----+-+---------+---------+---------+---------+ | N |%SMP|F| ST.THR | HR | FA | EXP. ERR| +----+----+-+---------+---------+---------+---------+ ここまで表示され1時間ほど経過しても進む様子がありません CPUの使用率は高いので何か作業をしているようにも見えますが、 このまま放置しておけば学習は進むのでしょうか?
画像の枚数によっては数日以上かかる
動画ファイルの指定フレームに画像を挿入する関数ってあります? cvCreateVideoWriterで新たに動画ファイル作って元動画から1フレームずつコピって、 挿入するフレームが来たら画像入れて、また元動画から次のフレームを貼りつけてくしか無いのでしょうか?
そうするしかないだろうな 挿入なんて関数はない
やっぱり無いですよね。 ありがとうございました。
赤や青やオレンジなど様々な色のピンポン玉が複数バラバラにあります。画像上の形・大きさはほぼ同じです。 赤っぽいピンポン玉がどこにいくつあるか、 オレンジっぽいピンポン玉がどこにいくつあるか、 など取得するにはどのように処理するのが最適でしょうか? 素直にテンプレートマッチングすると、輝度で判断するのでオレンジと黄色の区別があまりつきませんでした。
色が違うピンポン玉なのに色を見ない理由が知りたい。 円検出、円内の色判定が素直なやり方じゃないかな?
>>45 とりあえずボールっぽいのだけ全部列挙して
後で色の近さで赤や青やオレンジ(あらかじめ色のテーブルがある?)に量子化して
指定された色でフィルタすればいいのでは
>>45 「素直にテンプレートマッチング」というけど具体的にはどんな手法/類似度を使った?
まず、ピンポン玉に重なりがあるのかどうか
50 :
45 :2012/04/26(木) 00:12:39.48
ピンポン玉の画像を用意して、テンプレートマッチして、 結果の画像の輝度を見ました。 ピンポン玉に重なりはあります。 なので、 左にオレンジの玉(A)、真ん中に黄色の玉(B)、(B)に半分重なった黄色の玉(C) の画像に対して、用意していた黄色のピンポン玉の画像でテンプレートマッチすると 輝度がA=0.8、B=0.99、C=0.8 くらいになって、輝度で調べるとA,Cの区別がつきません。
>>50 素朴な疑問なんだけど、重なったピンポン玉の奥の方は見つける必要あるの?
テンプレートマッチングじゃ厳しいと思うんだけど。
で、肝心な内容に触れると、
グレースケールのテンプレートマッチングしかわからないなら、R,G,Bの3色でそれぞれグレースケール作れば?
3回マッチングさせて色判断すればいいと思うけど出来ない理由があるんかいな
色なのにメイドって
WindROOFで似たようなことやってるの見たような 重なった球体も予測してカウントするやつ
54 :
デフォルトの名無しさん :2012/04/26(木) 10:53:46.86
>>45 先にRGB若しくはHSVでフィルターをかけた画像を準備して
抽出すればOKじゃないですか?
>>51 いやカラー画像とグレースケール画像両方用意して
グレースケールで位置みつけた後にカラー側を参照して色を見ればいいだろ
おすすめのopencvの本を教えて下さい。
OpenCV 2 プログラミングブック
58 :
45 :2012/04/28(土) 15:02:44.23
>>54 すいません、どういった手順かよくわかりません。
>>53 しらべてみます!ありがとうございます。
>>55 それはよさそうですね。
参照して色を見る時、1ピクセルだけだと荒い画像なら黒い点とかになっちゃうので
半径nピクセルくらいの色を平均する形だと思うのですが、
こういった曖昧?な比較は、ブラーフィルタでもかけて小さなゴミを消してから
その範囲の色の平均値(単純平均ではなく偏差かな)で比べるのがベターでしょうか?
>>58 そのへんは撮影環境と欲しい精度で相談して決めたほうがいいと思う。
単純にはぼかしていくつかサンプリングして平均を取って
あらかじめある?色リストとの距離を計算して一番近い色を選ぶ。
色空間も影響するのでRGBでうまくいかなければCIELABでやってみるとか。
ボールが重なっている場合は、クラスタリングしてから領域を選ぶとか。
60 :
545 :2012/04/29(日) 01:27:56.43
とりあえず、ハフ変換まで勉強したぜ。 学会発表目指して研究やるぜ。 by大学4年
61 :
デフォルトの名無しさん :2012/05/05(土) 09:53:09.23
>>58 画像をR,G,Bに分解して
R,G,Bの閾値でルックアップテーブルを作ってフィルタリングします。
R,G,Bの画像をANDすれば2値化、若しくはグレー画像ができるので、
その画像からパターンマッチングすればよろし。
RGBの画像をandして、オレンジと黄色は別パターンになるのか?
何言ってるのか分からないし気にしないほうがいい
64 :
デフォルトの名無しさん :2012/05/06(日) 08:24:29.83
ルックアップテーブル、フィルタリング辺りを翻訳最適化して書き直してやんよ。
>>64 は何を書きたいかと言うと
RGBの255色×255色×255色のを1600万色を減色して255段階の色にしてグレースケール画像を作る
この画像と同じように減色された元画素をパターンマッチングかければオレンジと黄色わかる。
で、明るさ変化考慮不足なんで私も
>>63 と同じ意見
僕の解釈は、RGBそれぞれのチャンネルで2値化すると 各色の領域を抽出した画像ができるので それに対してテンプレートマッチングを行う 同じ位置でRとGが1でBが0ならYellowだと分かる というものだったけど 詳細を気にかけるほどよい方法とは思えなかった
>>67 最初はそうかなって思ったんだけど
>>61 を読んだらand取ってからパターンマッチングと書いてあった。
だから66の解釈のが近い
詳細を気にかけて時間を無駄にしたようだ
69 :
デフォルトの名無しさん :2012/05/06(日) 21:03:01.28
>>66 >>67 cvSprit
してRGBかHSVに分解
256階調1chの画像が3つできる。
夫々にcvLut使って閾値で2値化orグレイスケール化する。
当然閾値以外は0に。
で、この3つの画像をAndしたらどうなる?
まぁ、マスクで隠したり色々手法はあるしこの方法は演算多い
からリアルタイム処理には向かんかもしれんが、フルカラーで
判別できるぞ?
これでも理解できない?
70 :
デフォルトの名無しさん :2012/05/06(日) 21:10:50.15
あと、先にtemplateかけて内部の色を判別する方法もあるけど、 templateで取りこぼしたり、対象が多くなりすぎたり、内包した 色の平均を取るとか面倒な処理が出るんから、色は先に消してし まったほうが処理は早いな。 まぁ、なんにしたって先に画像をグレースケールに変換したほう が処理が楽だ。
ボール検出をどうやるかって問題で ボールの内側と外側で輝度だけ違う場合や色相だけ違う場合などもあるわけで 色を気にせず位置だけを先に見つけてそのあとに色を参照するほうが ずっといいと思うけどな 分解とか減色とか言ってる時点でよく分からない前提を置いててまともじゃないだろ
72 :
デフォルトの名無しさん :2012/05/09(水) 20:41:04.69
どんなエラーなの?どこでいつエラーになるの。
74 :
デフォルトの名無しさん :2012/05/09(水) 22:11:34.13
>>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).
ってのがでます
>>74 たぶんframeImageのサイズが640,480じゃないんじゃね?
>>75 ありがとうございます。
できればサイズをどの値に設定すればいいか教えていただけるとうれしいです。
>>76 frameImageのwidthとheightを出力してみてやってもいいし、
cvGetCapturePropertyでcaptureのwidthとheight取ってもいいし
>>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 kihonです。
IplImage *resultImage1=cvCreateImage(cvSize(640,480), IPL_DEPTH_8U,1);
を
IplImage *resultImage1=cvCreateImage(cvGetSize(frameImage), IPL_DEPTH_8U,1);にして行を変えたらiplImageの宣言の位置を変えたら解決しました。
ありがとうございました!
日本語リファレンスはOpenCV2.2までしか無いんですか?
>>91 はい
最近勢いがあるから追いつてもすぐ次が出て無駄になるのだろう
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
というエラーが出ます…なぜでしょうか
これ以上ないくらい明確に書いてあるじゃん
いまopencv2.1をarmv7でコンパイルしているのですが、cxmat.hppのabs関数のreturnでエラーが発生して困っています。 「No viable conversion 〜」というエラーです。 対処法などお心当たりありましたらよろしくお願いします。
86 :
85 :2012/05/17(木) 17:03:39.32
>>85 自己完結しました。
戻り値の型とreturnさせている変数の型が違っていたのが原因でエラーになっていたようです。
windowsでは同じソースでコンパイルできたので、根本的な解決にはならない気がしますが。。
>>84 features2d.cppの77行目で定義されているsurfという変数がemptyであるということは自力で分かったのですが
どうしたらこの表示が出ないように解決できるのか教えていただけないでしょうか
先週からOpenCVを使い始めたばかりでまったくわかりません
なお画像自体はちゃんと読み込まれているのは確認済みです。 後だしばかりですみません…
>>83 2.4まだ手を出してないけど、
The function/feature is not implemented (OpenCV was built without SURF support)
ってあるから「OpenCV 2.4 SURF」でググったらなんか2.4から変わったみたいよ
SURFとSIFTは特許の問題があるのでnonfreeに移動したって聞いたぞ ビルド時にオプションで指定しないとビルドされてないのでは
>>89 >>90 遅くなりましたがnonfree関係を調べなおしてmainの冒頭に
cv::initModule_nonfree();を追加したら動くようになりました!
そしたら次はExtractSURFするとカメラでキャプチャした画像だけに対してエラーが出るというバグが…
とにかくありがとうございます!
exactsurfのバグは昔からあった。解像度小さくないかい?
SURFのバグは2.2くらいで修正されたような
エラーメッセージをみたらincorrect size of input array () in unknown functionで
datastructs.cppの372行目に問題があるようなのですが、createseqもしてないし
storageも最後に解放していますし、子ストレージを作ってみたりもしましたが変わらずどうすればよいのかまったくお手上げです…
>>92 カメラデフォの640×480ですがまずいでしょうか?
>>94 場所までわかってるなら
エラー出ないと時と出るときで何が違うのか見たら
バージョン:OpenCV2.4 httpでgetしてメモリ上に展開されたjpgをcv::Mat形式で読み込みたいです。 jpgがそのまま展開されたchar*を与えるとポインタ引数、参照引数もしくは返り値としてcv::Matを返してくれる関数などありませんか? ない場合はどのように実装すればいいですか? よろしくお願いします。
>>97 実行していませんが最終手段として考えています。
問題はいちいちHDDを動かす必要があるので繰り返し実行すると遅さが目立ちそうです。
秒間10回は走らせたいので。
>>98 そっか,じゃあメモリ上のストリームを流し込むかjpgデコードを直でやるかだね
>>98 HTTPでGETするのに比べればHDDへのアクセスなんて誤差レベルだと思うが…
本来ディスクアクセスなしでできる・できそうなことを、使える道具の制限で ディスクアクセス必須になるのは確かに気持ち悪いね。 常時稼働するタイプのプログラムだとHDDの寿命が…とか考えちゃうし。 ちょうどメモリ上に展開されたbmp(データが'B','M','P'から始まるビットマップファイルそのもの)に対して 同じようなことをしたいと思ってる。こっちは幸いデコードが不要なのでCreateImageHeader()で どうこうするかヘッダを読めばなんとかなりそうだけど、JPEGはわかりませんごめんなさい役に立てなくて。
imdecodeでできるだろ
クローラーなら画像捨てずに持っておいたほうがやり直したくなった時に楽だぞ
105 :
101 :2012/05/24(木) 00:33:24.36
>>100 そうですね。
ローカルネットで通信するので高速なのですがHDD読み書き速度と比べるとやはりとても遅かったです。
一旦ファイルに落としこんでからimread()で読みこむことにします。
幼稚な質問に答えていただきありがとうございました。
107 :
106 :2012/05/24(木) 16:21:34.52
おっと再読み込みするの忘れてた。
>>101-103 なんと解決策が!
imdecodeはimencodeでメモリに読み込んだデータしか適用できないのだと思っていました。
Matをはさむと使えるのですね。感動しました。
ありがとうございます。
ネットワーク上のmjpegファイルをOpenCVでUSBのWebカメラみたいにしてフレーム取る方法ありますか? ちなみにNIC付きのLAN接続できるカメラを使っています。
OpenCVで人と車や人とテーブルなど、複数種類のオブジェクトを検出する検出器は作れますか?
頑張れば何でも作れる
opencvはただの部品だから自分したいで作れるし作れない。 自分がつかいたい部品があるかどうかは本読んで調べてね
単純に複数の検出器を用意して、順に読み込ませればいいだけでした 失礼しました
webカメラを使いUSTREAMで配信しているものをRTMPDUMPでflvファイルにしOpenCVで吸い取りたいのですが, OpenCVでどのように記述すれば出来るのでしょうか?
もう少し詳しく カメラでディスプレイを映して録画するってこと? 何したいのかわからないし、RTMPなんとかがわからん。
うーん。全然意味わからん。 ユーストリームをカメラで配信するのと普通に動画を配信するのではフォーマットがなんか変わるの? Opencvはどこで使いたいんだ? flvにしたデータを読みこむのにつかいたいの?ストリームを制御するのにつかいたいの?
openCV2.4.1もしくは2.4のpython用リファレンスってありますか? 検索しても2.1のしか出てこないのですが
画用紙にテレホンカードを載せて撮影した写真から テレホンカードだけを抜き出したいんだけど どういう方針で抜き出せばいいのかよくわからない まず何をすればいいかな ズボンはすでに脱いだ
二値化して輪郭だしてそれが納まる矩形を求めて傾ければいいの?
ズボンは畳んだか? カメラとテレカの距離固定ならエッジ抽出してハフ変換なんてどうだろう? 外クケイが同じ大きさなんでわかりやすい。 あとは固定色を透過させるクロマキーは?
制約条件をどの程度付けられるかが鍵なわけで、それを書いてくれないと 答えにくいんだな
画像紙が自分で選べるなら色付けて抜き出すだけだな
それこそ光板を画用紙がわりにするとグッド。 光板は回斥しにくいledね。 高い装置になるががんがれ
回折の typo?
>>118 テレカの切り抜き画像が欲しいだけと仮定して話すよ。
カメラと画用紙、テレカの位置を固定する。
そしたら画像内のテレカのCvRectを決められるから、
後は片っ端から読んでいけば良いよね
・CvRectは、カメラ出力窓に、矩形を表示させて(cvRectangle)
上下キーで決められるようにすればおk
・トリミングはこれ見れ
http://okwave.jp/qa/q5479021.html
同じサイズのグレースケール画像2種類の輝度値をそのまま差分にしたいのですが、 この場合、用いるのはaddなのでしょうか?
>>126 何がしたいのかよく分からないのですが、
2つの画像をHSVに変換(cvCvtColor)して、Vのみの画像を抽出(cvSplit)
その2つのVの画像で輝度値の差分を取(cvAbsDiff)ってから、
またHとSを合体(cvMerge)させてやればいいんじゃないでしょうか
待て待て、マイナスの符号を付けてから足すと言いたかったのかもしれん。
何をしたいかわかってないみたいだし、もう少し様子をみよう
iplImageから輝度を直接取り出して計算汁
>>126 エスパーすると、2つの画像を「加算レイヤー」みたいに合成したいので
それの演算は「加算」なんだから「add」でいいんですか?という質問でしょうか?
59−63だな
画像処理スレの59-63ってことだな
138 :
デフォルトの名無しさん :2012/07/10(火) 21:21:01.51
opencvで 『CvCapture* capture = cvCaptureFromAVI("sample.avi");』 というように動画を読み込もうと思ったんですが,ビルドはできるのですが,実行すると 『0x00905a4d でハンドルされていない例外が発生しました: 0xC0000005: Access violation』 というエラーが発生してしまいます。 いろいろ調べて,Cvcapture構造体captureを不正なアドレスに確保しようとしている?らしいということはわかったのですが,対処法がわかりません. どなたか分かる人教えていただきたいのですが. ちなみにopencvは2.2でmicrosoft visual c++2010を用いています.
139 :
138 :2012/07/10(火) 21:36:33.73
すみませんエラーメッセージは test.exe の 0x00905a4d で初回の例外が発生しました: 0xC0000005: Access violation test.exe の 0x00905a4d でハンドルされていない例外が発生しました: 0xC0000005: Access violation プログラム '[3632] test.exe: ネイティブ' はコード 0 (0x0) で終了しました。 でした.
>>138 aviのパスが違うかcodecがないんじゃね?
141 :
デフォルトの名無しさん :2012/07/10(火) 23:58:48.48
同じくOpenCVで無圧縮の(=codecの問題が起きにくい)aviを作れるから先に作ってそれで試すとか? 141の書き方だと、俺視点でまだパスの疑いが晴れたわけじゃないんだよな…俺140じゃないけどね。 cvCaptureFromAVI("samprya.avi")に変えてエラーの内容が変わればいいけど。
143 :
デフォルトの名無しさん :2012/07/11(水) 00:24:38.43
ファイル名変えても同じエラーでした。 ご指摘通り無圧縮のaviファイルを作るのを調べながら先にやってみようと思います. とりあえず今のところいろいろ勉強してる段階なので,また何かあったら個々でお聞きするかもしれません。 その時はよろしくお願いします。
いや、同じエラーならそれって…ん? わかりにくかったかもしれないけど、変えるのはソースコードだけで、 実際のファイルをrenameしちゃダメだよ?わざとfile not foundを出したかったわけで。 まあ確認をどうするかってだけで実際可能性は低いと思うし別にいいけど。
デバッグの仕方が分かんないのか、大変だね
>>143 file がopenできなかったらcvCaptureFromAVIはNULLを返すはずだけどチェックしてる?
147 :
144 :2012/07/11(水) 01:10:02.09
>>145 掲示板のやり取りじゃ仮説を立ててこれじゃね?って言ったほうが(俺の)手間は少ないんだよね。
にしても無圧縮avi作るとこからやるのは流石に遠回り過ぎたね。Visual Studioでやってるならデバッガで追ってちょ。おやすみ。
149 :
138 :2012/07/11(水) 08:18:14.89
>>144 こちらこそ書き方が悪かったのですが,ソースコードの方だけファイル名を変えてやりました。
今mainの中を
CvCapture* capture = NULL;
if(NULL==(capture = cvCaptureFromAVI("sample.avi"))){
fprintf(stderr,"指定のaviファイルが見つかりませんでした.");
return -1;
}
だけにして実行しているのですがそれでも
>>139 のエラーが出ます。
ちなみにずっとリリースモードでやってます。なぜかデバッグモードだとリリースで実行できるプログラムもエラーが出てしまうので。
まあそれも問題なのですが。
俺はAVIファイルでもcvCaptureFromFile使ってるなぁ
151 :
138 :2012/07/11(水) 10:22:21.40
cvCaptureFromFileでも同じエラーが出ます。
で?
まず10年間C++を勉強しろと何度も言ってるだろ
156 :
138 :2012/07/11(水) 13:30:54.31
>>155 なんかこれっぽいですね。
ありがとうございます。最新版でやってみようと思います。
お騒がせしてすみませんでした。
どうみても素人だけどわざわざ2.2なんてダウンロードしたんかね。 ビデオ読み込みのエラーは自前でビルドすると治ることが多いと思う。
たぶんaviの仕様もOpenCVの実装もわからんと質問してるような
Adult Video Interface
160 :
144 :2012/07/12(木) 00:42:08.53
aviの仕様もOpenCVの実装もわからんと回答してましたすんませんすんません。 今のところ俺はcameraやaviのin/outで不自由なく使えてるし、 そういうのを知らなくても使えるってのがOpenCVのいい面の一つだと思ってます。 今回の流れで質問者にaviの仕様わかっとけOpenCVの実装わかっとけっていうのはなんか違うような
161 :
158 :2012/07/12(木) 06:05:15.39
>>160 デバッグできないだろうと思っただけだよ
162 :
160 :2012/07/12(木) 07:53:18.57
>>161 そうでしたか、ごめんなさい。デバッグのしかたを(もしまだなら)覚えたほうがいいというのには賛成です。
知らなくても使えるけど、知らないと躓いた時に対処方法どころか質問の仕方すらわからんからなぁ
どうせ2chの過疎スレなんだし、 知らない人が質問したり回答したりして、ドタバタ楽しくやればいいよ
>>160 そう思うなら動かない時点で諦めなさい
ビデオ関連で動かすための方法は色々あるけど、君には負担が重すぎる
>>166 これまでのやりとりの読解は君には負担が重すぎたようだ
168 :
160 :2012/07/15(日) 20:49:24.24
おまえがどれかなんておまえ以外知るわけねーだろ という前提で話をしろ
こんにちは. 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の間のスタックしか表示されません. (エラー出力の表示はされます) 呼び出しの順序を辿って上記の行に問題があると知ることが出来れば開発が楽になるのですが,これは無理でしょうか. ぜひアドバイスをお願いします.
ファイルとしてではなく、メモリ上にだけあるjpegファイル(freadで読み込んだような状態)を IplImageで開くにはどうすればいいですか? 一度ファイル出力して読みこめば楽だけど、かっこわるすぎる
顔検出につかうhaarcascade_frontalface_default.xml内の thresholdの値ってやたら小さい値な気がするんですけどどうやって使われているんですか? 明るさの範囲って0〜255ですよね? なぜ-0.03のような小さい値が閾値なんですか?
関数見ないで言うと x / 255 とかやってると思う
175 :
デフォルトの名無しさん :2012/08/07(火) 13:37:26.55
こんにちは androidに使うためlbpcascadeに使うxmlファイルを作ってるんですが stage 20に w, h は 24やってるのに18時間ぐらいかかってもまだ終わってません。 もともとこんなに時間がかかるもんですか? そしてlbpcascade_frontalface.xmlやネットで見たものはtreeが多かったのに なぜか自分が作ったものはstage 一つにtreeも一つしかありませんでした。 やっぱtreeが多くないと認識にくいんでしょうか? アドバイスお願いします。
>>173 面積で割わったりと正規化しないとスケールの変化に対応できないから
>>175 まともなデータ量でやれば普通に数日かかる
木の深さは、最近のバージョンには詳しくないのだけど
maxDepathが1になってるからじゃないかな
あとは分類の複雑さによると思う
>>173 にわかばかりだな
マジレスするとintegral image
>>176 ありがとうございます。でもmaxDepthを変えてもサンプルが600個ぐらいだったのが
問題だったのかtreeは一つだけでした。
それにlbpcascade_frontalface.xmlにも<maxDepth>1</maxDepth>となているんです。
他に何かあるんでしょうか
>>178 意図的に増やす意味なんてないと思うけど
データに対してboostParamsの条件が満たせるように学習するし
満たしているなら分岐が少ないほうが速いわけで
精度がよくないのなら学習データの作り方が悪いか少ないかLBP Featuresが問題にあっていないのだと思う
>>179 分岐が多ければいいってわけじゃないんですね。
学習データはどう作るのがいいでしょうか?
時計を認識させようとしてるんでpositiveには時計の画像だけを使って
negativeには時計とはぜんぜん関係のない画像を使ってるんですが
いいサンプルを作るにはこうしろとかあるんですか?
>>180 特徴量が回転不変ではないし学習データの時点ではスケール不変でもないので
pos画像内の時計の位置と角度と大きさを揃えるくらいかな
あと時計の色と壁の色などの明るさが逆転していると全く違う特徴量になってしまうから
時計の種類と背景の柄と秒針の組み合わせも考えるならデータは多いほうがいい
個人的な感覚だと時計検出はかなり難しいと思う
時計といってもいろいろな形や状態があるし
OpenCVのC++のガワは何か使いたくない CのOpenCVをBoostで包んだ方が安心できるし速度出そう OpenCVのC++でないと使えない機能ってあったかな 機械学習の一部ぐらい?
Cがガワだったりして
今のOpenCVはC++がメインでCはC++の関数呼んでたような
今のOpenCVはC++がCのOpenCV関数をきれいに包んでて使いやすいと思うよ。 matとかvideocaptureとか、デストラクタで自動的にリリースしてくれて安心して使える。
速度もC++とCであまり変わらない?
実装はC++だからC++のが早いことはあっても遅いことは無いんじゃないかな
最近のコンパイラはCよりもC++に最適化されてるのかな?
OpenCVの実装見た限り、Matは完全にC++実装で、メンバ関数もインライン化されてたからCと速度はほぼ変わらないと思う。 でもVideoCaptureの実装を見るとCのときのCvCaptureをオーバラップして実装してたから、Cより早くなることはありえない。 でも、インライン関数化されているから、コンパイルの仕方によればCと速度はまったく変わらなくなる。 自分の経験から言えばC++がC言語よりも効率的で速度がでることは絶対にありえない。 それでも、C言語のIplImageとかCvなんたらな関数を使うのはもうやめてほしいな。
matのほうがいいの?
一部C++実装されずにほっとかれてるのもいい加減統一してほしいね
matのほうがいいです。 メモリリークの心配もない、安全、スマートに書けてコードも見やすくなる。
ありがとう。やっぱMATの方が信頼できるよな。 それに引き換え、TACはダメな組織だ。
OpenCVのリポジトリがsvnからgitに変わっちゃっててびっくりした しかもgitでとってきたコードはコンパイル通らない、2.4.9をgitで取ってきてVisualStudio2010でビルドできた人とかいる?
2.4.9ってどこでリリースしてるもの?正式?
2.4にしてから回転した画像に対してSURFを使ったfindHomographyをすると、ホモグラフィーが正しく推定出来ない nonfreeに移ったときにSURF実装も変わったのかな?
動画の2フレーム間での対応点画素座標をカメラ内部行列がI になるように(=正規化カメラ?)直してから cvFindFundamentalMat()に与えることでE行列を求め, そこからフレーム間でのカメラの移動具合(=外部パラメタRとT)を計算しようとしています. Nフレーム間カメラがほぼ同一方向に平行移動している映像でテストしているのですが しかしEからTの方向がフレームによって反転するような現象が起きてしまっています. Tを-Tにしてもエピポーラ拘束の式は満たせるから そのときどきでどっちになるかが変わってしまっているのか? と思っているのですが,だとしたら本当のカメラ移動のTの方向がどっち側だったのかを知ることはできないということなのでしょうか? 例えばカメラが前進しているか後退しているか 等を知りたいのですが…
無理
無理ですか… 「Tのスケールは不明」の"スケール"に方向も含まれるってことですかね. だとしたら対応点の3次元座標を計算してみてなんか判断するとかしか無いのかなぁ
スケールはただの絶対値だから方向はどうでもいい。自由にきめられる。
opencv2.4.2+eclipseCDT8.0.2+mingwで開発してる人いますか? コンパイルは通るのにデバッグすると一行目でsegmentation faultになってしまいます…
ソース貼れ
"C:/OpenCV2.0/samples/c/lena.jpg"が存在しないとか。
カメラでの空間認識をやってるんだけど、2眼だと結局のところ 人と同じような錯視のワナにハマっちゃう。 画像だけじゃ無理なのかなぁ? 3眼にすればいい?
207 :
デフォルトの名無しさん :2012/08/25(土) 16:53:48.96
落ち着け!これは孔明の罠だ!
>>205 VC2008では普通に動いたので問題はないと思います
211 :
デフォルトの名無しさん :2012/08/25(土) 19:18:57.74
無償環境だと何が一番いいんだろう とりあえずVCのC++/CLIを使ってるけど
>前後左右が逆でも矛盾しないから の意味がまったくわからんけど、事前情報の設定がおかしい(足りてない)だけじゃ? やろうとしてることもよくわからんけど、カメラ(あるいは対象物)の姿勢を事前情報として (キャリブレーションはするにせよ)使えば一意に求まらないわけがないと思うんだが。
3次元復元するときにカメラの前に物があるっていう制約条件つければ解決
214 :
デフォルトの名無しさん :2012/08/27(月) 23:44:27.62
すみません、質問です createsamples.exeで生成したvecファイル(ポジティブ画像集)の中身の画像を見る方法はないのでしょうか vecファイルを見れるソフトを調べてみたところ、FileViewProというものがあったので 試してみたのですが、案の定中身を見ることはできませんでした 自力ではいくら調べても情報が出ません 生成された画像の出来を見たかったのですが、 やはりそういう事をする必要は無いということなのでしょうか?
>>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 :
215 :2012/08/30(木) 23:41:30.24
あ、OpenCV 2.4.1 の 「opencv_createsamples.exe -vec ファイル名」で画像として表示できるね。 この処理は cvsample.cpp の cvShowVecSamples() でやってる。
opencv_createsamplesに-showってオプションがある
matchTemplateについて質問
OpenCV for PHPっていうの使ってるのでCやC++とは多少違うかもしれないけど
ttps://github.com/mgdm/OpenCV-for-PHP (これのリファレンスはどこにも見つからなかった)
結果が画像で返ってくるけど、マッチした部分の座標を配列で得たい場合はどうするのが良いですか?
やりたいことはオセロの盤面の画像から、白と黒と置いてない状態のテンプレ画像を比較して
盤面の状態を配列で得ること
他にもっと賢いやり方があればそちらも教えていただけると嬉しいです
よろしくお願いします
2.4.2だけど、imreadでmainの引数を与えると読み込むけど、フルパスをベタ書きするとエラーになるのなんでだ
このレベルだとそれだけじゃ分からないかもね
OpenCVちゃんとチュッチュしたい
>>224 荒い語調で書いとけばいつでも間違いを指摘してもらえたり解説をもらえたりすると思うなよ?
背景画像と入力画像をグレースケール化し、cvAbsDiff で差分処理すると、入力画像と背景がかぶってしまうのですが、 被ってしまっている背景画像を取り除くにはどうしたらいいのでしょうか?
_imread パクろうとしてるけど根っこを掘ったら100mぐらいあった感
libjpeg, libpngあたりを使って画像読むだけだろ
カラー画像→グレースケール→二値化→カラー画像 ってやりたいんだけど、二値化からカラーへ戻すのがよくわかりません・・・
>>219 は誰もわからない感じ?
テンプレートマッチングって誰も使わないほどマイナーな関数なのかな
>>232 お前が変なライブラリを使っているから関わりたくないだけ
まずOpenCVでどうやるか調べろ
>>231 無理だろ
条件によるが
>>233 背景差分をしたいのです。
最終的には物体が映っている画像から背景だけを抜き出し、
物体のみが映っているカラー画像を抜き出したいのですが、よく分かりません・・・
235 :
234 :2012/09/17(月) 20:15:43.40
>>235 元のカラー画像とグレースケール画像を両方持っておけば
対応しているピクセル位置は同じだから
グレーと同じ位置を元のカラー画像から抜き出せばいいだけだろ
237 :
234 :2012/09/17(月) 21:01:46.37
>>236 ありがとうございます。
理屈では分かりました。
cvSplitで分割する必要は無いって事ですよね?
OpenCV使い始めたばかりなのでリファレンスがまだよく分かってないです。
238 :
234 :2012/09/17(月) 21:11:35.79
グレート同じ位置を元のカラー画像から抜き出す場合は、 要素の絶対値の差分ではなく、ピクセルの座標などを指定すればいいのでしょうか?
>>239 使ったことないのであれだけど、マニュアルには
>>比較計算が終わると,関数 MinMaxLoc を用いて最も良いマッチング結果を,最小値( CV_TM_SQDIFF )や最大値( CV_TM_CCORR )として検出できます.
と書いてあるから
>結果が画像で返ってくるけど、マッチした部分の座標を配列で得たい場合はどうするのが良いですか?
これが間違っているのでは?
結果は画像ではなくて、各画素位置に対するマッチングのスコア表みたいなもので
スコアがしきい値以上の座標をマッチした座標として扱えばいいだけでは?
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をインストールすると実行可能です。 と書いてあったのですが意味がよくわかりませんでした。どういうことなのでしょうか。 初歩的な質問ですがよろしくお願いします。
どっかにあるtbb_debug.libがあるはずだからそこをVC10のライブラリディレクトリに追加すればいい
すいません、ここで聞いていいのか分からないんですが、 OpenCVなどと同様の顔検知技術をMSが出してたと思うんですが ご存知ないでしょうか? ※ Windows Phone向けのFace SDK以外であったと思ったのですが
>>243 OpenCVの顔検出で使われているViola–Jones methodのviolaがMSの研究者だけど
そういう話ではなくてKinectのFace Trackingとか?
>>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 :
246 :2012/09/21(金) 23:35:15.27
いま確かめたら、OpenCV-2.4.2.exe みたら、build/x86 ディレクトリに vc8 (=VS2005) がないねえ。 vc9 (VS2008), vc10 (VS2010) しか無いね。 TBB (common/tbb/ia32/vc8/) はあるのに。 どうしてもVS2005で使いたかったら、OpenCVのソースコードをCMakeとVS2005で自分でビルドする必要があるね。
opencv初心者です。 opencvを利用した瞼の検出方法をどなたか教えていただけないでしょうか。 opencvsharpを利用しています。
250 :
デフォルトの名無しさん :2012/09/25(火) 21:27:34.83
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 :
デフォルトの名無しさん :2012/09/25(火) 21:41:47.63
>>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];
このように書き換えました。
>
>>251 for (int color = 0; color <3; ++color) {
check[color] = img1.at<cv::Vec3b>(y, x)[color];
}
さすがに最適化オプションも知らないだけだろ
NDEBUGつけてないとか
ちょっと他のことやってて進んでなかったけれど
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辺りをあれこれすればわかりそうな所まではわかりましたがその先がわかりません。
ヒントなど頂けると助かります。よろしくお願いします。
cv::threshold
258 :
デフォルトの名無しさん :2012/09/28(金) 00:33:23.02
2.4.2でMatニ対応したcvSmoothに変わる関数ってありますか? MatとcvArray??間の変換がうまくいかず困っています
>>257 ありがとうございます!
その先はcvGet2D()なんかを使って目的の座標を得ることが出来ました。
助かりましたー
ガウシアンブラーの関数があった気がする
cv::normってクソ遅い? 2つのベクトルの距離求めるのに使ってたんだが、自力でforループ回すのに比べて6倍くらい遅かった 何かおかしかったのだろうか
ソース見てないけど、ノルムの種類によって場合分けしてるだろうから 関数呼び出しとかも考えたら遅くて不思議じゃないな 大きさが固定なら自前でインライン展開して書いたほうが絶対速いと思う
>>262 openCVのMat関係の関数便利だなーと思ってけっこう使ってたんだけど、
自分で書いてもたいしたことないやつはしっかり書くべきなのかな。
まだまだ自分のソースを見直す必要がありそうだ。ありがとう
OpenCV側が最適化BLASくらい速くなるべきだろう
VS2010 C++ Expressを使用しています。 OpenCV(opencv-win)をDL後、諸々設定、コンパイルは通るようにしたのですが 実行すると下記のようなエラーメッセージがでます。 「C:\opencv\build\x86\vc10\bin\opencv_core241d.dllはWindows上では実行できないか エラーを含んでいます。元のインストールメディアを使用して再インストールするか、 システム管理者もしくはソフトウェアの製造元に問い合わせてください。」 Release,Debugモード両方ダメでした。 また、バージョン(2.4.2)もダメでした。 何が原因でエラーがでるかご存知の方はいますか? お手数おかけしますが、よろしくお願いします。
266 :
265 :2012/10/01(月) 00:25:12.32
すいません、 OpenCV-2.2を使用したら無事に実行もできました。 ただ、2.4.xが何故使用できないのかわからないのでしっくりきてませんが。
うむ、がんばりたまえ
おめでとう 追求するかしないかはあなた次第
画像を半分に分割して別々のウィンドウに表示したいんですが 画像を半分に分割する関数ってありますか?
最近OpenCVに関数が用意されてないと何も出来ない人が急増してきたな
そういう感想文いらないよ
用意されている関数を知らずに再実装するな
>>270 コピーいらない.ROI設定した画像(cv::Mat)をそのまま imshow の引数に入れればいける.
cv::imshow("Show Clip", image.rowRange(0, 120))
とか.
リファレンスを全部読め
勉強の仕方から勉強して来い
必要になったら地道に調べて使ってみるしかないよ 少しずつ知識を増やそうぜ!!!
マニュアルも読めないやつに何を教えても無駄
>>280 そうだな。実際そうしてるんだけど
効率良く吸収していきたい
しかしプログラム組む人って本当まともな奴少ないなー
教えたり教わったりで何とかなるもんじゃないからな 結局自分で身に付けた自負が大きくなりすぎて変人と化す
>>282 プログラム組む人側から見るとお前がまともじゃないから関わりたくないんだよ
関わりたくないくせにレスしてるw
OpenCVのTIFF対応状況が分かるサイトないですかねー 対応してるはずのTIFFがエラーになったり 客に文句言われて困ってまそ
>>286 ソース見れば分かるだろ
libtiff使ってる
>>287 さんくす、
オープンソースだと言うことを忘れてますた・・・
>>286 libtiffのほとんどの機能はハブられているよ。
自分で読み込んでOpenCVに渡すのが正解だな。
templateMatchingって画像が大きくなると判定雑になったりしませんか? 囲碁ゲームの盤面を取得しようとすると500*500pxくらいなら閾値0.9とかで全て+多少の誤判定が取れますが 1000*1000pxくらいにすると閾値0.7でも取れない部分があって 閾値減らした分誤判定も増えすぎてどうしようもなかったりしてます・・・ テンプレもソースもpng画像で劣化無しなので100%一致していいんですが、なんだかうまくいってませn 何かうまいやり方はありますか?
ほす
>>290 盤面まるごとマッチングしてるの?
線を取ったほうがいい気がするけどな
293 :
デフォルトの名無しさん :2012/10/10(水) 16:05:55.62
知識をお貸しください。 VS2010でOpenCV2.4を実験に使用しています。言語はC++です。 2.2から上げたところ、以下の不具合(?)が発生しました。 カメラを2台接続して、それぞれがcapture=NILLならreturn-1をさせたいのですが、 1台にしてもNULLの判定にかかりません。 どうやら1台のカメラから2枚キャプチャしているようです。 正しく判定されるようにするにはどうしたらいいのでしょうか。
cvCreateCameraCaptureでエラー出て無いんかい
295 :
デフォルトの名無しさん :2012/10/10(水) 18:36:39.26
>>294 レスありがとうございます。エラーの表示はありません。
カメラを1台にして画像を表示させると、capture1もcapture2も同じ画像が入っています。
2台にすると、それぞれのカメラからの画像が表示されます。
cvCreateCameraCaptureの引数-1にしてんじゃないのかね?
297 :
デフォルトの名無しさん :2012/10/11(木) 01:35:24.16
>>296 引数は、0と1で指定してます。
capture1 = cvCreateCameraCapture( 0 );
capture2 = cvCreateCameraCapture( 1 );
です。
setPropertyで片方のカメラのパラメータ変更したら、もう一方も変化する? 解像度とか。 それとcapture1とcapture2自体の値は異なる?
299 :
デフォルトの名無しさん :2012/10/11(木) 21:30:47.45
>>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;
としています。このことですか?
問題を整理するけどカメラ1台なのにcvCaptureがエラー無く二個作成できてしまうってことで良いの? >値とは何でしょうか? 同じデバイスなら同じ値になるのかと思って。 createcapture後のcvcaptureの値。 んでそのエラーはどの段階で出てるの? srcとdstが出てるけど画像処理くさいんだけど。 getquery->showimageだけの最小構成でやってみてよ。 getpropertyでデバイスの項目無いので最悪directXで自分で書くとか おそらくcvCaptureの何処かにはデバイスを記録している部分があるからそこを探すとか。 ただしwindowsとlinuxとかの違いを吸収するためにそこはブラックボックスにしてるから 普通の方法では見れない。
301 :
デフォルトの名無しさん :2012/10/12(金) 00:13:58.69
>>300 >問題を整理するけどカメラ1台なのにcvCaptureがエラー無く二個作成できてしまうってことで良いの?
その通りです。
仰るとおり、プログラム全体を回しつつではエラー箇所が曖昧ですね。
明日、最小構成で試してみます。その際にcvCaptureの値も確認します。
もうしばらく自力でがんばってみます。
アドバイスを下さった方々、ありがとうございました。
cv::Mat型からラベリングする方法はないですかね? ないならlabeling.hなら一手間加えてなんとかなりそうですが画像の幅が4の倍数じゃないと動かないと聞きましたが今は直ってますか?
ごめんなさい、実際に自分で確かめてから書きこんだ方が良かったですね 今確認したら幅のサイズに関係なくちゃんと動作しました しかし、やはりcv::Matから直接操作したいのですがそういうのはないのでしょうか? 後、labeling.hで画素数以外の条件でふるい分けをする方法はないのでしょうか?
opencvベースのラベリングはどっかで見た libblobとかcvblobとかそんな名前
どっちもIplImage構造体しか使えないみたいです 後、既存のものは4連結しか出来ないものが多いみたいで 8連結ラベリング使えるのないですかね?
labeling.hってのが何なのかよくわからんが, ラベリング処理自体そう難しいわけでもないんだし見つけた既存のものが使えないなら自分で書けばいい気がするけど 自作だと問題あるのだろうか
>>305 cv::MatからIplImageに変換できるだろ
>>306 他に手段がなかったらそうします
>>307 まずはそれ試してみます
>>308 確かにそうでした
いろいろレスありがとうございます。まずLabeling.hの書き換えから試してみます
>>309 imura's のラベリングライブラリは速度的にもあんまりなので,
業務で使うならちゃんとしたところから購入した方がいいと思うが参考まで.
趣味なら知らん.
311 :
デフォルトの名無しさん :2012/10/23(火) 16:32:56.25
今まで散々行われてきた質問かもしれませんがよろしくお願いします MatchTemplateでマスクを使用したいんですが実現する方法ってあるのでしょうか?
MatchTemplateの結果をマスクすればいいだけ 非効率なのが気になるならROIを複数設定するでもいいし もっと細かいなら自分で回せ
いや、結果をマスクするのとは全然ちがう。 結論から言うと出来ないので、自分でコードを書き換えるしかないよ。
>>313 ども!出来ないって分かっただけで大収穫でした
となると、アセンブリに落とし込めないC#で書き始めたってのはちとメンドイですね
どうにでもなりますが
>>314 テンプレートをマスクするって意味なら
黒い机の上のリンゴも
白い机の上のリンゴも
同じスコアで見つけられる
ってことじゃね?
画像の上に別の画像を描画する関数ってないですか? できればCじゃなくてC++のcv::Mat型の関数でお願いします もちろん普通にラスタスキャンして自分で1画素ずつ操作してもできますがそれ以外で
ROI指定してコピーするだけだろjk
描画先からRange指定で部分行列を取り出して別の画像を代入すれば1画素ではなくて 一気に操作できるんじゃね?
watershed使って、選択した1領 域をテンプレートマッチングの テンプレートにしたいです。選 択は出来たんですが、テンプレ ートにするため、選択領域を含 む最小の矩形画像で、対象以外 をマスクしたものを作りたいで す。watershedの結果からうま く作れませんか?openCV2.0の watershed丸パクリしました。 中の処理は理解出来ないので、 どうすればいいかわかりません 。いい方法あったらお願いします
src.copyTo(dst(cv::Rect(張り付けたい場所))); 試してないから動くかは知らん
2012で動かすのに有給丸々一日使ってしまった RC出すならVC11ビルド入れといてくれてもええやん
充実した有給でしたね
324 :
デフォルトの名無しさん :2012/11/05(月) 20:47:09.96
二値化画像の中から,白で映っている物体をうまく囲めるように矩形を描写することって出来ますか? いくつかの物体をその数の矩形で囲みたいんですが。 ちょっとわかりにくくてすみません。どなたかよろしくお願いします。
325 :
デフォルトの名無しさん :2012/11/05(月) 22:28:16.00
cv::reduceについて質問です。 opをCV_REDUCE_SUMで実行しても、「abort() has been called」とエラーが出て実行できません。 CV_REDUCE_AVGやMAXなら実行できるので、cv::reduce()の行以外には問題ないと思います。 matrix.cpp中の1968行からの中身を見てもよくわかりません。 SUMだけ他となにか違うのでしょうか。 どうすればいいかわかる方お願いします。
>>325 ソースを見た感じだとsrcのtype,depthあたりがあやしそう
328 :
325 :2012/11/06(火) 17:22:36.87
>>327 ビット深度をCV_64Fに変えてやったらできました!!
どうもありがとうございます!
330 :
デフォルトの名無しさん :2012/11/08(木) 18:16:07.16
学校で画像分類の研究をしているものです。
visualC++ openCV2.0で研究をしています。
事情によりopenCV2.4.2で研究することになったのでアップデートをしたのですが、
2.0では動いていたプログラムが2.4.2では動かなくなってしまいました。
エラー文はcvCreateKDTreeとcvFindFeaturesとcvReleaseFeatureTreeの識別子が見つからないといった物です。
調べては見たものの、このkdtreeの関数が2.2以降から変わったという事はわかったのですがどう改変すればいいのかわからず困ってます。
もし良ければ私に知識を貸してくれると幸いです。
参考になればと思いソースを置いときます。
http://codepad.org/C7CVnBU0
馬鹿には無理。
OPENCVは初めてなのですが、 複数画像を読み込んで処理した後、それぞれ保存処理するループ構成はどうしたらよいのでしょう? int i; char filename[256]; IplImage *img[10]; for( i = 0; i <= 10; i++ ){ printf( filename, "C:\\%d.bmp", i + 1); img[i] = cvLoadImage(filename, CV_LOAD_IMAGE_GRAYSCALE); cvCanny (img[i], img[i], 50, 200, 3); } for( i = 0; i <= 10; i++ ){ sprintf( filename, "C:\\result\\%d.bmp", i + 1); cvSaveImage(filename, img[i]); } 以下リリース部分 こんな感じでエッジ検出のループを組んでみたのですが保存されたのは 元画像と比べてとても軽い何も書きこまれてないbmpでした。
馬鹿にはできねえよ、諦めろカス。
>>330 opencv2/legacy/legacy.hppをincludeしてlegacyにリンクさせれば動くんじゃないかな
もしくはcvaux.hでもいいかも
>>332 関係ないと思うけどなんで10個の配列に11個の画像いれてるの?
>>334 さん
レスありがとうございます!
今は試すことができないのでどうなったかは明日になってしまいますが
お礼を先に言っておきます。。
>>332 不等号部分のせいでimg[]が超えてるのが原因じゃね?
>>330 横からですが
#include <cv.h>
#include <highgui.h>
を
#include <opencv2/opencv.hpp>
#include <opencv2/legacy/legacy.hpp> // cvCreateKDTree, cvFindFeatures, cvReleaseFeatureTree
#include <opencv2/legacy/compat.hpp> // CvSURFParams, cvExtractSURF
#include <opencv2/nonfree/nonfree.hpp> // cv::initModule_nonfree
に変えて、
main()の中の1行目に
cv::initModule_nonfree();
を追加すればコンパイル通ると思う
確か2.3あたりから cv::initModule_nonfree(); しないとSURFとか使えなくなった
>>332 > printf( filename, "C:\\%d.bmp", i + 1);
これsprintfの間違い?
OpenCVの前にC言語を勉強してこい
343 :
330 :2012/11/09(金) 15:12:13.48
>>334 >>339 研究室で指摘道理やってみたら動きました!!本当に助かりました!ありがとうございます!!
2.4.3にアップグレードしたらtraincascadeは自分でCMake使ってビルドしろとかめんどくさいな なぜ2.2だけ環境変数のパスまで自動で通してくれる親切設計だったんだ?
>>332 int i;
char filename[256];
for(i=0; i<10; i++){
sprintf(filename, "C:\\%d.bmp", i+1);
IplImage* src = cvLoadImage(filename, CV_LOAD_IMAGE_GRAYSCALE);
IplImage* dst = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
cvCanny(src, dst, 50, 200, 3);
sprintf(filename, "C:\\result\\%d.bmp", i+1);
cvSaveImage(filename, dst);
cvReleaseImage(&src);
cvReleaseImage(&dst);
}
>>332 ・複数の画像を同時に読み込む必要はない、メモリを取りすぎるからなるべく避ける
・入力画像と出力画像を同じ値にして動く関数と動かない関数がある、分けたほうが安全
・それ以降画像を使わないなら必ずcvReleaseImageする
上のコードは試してないから動くかどうかはわからない
あと、ここまで書いといてなんだが過去のコードを保守する必要がある人ならともかく
これから学ぶ初学者ならもうなるべくIplImage構造体は使わないでcv::Mat環境に移行してほしい
cv::Matはメモリの管理を自動でやってくれて信頼性が高い、メモリリークが起きにくい
それよりもまず、問題が起きにくいコードにした方がいいと思う… 例えば ・ sprintf(filename, "C:\\%d.bmp", i+1); ではi+1じゃなくてiにする ・ if(src == NULL) 等の条件を追加して、画像を読み込めなかった時は中断するようにする 書き込みの時もそれなりにエラーチェックしとく OpenCV以前の問題だけども。sprintfの打ち間違いとかね というか質問者はまだ見てるんだろうか…
348 :
347 :2012/11/11(日) 07:29:19.08
>>345 のコードを見てのレスなので
それよりもまず、じゃなくて、そもそもでした。すんません
基本ができてない→基礎からやりなおしてこい それ以外→自分で調べろ つまり、このスレで質問する事自体間違いなんだよ
そもそも2chで何らかしらの答えを得ようって時点でおかしいだろ
まー質問を書き込んでると、頭の中が整理されて自然と答えが浮かんでくるって時もあるし
オープンソースなのにソース読めば分かることを聞くやつもいるよな
リファレンスもわかりにくいし 仕様がころころ変わるし、正直わかりにくいという気持ちはわかる 画像処理やろうと思ったらほぼ必須なのに初心者向けの解説は少ないし
パソコン初心者と画像処理初心者は違う
俺は2.2から使い始めたけど、運が良かったかもしれない。 上で出てたけど環境設定とかも親切だったし バージョン2.xはあんまり大きな仕様変更はないし、C++なので使いやすいと思う ただ、インクルードファイルの指定がまだ謎。毎回勘で指定してる…
CMakeでビルドとか面倒以外の何者でもないな いちいちソースコードからビルドして喜ぶのなんてLinux使いくらいだろ 複数で開発するときとか環境を完全に統一したいし せめてWindows版はexeでインストールするだけで簡単にひと通り使える お手軽版が欲しい
俺はWindowsで使う時はexeでインストールしてる。
コンパイル済みのdllじゃcudaとかtbbとか細かな設定できないからcmakeもしょうがないよね 面倒だけど
おまえらフリーのTBB入れるとGPLになるの認識してるか
360 :
デフォルトの名無しさん :2012/11/14(水) 01:25:04.35
それって回避スル方法あるの
2.4.3からはTBB不要の謎の高速化を実装したってリリースノートに書いてただろ、もうTBBはいらない 他の追加オプションも ・CUDA・・・3Dゲームじゃないんだから、ハイスペックなグラボとか用意してられない そもそもRadeonとかオンボードじゃ動かない ・QT・・・GUI欲しいんなら.netでC++/CLIとか使えよ
TBB使わないと並列化できないだろ
昔はOpenMPだったが今はTBBになったし
マルチコアプロセッサで並列処理したかったらIntel TBBを買うかGPLにするしかない
>>361 反論あるなら具体的にどうしたのか調べて書いておいて
parallel_forのいろいろなバックエンド(OpenMPなど)の実装を作って切り替えれるようにしたのか すみませんでした;;
TBBはIntelの商品だが無料版がGPLで配られている OpenCVはTBBを使っているからIntelのTBBを買ってBSD Licenseのまま使うか 無料TBBを使ってコードをGPLにするかTBBを使わないか選択できる
TBBのライセンスはGPLv2 with the runtime exceptionて言ってるけど、 with the runtime exceptionの部分はどう解釈すりゃいいの。
テンプレートライブラリだからincludeしただけでコードを取り込んでしまうけど その場合のバイナリにはGPLは適用されないということかな
無理して使わなくていいじゃん 上にも書いてあるけど2.4.3からは好きな並列化処理を選べるし もうデフォルトでも十分早い
IPPやTBBみたいなIntelの商品依存の処理を全部削って欲しい ソース読むときに邪魔なんだよ
>>369 プリプロセス通した後のソースを読むっていう技術を身につけるといいよ.
>>370 そのまま読んだほうがまだ読みやすいだろ
IPPへの対応はIntelが政治的な理由で混入させた邪悪なコードであり 自由なソフトウェアであるOpenCVからは排除するべきだ
自由ソフトウェア狂戦士登場
>>372 最後に(マジキチスマイル)をつけわすれてるぞ
この世のあらゆるソフトウェアを自由、フリーにしようってのがGPLだけどな 自由にしない自由はないが
Pythonってどうなん? cv2がバグだらけとか(未検証) Python3に対応してないとか C++に比べて遅すぎるとか 結構問題点が多そうだけどC++より使いやすいかな? 新規にPython2覚えるのもどうかなと思うけど
Pythonは一応公式な対応だろ 他の勝手対応よりはいいと思うが(未検証)
俺もPythonバインディングは使ってないw(使ってる人いる?) C++でも十分使いやすいけどなあ.あとやっぱり新しい実装が使えるから本家の方が楽しい.
PythonのCV使ってみたけど 結局CでOpenCV知ってないと使えないから Cで勉強するのと手間変わらない
Pythonで書けばスクリプト言語だから簡単にWebアプリ作れるし GoogleAppEngineとかGoogleのプロダクトに乗っかれるし 最優秀プログラム言語に選ばれてるから開発効率上がるし Pythonに山ほどあるライブラリで機械学習とかできるし C++からの移行も簡単だし なんてのは妄想か ちなみにGoogleAppEngineはOpenCVに対応してませんでした
>>380 パイソンってそんなに認められてる言語なの?
日本の仕事案件では1度も名前聴いたことないわ
自分も日本の仕事では見たことないなあ。 海外の研究所(アメリカとかヨーロッパとかの)の研究成果を実用化するって、 案件だと、ここ10年で4回ほどあった (C++ SWIG/boost::python + Python)。
>>381 アメリカでは流行ってるらしい
主にGoogleが流行らそうとしてるみたいで
Youtubeでかなりの処理をPythonが担っているのは有名
日本じゃあまり有名じゃないけどね
いろいろ便利そうだしライブラリも充実してるみたいだし
OpenCV使えるんなら何か面白そうなことができるかもね
公式にC#に対応しないかなぁ
Portable PythonとPyScripterで少し遊んでみたけど PythonネイティブじゃないからなのかOpenCVの関数のコード補完が効かない とても開発効率が上がるとは思えないんだが 他にも微妙に関数の仕様がC++とは違うし 画像の縦横がrows,colsじゃなかったりとよくわからん仕様が多い リファレンスも英語しかない、慣れたら読めるけど
スクリプトで全部使えれば便利でしょ 最近の研究者はNumPyとか使っていることが多いから 自分の実験環境でOpenCVが手軽に使えるようになる
388 :
デフォルトの名無しさん :2012/11/20(火) 01:44:01.32
OpenCvSharpで質問 CvMatはDisposeする必要があるってのはいいんですが、 GetSubRectで割り当てられたヘッダーの方もDisposeするべきなんでしょうか?
サンプルではDisposeしてないな
言いたいことも言えないこの街じゃ
392 :
デフォルトの名無しさん :2012/11/21(水) 19:16:48.16
質問です。 ppenCVでマイクロオフィスのword2010にあるような 背景を自動的に読み取って対象物を切り抜くっていうプログラムは出来るでしょうか。 できるとしたらそれが出来る関数を教えてくれたら嬉しいです
>>386 仕様が違うくらいならいいけど、ところどころオミットされてたりして参る
コンストラクタが呼べずファクトリーだけだったりとか
まあctype経由って手も無くはないが
394 :
デフォルトの名無しさん :2012/11/25(日) 11:11:42.51
opencvを使って画像を大津の方法で三値化することってできますか? いろいろ探したんですがわからず... 出来ればその理論などをまとめてあるところがあったら教えて欲しいです。
>>394 普通にcvThresholdを2回呼べばいいんじゃない?
396 :
デフォルトの名無しさん :2012/11/25(日) 13:32:18.15
>>395 分割して、2分割したどっち側をもう一回処理すればいいんですか?
でもやっぱり,最初から3値化するのと、
2値化して、どちらか片側を2値化して三値化するのって違う結果が出そうだなあと思ったんですが。
なんというか、全体的に伝わりにくくてすんません。
397 :
395 :2012/11/25(日) 14:14:02.16
>>396 ごめん。大津ってのよくわかってなかった。
大津って2値化の場合分離度が最大となるのがしきい値みたいだけど
3値化の場合はどこにしきい値設定するの?
thresh.cppみた感じだと最大の値しか返してないから他なら自分で変更してビルドし直すしかないかもね。
398 :
デフォルトの名無しさん :2012/11/25(日) 14:38:21.16
>>397 いえ、こちらこそ紛らわしくてすみません。
自分もどうやって3値化すればいいかわかりません。
今、卒論で参考にしている文献がありまして、模倣実験をしたいんですが、
「大津の方法で輝度ヒストグラムを3つに分離する2つの閾値を選択する」としか書いてなくて困っています。
わからなかったら、2値化を2回しようと思うのですが...
その場合は最初の2値化をした後、分散の大きい方をもう一度2値化するとかでしょうかね。
なんかスレチっぽくなってしまってすみません。
3値以上ならkmeansでいいだろ
模範実験なら同じにしないとダメだな "重判別分析"ってやつじゃね
ステレオ平行化がしたいのですが、名前空間cvが導入された 2.0系でステレオ平行化のサンプルありませんか? どーも動かないサンプルしか自分では発見できませんでした
>>402 OpenCVのバージョンだとか、何がどう動かないのか、どういうエラーメッセージとか書いた方がいいんじゃないかな。
エスパーで答えるなら
>>91
>>403 opencv1.0系の名前空間cvがない頃のステレオ平行化は持っているのですが
OpenCV2.3.0で古い方を参考にやると、
コンパイルエラーは出ないのですが、画面が真っ黒に
表示されてしまいます。
今は自宅なので、開発環境とコードは学校のパソコンにあるので
また、後日詳細な報告します。
OpenCV1.0系をOpenCV2.3.0に書き換えると不具合ってあり得るのでしょうか?
yes
サンプルが動くとか動かないとかではなく ドキュメント読んでから動くように書け
>>404 インクルードしてないlibがあるとかそれくらいしか思い付かない
なんでバージョン全然違うのに そのまま動くと思っちゃったんだろ
でも、本当はそうあるべき
現実そうなっていないものを そうなっているはずだと思い込むのが異常なんです
411 :
398 :2012/11/26(月) 14:07:20.40
>>401 ,399
調べてみたら重判別分析っぽいです。
でもけっこう難しくてよくわかりませんでした.
単純に
>>399 の式を拡張すればいいんでしょうか
例えば、クラス内分散を
(ω1σ1^2+ω2σ2^2+ω3σ3^2)/ωt
クラス間分散を
{ω1(m1-mt)^2+ω2(m2-mt)^2+ω3(m3-mt)^2}/ωt
という感じで。
412 :
399 :2012/11/27(火) 00:28:36.43
>>411 クラス内外の分散の数式が正しいかどうかは俺はわからない(ごめんね)けど、
そんな感じで評価関数作って閾値の組を全通り(256階調なら32768通り)試してみて
最大だか最小だかになるのを探せばいいと思う。
これは泥臭いやりかたなのでもっとエレガントな方法はあるかもしれない。
まあ模倣実験なら多少遅くても結果さえ正確ならいいんじゃないかなーってね。
413 :
398 :2012/11/27(火) 18:22:41.59
>>412 ありがとうございます。
あんまり時間に余裕ないんでこれでやってみようと思います。
このスレ何人が見てるの? OpenCVって日本じゃ流行ってないの?
日本人だと思うよ
>>414 >組みの個数はpoints1>points2になると思うのですが、
ならない
対応点だから同じでは
N組とM組じゃなくて、N個とN個
馬鹿ばっか
jpgファイルをbmpに変換するにはどうすればいい?
421 :
414 :2012/11/29(木) 00:06:02.57
すいません勘違いしてました。 surfで特徴点をそれぞれ画像1からa個と画像2からb個抜き出し、 画像1の特徴点のうち画像2に対応する特徴点をt個選ぶので、 a≠bでcv::findFundamentalMatの第1引数と第2引数は points1とpoints2は同じサイズってことなのですね。 この時cv::findFundamentalMatが正常に動く、対応する特徴点tは 最低何個必要なのでしょうか?
自分で貼ってるリンク先に指定するアルゴリズムごとの値が日本語で書いてあるじゃないか
423 :
デフォルトの名無しさん :2012/11/29(木) 00:37:50.66
馬鹿ばっか馬鹿ばっか馬鹿ばっか馬鹿ばっか
424 :
デフォルトの名無しさん :2012/11/29(木) 17:33:29.99
>> 290 にもあるのですが、cv::matchTemplate() だと内部でdftしててTM_SQDIFFで結構誤差が大きいようです。 速度維持できてて正確に判定できる(?)方法ないでしょうか。 cv::norm L2だと正確に結果出るのですが遅くて・・・
OpenCV で GIF を扱えないのは何故でしょうか?
英語でウィローガレージの人に聞いてください 想像するに、画像のコンテナとしては魅力的じゃないからでしょう
GIF読む必要なし
428 :
デフォルトの名無しさん :2012/11/30(金) 20:14:47.14
岐阜ってもう流行ってないの?
流行ってれば風邪でも歓迎するくらいの勢いだな 流行ってるとかの問題じゃなく画像処理において役に立たないという話
uNiSyS
256に減色されてるのをソースにされてもな、って感じなんかな 下手に対応するとおバカさまがGIF使って、なんか精度悪いとかいいそうだし
グレスケはどうなんだと言い出しそうだから追加しておくけど キャパシティってのがあるわけよ 頑張って256色と敢えて256色は違う
パレット方式がいろいろ都合悪そうだね。 入力画像には使えても画像処理の出力にパレットは使いにくい。
文句言う時だけ伸びるね 馬鹿ばっか
透明色、パレット、アニメと面倒な仕様が多いしgiflibはバグってる
日本の古代の遺産であるsusie plug-inのハンドラを書けばいいと何度か思ったが オープンソースではないからな
岐阜にこんなに人が集まるとは思いもよりませんでした。 みなさん内心は使いたいと思っている人が多いということの 裏返し現象ですね。わかります。
自分では使いたくなくてもユーザーが使いたいというからな
再生プレイヤーを作っています。 cvshowImageで作ったウィンドウにファイルドラッグドロップして再生するファイルを選択させたいのですが、 コールバック関数ありますか?
無いんじゃね そういう仕事はGUIツールキットのものでしょ 何で再生プレーヤー作りたいのか知らんけど、 そういう時はOpenCVじゃなくてffmpeg使うんじゃないの やったこと無いけど
ありがとう! 無いのか残念です( ´△`) ベタ動画イメージファイルだったんで、opencvで作るのが楽かなってguiサボりでした。 マウスコールバックで出来ないか考えて見ます
もう頼むからみんなIplimage構造体使うのは止めてくれよ cv::Matに移行してくれよ、初心者とかは特に 超使いやすくなってるから
資料の数の問題だな
444 :
デフォルトの名無しさん :2012/12/03(月) 23:40:08.67
質問です。 openCV2.0、eclipeseのC++で、for文をつかって加工した画像をpict.jpg、pict1.jpg、pict2.jpg… って感じで連続した番号をつけて全部保存するプログラムをつくっているのですが ::cvSaveImage()だとパラメーターの問題で番号がふれなくてこまってます。 だれか連続した番号をファイル名にして画像を保存できる関数とか知っている人がいたら 教えてくれませんでしょうか。
C++ is こわい
>>444 sprintfやstringstreamで作ればいいだろ
OpenCV関係ないし、プログラミング初心者は基礎を何年か勉強してから手を出せ
ファイル名 連番 とかでググったらいくらでも出てくんだろ
>442 名前が悪いな
>>445 >>446 アドバイスありがとうございます。
c++でできるとは思っていなかったので調べてなかったです。。申し訳ございません
勉強して出直してきます
>>451 なにこれ!sprintfとstringとiostreamのいいところどり!!便利!!!
とでも言って欲しいのか?アホか
453 :
デフォルトの名無しさん :2012/12/04(火) 16:24:23.73
すみません。初心者なのですが質問です。 cvCreateImageでdepthをIPL_DEPTH_8U、cnannelsを1と設定した、IplImage構造体の輝度値をいじろうと思い、 「変数名」->imageData[i]=255;とすると、 '=' : 定数値が切り捨てられました。というような警告が出ます。 これはimageDataが符号なしで宣言されていないということでしょうか。 いろいろ調べてもいまいちどう宣言すればいいかよくわかりません。
符号のある8Uって何だw -128〜127の画像とかあるのかね?
455 :
デフォルトの名無しさん :2012/12/04(火) 16:45:45.12
正直良くわかりません IplImage *labelimg = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U, 1); for(i=0;i<labelimg->height*labelimg->width;i++){ if(dst[i]=0) labelimg->imageData[i]=0; else labelimg->imageData[i]=255; } という風にしているだけなんですが labelimg->imageData[i]=255;の行で、'=' : 定数値が切り捨てられました。と警告が出てしまいます。
imageDataに直接アクセスするのをやめろ 型の情報を持っていないだろ
>>455 CV_IMAGE_ELEMかcvGet2Dを使う
C言語だとIplImageの型がcvCreateImageのパラメータによって変わることはない
459 :
デフォルトの名無しさん :2012/12/04(火) 18:41:31.08
なるほど納得しました。 ありがとうございました。
>>454 charを数値として使う場合はsigned,unsignedを明記した方がよいらしい
もっと言うと
>>455 の処理はcv::threshold使えば簡単に書ける
cvThreshold(labelimgage, labelimg, 0, 255, CV_THRESH_BINARY);
さらにもっと言うと
初心者で画素値の操作を頻繁にするのなら
IplImage構造体使うのはやめてcv::Mat_型使うべき
C言語だとcv::Mat使えないので
ステレオ平行化のため、2枚の画像で対応したsurfで特徴点を 抽出して基礎行列Fとホモグラフィ行列H1とH2を求めるのが、 チェスボード使用の時と比較して、ホモグラフィ行列が、 画像を歪め過ぎて使い物にならないときが結構あるのですが、 これってどうやったチェスボード使用時と同じくらい精度が 上がりますか?SURFでの特徴点の抽出はうまくいってるのですけど。
まずSURFのマッチング結果に誤対応点が一切ないか確認 数%でも全然違うミスマッチがあると使いものにならない あと基本的にチェッカーボードと比較するとSURFとかSIFTの点の位置精度はかなり低い だから一見合っているようでも画素レベルでみると結構ずれてることは多いので精度はどうしてもさがる
>>463 SURFの特徴点とその対応関係を決めるのがうまくいっていないから
うまくいっていないのでは
レンズ歪みが悪さしてたりしないの?
うまくいっていたら質問しません
人間性の問題
ビデオからフレーム毎にmatに入れたいのですがframeの中身が全部同じになってしまいます。 どこがおかしいのでしょうか? cv::VideoCapture cap("test.avi"); cv::Mat frame[10]; for(int i=0;i<10;i++){ cap >> frame[i]; if(frame[i].empty()) break; }
470 :
デフォルトの名無しさん :2012/12/12(水) 01:07:03.15
cv::imshowでウインドウの表示の際に ウインドウがアクティブになる時とアクティブならない時 があるのですが、作ったプログラムを読んでもさっぱり 原因が分かりません、実行後にウインドウがアクティブか 非アクティブかは何で決まるのでしょうか?
OSの気持ち
>>496 なんか間違ってない?こーだろ?
cv::VideoCapture cap("test.avi");
while (1){
cv::Mat frame;
cap >> frame;
if(frame.empty()) // 再生終了時にはemptyが設定される
{std::cout<<"終了"<<std::endl;break;}
〜なんか適当な処理〜
}
しかしstackoverflowはなんであんなに役に立つのか
475 :
473 :2012/12/12(水) 01:14:41.96
477 :
469 :2012/12/12(水) 02:47:35.26
>>471 ありがとうございます!おかげさまで解決できました!
>>473 while文中で現在のフレームと過去のフレームを比較したかったので、
あらかじめ過去のフレームを保存する必要があったのです。
そして2chはなぜ役に立たないのか
>>478 役立つコメントをよろしく
私は1.1preから抜け出せないから。
482 :
デフォルトの名無しさん :2012/12/15(土) 03:26:07.09
初心者ですが質問です。
今、ピクセル制度で画像の大きさを取得して表示するというプログラムを作っています。
コンパイルは出来るのですが、なぜかexeを動かすと止まってしまいます。
ソースは
http://codepad.org/WwHEHIsa のようになったのですが
なぜかうまくいきません。
初歩的な質問で申し訳ございませんが、一体どうやればピクセル精度の画像サイズを
取得し表示させることが出来るのか教えてくれたら幸いに思います。。。
483 :
482 :2012/12/15(土) 03:27:24.73
すいません誤字がありました ピクセル制度 → ピクセル精度です。 申し訳ございません
うちでは動いたよ
cv::Mat使おうよ…
C++は糞
cv::Matを使えとか本質できないお前の希望を語って混乱させる馬鹿は 上記プログラムがIplImageで動かずcv::Matで動く理由を正確に述べてからにしろ
俺も本質できなくて困った
本質できないワロス
mainの戻り値無くてもコンパイルエラーにならないんだな
C++はね
>>482 "ファイル名"なんていうファイルが無いから、画像の読み込みに失敗してimgが0なのに img->widthとかやって落ちてるんじゃね
読み込み成功/失敗のチェックをcvLoadImageの後に入れてみれば
494 :
482 :2012/12/15(土) 12:05:30.19
>>485 ありがとうございます!動きました。本当に助かりました
CVMAtのほうが新しいのでソレを使うほうがいいというの知りませんでした。
余裕があったらCVMATでプログラム書き換えてみようと思います。
495 :
482 :2012/12/15(土) 12:08:08.76
>>493 すいません、ファイル名というのは一応便宜上名前を変えています。
本当は画像のファイル名が入ってます。
しかし原因はどうもソレだったらしく、調べてみたら動くようになりました。
ありがとうございます
結局なんだったの
ファイル名 "c:\test.jpg" とかかな
本質的でないtypoは無視しろ
本質できないレスで混乱させるのはやめろ
馬鹿ばっか
馬鹿には無理
馬鹿と書き込むことが知的な行為だと思っているスーパー馬鹿
馬鹿って書かれているうちはまだ良い方だろ
ばかばかばかぁ〜
ググるのが仕事だと思ってるゆとりはまだマシなほうで、 掲示板で聞くしか脳の無い馬鹿とかマジで死んで欲しいわ なんで自分で解決出来ないの? ソース読めないの?英語理解出来ないの?
ていうか、自分で一から実装できないの?
>>505 >>506 そういうやつはこのスレに来ないから
このスレに来るやつはそうじゃないやつに決まってるだろ
OpenCV2.4.3.2ってなんだよ 相変わらずリリースの流れが読めないな
CVでメモリリークが起きてしまうため助言頂けたらと思います. 環境はVisualStudio2010で,MFC,ダイアログベース(CFormView),OpenCV2.3を使っています. 以下のプログラムを実行するとメモリリークが起こります. CvMat *cvCov = cvCreateMat(1,1,CV_32F); cvReleaseMat(&cvCov); この2行を記述しリビルドを行うと8つのメモリリークが起きます. この2行をコメントアウトして,リビルドを行うと解消されます. この関数は通らないようにしても同様のメモリリークが発生します. cvCreate,Releaseの数を増やしましても必ず8つだけ発生します. 原因をご存じの方がいれば助言お願いいたします.
大抵のバグは本人が関係無いと思って省略している部分にある
512 :
510 :2012/12/25(火) 17:35:01.06
訂正 cvReleaseMat(&cvCov);→cvReleaseMat(&cvCov); です.すみません.よろしくお願いします.
513 :
510 :2012/12/25(火) 17:59:01.33
>>511 新しいプロジェクトを立ち上げ,上の2行だけを追加して実行した結果も同じようになりました.
そして更に訂正で,ダイアログベース→シングルドキュメントでした.
CFormViewとOpenCVは相性が悪いのでしょうか
516 :
510 :2012/12/25(火) 19:50:51.53
>>515 全く同じ状態ですね,ありがとうございます.
cv::Mat
のほうで試してみても同様のメモリリークがおきました.
URL先の記述には気にしないでと書いてましたし,CFormViewとOpenCVの相性が悪いという事でとりあえずこれで進めていこうと思います.
ありがとうございました.
Do not worry 以外読んでないだろ。
ドントウォーリー! ビーハッピー!!!!
519 :
510 :2012/12/26(水) 09:36:43.28
データ構造内部のメモリリーク,100*100行でも同じメモリリークが発生する. と読取りました.データ構造内部のメモリリークは色々探しましたが検討がつかないため断念しています.
>>510 ループしてメモリが増え続けるの?
ライブラリのグローバルな領域を初回呼び出し時に動的に確保したまま
プロセス終了時まで使うような処理があると
機械的なメモリリークチェックにひかかるがプログラム的に問題はない
521 :
510 :2012/12/26(水) 16:04:00.41
>>520 ありがとうございます.
ループしても変わりません.
createとreleaseを1000回ループしても,変わりませんでした.
ちなみに,メモリリークしたバイト数は上から順に以下のようになっていました.
29bytes,57bytes,54bytes,53 bytes,
61bytes,53bytes,61bytes,56bytes
行列確保でのメモリリークではないと思いますのでおっしゃる通りチェックに引っかかってるのかもしれません
最新版を使ってみる
>行列確保でのメモリリークではないと思いますのでおっしゃる通りチェックに引っかかってるのかもしれません 肛門がムズムズするw
MFCのメモリリーク検出って何か#defineするだけなんだったっけ? win32 APIの::_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF) に相当するものがあってそれを(あるいは使用可能ならこれを)使ってるならいいんだけど。 もう名前忘れたけど似たようなやつで、この関数呼べばメモリリークチェックするっていう関数を main()の最後に置いたときに、グローバルに置いたオブジェクトが当然解放されてないため メモリリークとして検出されるっていうのはあった。
CvMat *cvCov = cvCreateMat(1,1,CV_32F); cvReleaseMat(&cvCov); delete cvCov; とかやったらどうなるのっと
何も起きません。
>>521 メモリリークチェックツールを使っていると当たり前にあることだから
ツールの使い方を改めたほうがいいと思う
>>525 cvReleaseMatは開放したあとNULLをセットするしdelete NULLはC++の仕様上何も起きないからつまり何も起きないけど
異なるallocatorが確保したメモリを開放しようとする誤ったコードに何の意味があるの?
馬鹿なの?
529 :
510 :2012/12/27(木) 10:56:17.49
ありがとうございます. メモリリークのチェックには #ifdef _DEBUG #define new DEBUG_NEW #endif を使用しております. プロジェクト作成時に生成されたstdafx以外のクラスと,自分で作成したクラスすべてに書いています. 書き方が悪く,勘違いさせてしまっている可能性があるので疑似コードとして示しておきます. void Debug(void){ CvMat *cvCov = cvCreateMat(1,1,CV_32F); cvReleaseMat(cvCov); } void main(void){} でメモリリークが起きます.main関数でDebug関数を呼び出していないのは仕様です. また,MFCの使用方法を共有DLLからスタティックライブラリに変更したところメモリリークは起きなくなったため, やはりMFC側の問題なのではと思っています.
MFC は糞 GTK よりも糞
mfcとxlibって、どっちが糞なんだろう
532 :
デフォルトの名無しさん :2012/12/31(月) 18:11:22.32
mfcmfc
よそでやれよ
メモリリークいやならCは捨てて C++かPythonで書くべき
Cでリークするプログラム書く人はC++でもリークすると思うぞ。
C#でおk
C#でもリスト構造に限界なくaddし続けてリークに近い状態に する人は必ず出てくる。
リークに近いってなんぞ
シュレディンガーのメモリリーク またの名を死のデバッグ作業と言う
気付かずにc++でiplimageとcvmat相互変換とかしてた死にたい
>>541 てかOpenCVベースでチューニング、最適化をはかってるんでしょ
OpenCVの上位互換って考えていいんじゃないの?
ただ有料だろうけど
直接OpenCV使えば良いだけ メリットが判らん
>>541 組み込み機器で使いやすくなりました☆っちゅうことじゃないのん?
OpenCVから組み込みへのラッパーみたいな感じ? ライセンス的にこういう売り方ってOKなんだっけ?
>>546 内部コードを触るようなカスタマイズじゃなければおkじゃなかった?
組み込み機に入れやすくなったのは嬉しい でもSOCのコアが必要で実質専用チップ製造が必要くさいな FPGAでも出来るのかな
>>549 そっか機能絞ってるって意味では下位だね
>>547 BSD Licenseだからどこをカスタマイズして売ろうがいいですよ
画像処理だけじゃなくて数値計算一般でも最速はOpenCVってことでいいの?
openvのほとんどの実装は遅い フィルタ処理あたりはまぁまぁだけど 数値計算で最速求めるならちゃんと金だしてライブラリ買いましょう
おかげでOpenCVの○○と同じ機能を高速化して という案件があるわけだ
556 :
デフォルトの名無しさん :2013/01/22(火) 22:23:18.69
OpenCVの行列計算はよくあるライブラリと比べてもかなり遅いからSIMD最適化できる人なら結構仕事あると思うよ
OpenCVで静止画処理に対しては不具合がでないコードを webカメラから取得した連続する画像に適用するのに while文でループさせてESCでループを抜ける際に 静止画に対してはcmd.exeが正常に終了するのですが、 while文を抜けて終了する際にcmd.exeが終了できません。 タスクマネージャーからcmd.exeがアプリケーションの終了でも プロセスの終了でも終了できない不具合でます。 ビルドは正常にできて、実行してて正常に動いています。 さっぱり原因が分からずお手上げです。どうしたらいいのでしょうか?
>>557 早い行列計算だけなら既存のライブラリがいくらでもありそうだからそれでいいような気もする。
Matlabでも画像処理できるみたいだし、フリーじゃないけど。
>>558 情報が少なすぎてわからないよ
OpenCVのバージョンが2.2なら最新までバージョンアップしてみたら解決するかも
2.2は動画周りダメダメみたいだし。
>>559 環境は、OpenCV2.3.0(32bit)、win7(64bit)、
最新に2.4にバージョンアップしてみます。
whileの文の中で宣言したMat imageを〜クラスの〜関数に&image
渡してハフ変換とかsurfで点を描写したimageを
imshowで表示させescでwhile文を抜けると終了するときにエラー
が出てしまいます。
クラスの関数なしで、全処理をwhile文に描くと終了する時に
エラーがでないのですが、あまりにもwhile文の中が長すぎて
見づらいのです。
>>557 C++に比べて遅いPythonを使って遅いOpenCVを使って
重い画像処理をするなんて狂気の沙汰なんだろうか・・・
でもやめられない
質問です 現在、opencvで手の輪郭線と距離変換画像から手のラベリングをしたいのですが、具体的にどんなプログラムを書けば良いでしょうか 具体的には次のような処理を実現したいのですが... 画像に対し、各輪郭ごとに内部を塗りつぶしていく 塗りつぶすたびに、「距離変換の値が最大となる座標」が塗り潰されたかどうか判定する もし塗りつぶされいれば、その輪郭が「求める手の領域」のものになる ヒントでも良いのでアドバイスお願いします
丸投げじゃねーか
何か問題でも?
>>564 すみません、書き方が悪かったです
距離変換画像を走査して,手の閾値と思われる範囲で違う画像に書き出そうとすると手の形がきちんと書き出すことが出来なくて困っています
例えば、現在ソースはこんな感じでループさせています
※640×480の大きさで、disが距離変換画像、whiteが黒で初期化した画像です
for(int y=0; y<480; y++)
{
for(int x=0; x<640; x++)
{
int a = dis.step*y+(x*1);
if(dis.data[a] >= 60 && dis.data[a] <=255)
{
white.data[a] = 255;
}
}
}
>>566 dataに直接アクセスせずにcvGet2D/cvSet2DなどのAPIを使え
>>567 そろそろみんなcv::Mat::atに移行してほしい・・・
>>566 手を検出するプログラムならサンプルコードがWeb上にちらほらあるから参考にどうぞ。
NDEBUG付けて最適化マックスでコンパイルして計測しろ
ちょっとぐらい遅いだけなら書きやすい方でいいよもう
キャストも理解せずdataにアクセスしてバグらせるより遅いほうがまし
OpenCVのソースコードも全部読破して理解してて よっぽど詳しい人じゃない限りは 画素の走査は何も考えずにcv::Mat::atを使おう
最初に画素アクセスの方法を示さなかったクソ設計が悪い
>>573 OpenCVのソース全解析して把握したら
「自分は画像処理のスペシャリストです」
ってとりあえず名乗ってもいいよね?
LinuxのOS全ソース読んだらLinuxカーネルのスペシャリストだし
おれが面接官だったら「馬鹿が来た」っておもうとおもうわ
俺が面接官なら、「で何が専門なの?」って聞くわ
なぜか突然俺が面接官だったらとか上から目線の妄想を始めるキチガイに面接される奴がかわいそうだわ
勝手に妄想してかわいそうって言う人こわい
画素アクセスなんて画像処理の基本なのにv2まで仕様をちゃんと固めなかったのはなんでだろうな
ここにいるような奴らは技術系の下っ端だろうから 人事側で採用担当になる事も 技術担当者として面接に参加することもないんだろうけどな
そりゃ技術などの戦力にならない奴が行く所だからな、人事って こんなスレ見るような人が人事にいるはずがない
妄想はブログかtwitterにでも書いてろ
OpenCVとかプログラムの不具合情報とか使い方ってブログに載せると 毎日アクセスが一定数あるな。 大学生とかで使ってる人って結構いるのかな?
>>584 大学生もそうだし、素人でちょっとしたアプリ組もうとした際に
OpenCVはお手軽で画像変換その他の大きな助けになるから利用者多いでしょ
おっと途中だったわ 特に顔認識、映像キャプチャとかで
surfってxとy座標と半径が取得できるだけなん? もっとなんかパラメーターってないのですか? 点同士のマッチしてるかどうかって座標と半径だけで 決めてるのですか?
OpenCVとFrycaptureを使って2眼カメラの左右の画像を取得しとうと考えてるんですが Frycaptureから右側のカメラ画像しか表示されず、右の画像しか得られません。 左右の画像を得るためにはどうしたらいいのでしょうか。
>>590 二眼ってことはステレオカメラだよね。
マニュアル丁寧に見れば、左右の画像取り出す方法載ってるはず。
もしかしたらそうやって取り出した画像はレクティファイされていないかもしれないけど。
>>590 Frycapture使ってたことあるけど普通に読めてたぞ
あまり覚えてないけど、カメラの個数をとって初期化したり同期の設定をするAPIがあるだろ
まあマニュアル嫁だし完全にスレ違いです
>>593 もしOpenCVの動画APIから読もうとしているならやめたほうがいいぞ
FlyCaptureでgrabした画像データをOpenCVの画像形式に変換してから使うべき
そうすると動画のキャプチャにOpenCV関係ないしスレ違いという意味です
TPIPを使って2PC間で画像のやり取りを行い、opencvで処理をしています。 クライアント側では480x640の画像をMatクラスで取得し、 std::vectorで確保したバッファにimencodeしてsendします。 サーバ側ではrecvしたバッファをMatクラスへimdecodeしているのですが、 この際エラー処理として、デコードしたMatが480x640でなければ再びrecvするという事をしています。 この処理により格段にfpsが低下しているのですが、この処理がなければデコードした画像の 下半分が灰色になってしまったり、場合によってはハンドルされていない例外が発生しプログラムが落ちることがあります。 私の知識ではこの”下半分が灰色に”なる現象がtcpip通信の結果起こってしまったのか、 それともimencodeやimdecodeが原因で起こっているのか判断しかねます。 原因に心当たりのある方がおられましたら是非ご教授ください。お願いします。
ちゃんと受信し終わってから使いましょう、みたいな?
転送量を見ればいいじゃない 全部あるならbitmapで保存すればいいし
597 :
594 :2013/01/31(木) 00:22:16.51
クライアント側では画像をUSBカメラから取得したものをjpg圧縮しています。
圧縮後のサイズはカメラのキャプチャごとに異なり、これはサーバ側でも同様です。
バッファサイズとデコードした画像のサイズをコンソールに出力させていますが、
buffsize=74656
Recv.cols=640
Recv.rows=480
buffsize=74460
Recv.cols=0
Recv.rows=0
OpenCV Error: Assertion failed (dst.data != src.data && src.cols > 0 && src.rows > 0)
in unknown function, file ..\..\..\..\ocv\opencv\modules\imgproc\src\imgwarp.cpp, line 2755
と表示され、一瞬サーバ側で画像が表示された後にエラーが発生してプログラムが強制終了してしまいます。
画像の縦横が0,0なのでアフィン変換等でエラーが発生するのは当然なのですが、
受信サイズが十分あると考えられるのに縦横が0なのはデコードに失敗しているのでしょうか?
また、col,rowが640,480でない場合受信をやり直すようにプログラムを変更すると、fpsはガタ落ちしますが
エラーで強制終了することはなくなります。
しかし、
>>594 で述べたように画像の欠落が発生して表示されることがあります。
送り方、受け方に問題があるのでは
非同期通信で上書きしてるとか 受信サイズ足りてないし
copyTo使ってるぅ〜?
>>597 ネットワークプログラミングの基礎をやれ
recvは一度の呼び出しで全て受信できるとは限らないから
受信するサイズをあらかじめ知っているか終端の判定ができるようなプロトコルにしないと
どこまで受信していいか分からないからうまく通信できいないのだろ
まず通信プロトコルをきちんと設計しろ
分からないならHTTPの上を通すなどしろ
602 :
デフォルトの名無しさん :2013/02/01(金) 02:24:02.79
最近opencvを使い始めたんだけど、ググってもどうしても解決しないことがあるから質問させてください 顔認識の分類器を作ろうとしてて、正解画像2901枚と非正解画像1000枚で学習させようとしてるんだけど vecファイル作成までは出来ても、その後のtraincascadeってコマンドを実行しようとすると 「this application has requested the runtime to terminate it in an unusual way」ってメッセージが出て動作停止しちゃうんだ ちなみに正解画像、非正解画像の画像サイズは全部76×76でコマンドは C:パス>opencv_traincascade -data original -vec OK.vec -bg NG.txt -npos 2901 -nneg 1000 -h 76 -w 76 -numStage 9 -featureType HAAR -mode ALL って感じで書いてるんだけど何がいけないか教えて頂けないでしょうか
>>602 アクセス違反とかで落ちているわけだからデバッガで見るしかないし
ソースをデバッグモードでコンパイルしてデバッガで見れば分かるだろ
OpenCVは品質がいいとは言えないから
自分でOpenCV自体をデバッグできる能力がないと使いこなすのは難しい
そういうの分からなかったら実行時の環境か入力に問題があるのは確かだと思うから
まず正解画像1枚、非正解画像1枚で動くか試して
動かなかったら
- パラメーターを全部デフォルトでやってみてどうか(w/h76ってかなり大きくて学習に相当な日数がかかると思うぞ)
動くなら
- NG.txtに書かれている画像はOpenCVから全て正常に読めるか
- OK.vecを正常に表示できるか(createsamplesのオプションであったはず)
- nposとnnegを小さめに指定してみてどうか(メモリが足りてるかとか)
あたりを試してみてそれでも分からなかったら勉強してからデバッグしろ
>>603 丁寧なアドバイスありがとうございます
vecファイルを作りなおしたら出来ました!
もっと精進します
あれ、解決済みだったのか
>>607 この間やったら直ってたり直ってなかったり挙動がよく分からなかった
>>386 このあたりでPythonをdisりまくったけど
俺が間違ってた、Python超使いやすいわ
もはやC++書くのが面倒だと思えてしまう
お前らもPython使おうよ
ほんとにおすすめ
PythonのCV使ってみたけど 結局CでOpenCV知ってないと使えないから Cで勉強するのと手間変わらない
>>610 最近のcv2はマジで使いやすくなってる確かに覚える関数は同じだけど
画素を全部numpyで使えるから素晴らしく直感的に操作できる
613 :
デフォルトの名無しさん :2013/02/03(日) 20:04:02.79
どうせならHaskelから使いたい
勝手にやってろ
pythonにVisualStudioないし
C#でやっててももにょると元のOpenCVとラッパー部分見ないといけないし
VisualPython#作れよゲイツばか
why
なんだと...!
Matの行列拡張(3x3から4x4とか)ってどうやってます? 要素単位でコピーしてるんですが何かスマートなやり方ないでしょうかね
622 :
デフォルトの名無しさん :2013/02/07(木) 07:13:41.10
ピトンだかなんだか知らないけどそんなマイナー言語つかって楽しいのか? ただのオナニーじゃないか
(当社比)
記念に釣られてみるが ここ最近の Python の伸びは node.js の影響かもな
Pythonは何十年も前から海外で人気だろ 日本とかいうローカルで無名だっただけだ
世界が全部3系になったらをれもpythonやる
もうやっといた方がいいんじゃない?
OpenCVの話をしろよw
それでも俺はLispを使う
お前らが何言語使おうがどうでもいい!!!!!!!!
OpenCVってCとPython以外は何言語が使えますか? (出来るといえば何でも出来るのは判りますが、 ほどほどに便利に使えるっていうレベルでおながい)
>>632 自分で永久にメンテする意欲がないなら公式以外使うな
公式は、C、C++、Python
>>632 JavaもC#もRubyもあるよ
非公式だけど
635 :
デフォルトの名無しさん :2013/02/09(土) 00:28:52.01
質問です。cvcalibratecamera2実装でintrinsinc.xmlに書き込まれた値がf=954.16となりました。 この値が意味するのは、焦点距離fをピクセル単位で表すと954.16[pixel] という意味で、これを焦点距離[mm]にするためには1pixel辺り何ミリかという 基準x[mm]/[pixel]がわかれば焦点距離をmm単位で表せるとおもいます。 使ったカメラは6.3[mm]の焦点距離であることが説明書でわかるので、 この値で逆算すればいいのでしょうか?
636 :
デフォルトの名無しさん :2013/02/11(月) 04:59:00.49
グレースケールで読込むと三分割されるのはなぜなのか・・・
あれですね わかります
>>636 カラープレーンが完全に分かれた保存形式だからだろうな。その画像形式の詳細を知らないと上手く扱えない。
639 :
デフォルトの名無しさん :2013/02/13(水) 11:30:09.78
creat_samplesで作成した画像をjpgなどで違うフォルダに保存することは可能ですか?
はい
641 :
デフォルトの名無しさん :2013/02/13(水) 11:50:57.83
何かコマンドがいるのですか?
>>641 自分で改造すればできる
-debugでimshowしてる画像を保存するようにするだけ
またはvecファイルを読んでjpgで保存するプログラムを書く
javaつってもJNIでそ
646 :
デフォルトの名無しさん :2013/02/17(日) 01:58:39.81
マルチ氏ね
>>622 最近OpenCV使い始めた新参者です。
このスレとかWebとかで情報集めてるんですが、
PythonでOpenCV叩くのは不人気みたいですね。
10年くらい前からPythonやってた人間からすると、
使い捨ての画像処理コードはコンパイル不要の
Pythonで実装したいところなのですが。
サンプルコードがもっと出回れば流行りそうな
気がします。
欧米発の科学計算ツールでも、Pythonインタフェースを
搭載してるものは意外とありますよ。
>PythonでOpenCV叩くのは不人気みたいですね。 個人的にPythonは好きだし速度にも不満は無いけど OpenCV叩くときにCのOpenCVの知識が前提になってて Pythonで書くメリットがほとんどないんだよね
651 :
649 :2013/02/24(日) 17:55:15.07
>>650 >OpenCV叩くときにCのOpenCVの知識が前提になってて
そこがドキュメントとサンプルコードで補われれば
道は開けそうですよね。
NumPyとの連携、それとコンパイルレスというだけでも
メリットは充分享受出来そうなものですが。
opencv.jpとか読んでいても、この程度の情報しかないと
フルスクラッチは難しいな、と感じてしまいました。
簡単な画像処理コードはいくつか作成出来たので、
もう少しノウハウを開拓してみます。
いや、そうじゃないでしょ。 MFCみたいに糞API剥き出しのただのラッパーなのよ。 Pythonらしさがないから嫌われてるんだと思う。
画像処理じゃないけど wxPython は ラッパーに見えて実は良く出来てるな wxWidgets の出来が良いからかもしれんが
Pythonらしさは、もう一つ上のレイヤに作ればいいだろ
>>649 その通り、OpenCVでもPythonはもっと流行してほしい
サンプルコードとかも出来る限りPythonで書いてほしい
C++と大して変わらないってのはむしろ新しく関数を覚えなおさなくていいっていうメリットだと思う
さらに画像を画素の行列としてNumpy形式で読み込めるから
画素レベルの操作だと十分Pythonらしく書けるよ
他にもPythonは数学関係や機械学習のライブラリが豊富にあるから
組み合わせて使えばいろいろできそう
唯一のネックはC++に比べて実行速度が遅いってことだけだけど
Pythonでも耐えられないほど遅いってことはない
>>655 そのへんのものはこれからはJavaでやってくれというスタンスでしょう
需要と使用者数で考えればしょうがないかと
>>656 おまえはまずhを抜く必要があるのか考えろ
hを抜くのが本当に必要なことなのか?
リンク出来なくて不便ではないか?
なぜ2chでhを抜くという文化が生まれたのか?
現代においてgithubのURLのhを抜く必要があるのか?
そうやって判断力を養っていけばそのうちSimpleCVが良いのか分かるようになる
リンク出来るからどうでもいいな
そのレスを見た人のうち何%がリンク表示されているか推定しろ
確か ● 買わないとリンク貼れないはず
>>657 Javaは何気に使い勝手が悪いし
スクリプト言語の手軽さには勝てないっすよ
Javaはコード量多いし
AndroidでJava対応したから
ユーザ数を鑑みてついでに対応させたようにしか見えない
>>656 リンクとかは置いといてちょっと見た限りでは
OpenCVじゃなくてわざわざこれ使うメリットは無さそうに思えます
てか中でOpenCV使っているし ちょっとかぶせただけのものでしょ シンプル何とかにろくな物はない
シンプルと言いながらソース見る時に両方見なきゃいけないから二度手間になるんだよな
うちのプロパイダは規制かかってるからなのか知らないが リンクは禁止(つまり●買わないと駄目)って前に表示されたことあるな
このスレも含めてだけど、2chは瀕死の状態だね。どのスレも進まない。
忍法帳のレベルの問題だろ
大規模規制だと思うけど
そもそも、OpenCV自体、ちょっと試すぐらいの用途でしかないからなぁ C++の今ので十分だろ。
OpenCVってlinux or Winですよね? 組込みRTOS上で使いたいんだけど、手軽に出来る オススメなライブラリを知ってる人いませんか?
OpenCV使えばええやん・・・
あれ、組込みのRTOSからでもOpenCV使えるの? linux か windowsじゃないとOpenCVは対応していないと思ってた。
組み込みのRTOSってなに?μITRONの類い?
OpenCVのソース見て、必要な画像処理だけ実装すればいいやん
682 :
デフォルトの名無しさん :2013/03/12(火) 11:47:48.97
OpenCVいいね なんでもっと早く勉強しなかったんだろう
>>679 IOなどOSのシステムコールに依存している部分だけ置き換えれば動くだろ
必要なところで抜き出せばいい
OpenCVSharpって使ってる人いる? 聞きたいことあるんだけど
>>680 iTron系ですよ。
>>681 OpenCVって、OS(linux or Win)に依存しまくってる設計実装かと、
勝手に思ってました。OSに依存した作りじゃないんですか?
8個くらいの基本的なAPIしか使わないんですが、1週間くらいで、
できますかね?
必要な部分のコードを自分で眺めて判断すりゃいいだろ
Iplimage とcapturerの使い方と内部の行列計算関数覚えたら他はそんなに使わん それにos選ばん
>>685 BSD ライセンスだから商用で使うなら取扱説明書なりに記入してね。
どんな処理を持ってきたいかは知らんけど画像加工や空間フィルター位なら一週間で出来るんじゃね?
顔認証とか特徴抽出、学習ならもっと時間みとき
// / / バカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ 馬鹿には無理 / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
公開したら需要あるかな
>>676 違うだろ
フジテレビと同じでアップルもチョンに乗っ取られてる
全てはチョンの陰謀
公開したところで、需要がない。opencvソース見るのと変わらん。後悔するだけ
ほう、RTOSでOpenCV使ってるやつは結構いんだね しらんかった
>>694 俺にも無理そうだからおまえ頼むわ。
公開してちょ
車輪の最発明乙
698 :
デフォルトの名無しさん :2013/03/21(木) 01:16:05.67
OpenCVつかいはじめたが糞使いにくい C言語の配列から出し入れできるようになぜなってないのか 関数が止まってるとデバックするのがすげえ苦労するわ
ナニを出し入れするのよ
典型的な低レベルベテランプログラマなので相手にするな
視線入力やってる人いる? 赤外線カメラで白目部分に光を出すのが一般的なのかな?
俺はopencv 使いやすいと思うけどね。 ただ、欲を言うとdirectshowやwindows標準 との相性がよくないかな。 たとえば、directshow ではbmpのパラパラ画像が流れてくるんだけど、opencv とフォーマットが違う。 BGR,下の座標が0なのに対してopencv はRGB 上が座標0 入出力変換して渡してやるのに10msはかかるんだよね。 30fpsで処理したいとき全体で33msで抑えないといかんので変換が重たい
ミルフィーュ
704 :
デフォルトの名無しさん :2013/03/21(木) 05:22:32.56
>>702 なんで無駄な変換してんの?馬鹿なの?死ね?
>>694 手こづって挫折したのか?出来ないなら返事求む。
>>704 勉強になります。
是非参考にソースをお願いいたします。
>>706 お前のソースが無いと添削のしようがない
708 :
デフォルトの名無しさん :2013/03/21(木) 10:05:44.84
馬鹿には無理
>>706 OpenCVのソース参考にbmpを直接いじればいいだろと
>>705 自分で使う予定もないことを無料でやるわけないだろ
ライブラリのどこでどういうシステムコールが必要かも予測できない素人に
iTRONへの移植ができるとは思えないってだけ
Toy OSやマルチプラットホームで動作するライブラリ作って10年間勉強しろ
>>702 OpenCVは基本BGRだしMatのtypeでRGBも指定できるだろ
変換してもそんなにかからないと思うが画素のアクセスに重い関数を使っているか
変換前の画像が大きすぎるかじゃね
C++使いにくいって人は Pythonから使ってみることをおすすめする C++で書いてたのがアホだったと思うくらい簡単に使えるようになってるから
PythonCVがですか?
おまえら口先だけだな俺も人のこと言えないけど
手先だけです
716 :
デフォルトの名無しさん :2013/03/21(木) 21:49:29.90
imreadってファイルの名前が九文字以上だと読めないんだけど仕様なの?
たくさんレスついて嬉しかったが、メモリアクセスだけの簡単なのに誰も答えないのは何故?
別にC++が使いにくいとは思わん。 ただ、Cより早くなることはないんだよな。 ただ、そもそもCVって、今までやったことないのを ちょっと試してみるかとか、公的機関とかで使う もんだと思うが。うわべだけいじれても、人と違うこと できないしなぁ
719 :
デフォルトの名無しさん :2013/03/21(木) 23:05:17.84
>>716 imreadの前身の関数cvLoadImageが何文字でも読み込めるので
使い方の問題なのでは?
OpenCV2.0から実装された関数でDOSの文字制限8文字+3文字はさすがにない
>>718 OpenCVは単なる画像処理便利ライブラリ集だけども、結局どう使うかでしょ。
OpenCVの関数単に1個よぶだけじゃ、ありがちな画像のフィルタリングとかしか出来ないわけだけども、
特徴点抽出して、データベースと照合して、云々ってすればいっぱしの画像認識システムができるわけだからさ。
iPad向けのARシステム作ってるけど、OpenCVなかったらかなりしんどいよ。
その辺のCV系の論文の実装をしてみよう、ってなったときにすごく便利だしね。
まあ、それをもってして「ちょっと試してみる」とか、「うわべだけいじって人と違うことできない」って言うならそうだけど、
そしたらあらゆる研究開発は人と大して違うことをやってるわけじゃないからなあ。
724 :
デフォルトの名無しさん :2013/03/22(金) 01:07:50.80
>>721 ほとんどの研究開発がそのちょっとの違いを出すためにエネルギー注いでいるのでは。
そこに付加価値があるんじゃないか。ただ、研究系が研究の本筋以外で楽なものを使うのは当然なのでは。
売り物のシステムの場合、他と違うものが既存の組み合わせでもできるなら、それも付加価値があると思う。
でも、ビジョンの場合、そういったものができるとは俺は思わねぇ。中をいじれないなら、所詮別の奴でもできるだろし。
そしたら、次は安売り勝負だよね。それに、論文読んで実装できる力があるんなら、OpenCVなくてもできるだろう。
なので、初期の検討段階で実装を試してみたいとか、デモ用ならありうるけどと俺は思っています。
実際のところ、商用としてどう使われてるのかよくわからんのだけど、展示会とかで話を聞く限り
あまりはずれていないと思うんだがなぁ。実際どのくらい金になってるんだろね?
>>725 うーん、できるかもしれないけど、自分の場合、SIFTやらSURFやらの特徴点抽出アルゴリズムとか、そういうところを自前で実装するのもめんどくさいし、
研究が特徴点抽出アルゴリズムの改良じゃなくて、そういったものをつかってアプリケーションを作る部分だから、自前でいろんなライブラリもってきて
作ってもいいし、SIFTを自力で実装してもいいけど、そんなの無意味じゃん?だからOpenCVを使ってる。
「所詮別のやつでもできる」ってのはそうなんだけど、できるやつが何人いるかって話でさ、確かにOpenCV使ってちょっとSTL使って、っていういい加減な
プログラムなんて他人でも作れるじゃん、って思うかもしれないけど、ほとんどのソフトウェア開発者はOpenCVをどのようにして使うか、なんて知らないから
十分金になるよ。
ああ、おっしゃるとおり、あとはプロダクトがどういうプロダクトか、ってのもあるか。自動車用の画像認識にOpenCVなんか使わないよね、という意味ではyesだろうなあ。
けど、2-3年勝負できるサーバーサイドで画像解析するプロダクトを作ります、とかだったら全然普通に使うでしょ。
結局開発の規模感によって違ってくるよね。少なくとも2-3人とかのチームで開発するとかなら間違い無くOpenCV使って勝負できるものは作れると思うけど。
金出す側にとって開発者が何を使うかは一考の価値も無い
使う側にとってもな
そんでライセンス確認もせずにGPL感染や特許侵害してて迷惑掛けるんですね
特許権侵害は「非」親告罪 納入ソフトがOpenCV使っていたら要注意
OpenCV自体はBSDライセンスだし問題ないでしょ むしろ上に上がってるSIFTやSURFのほうが特許取得されてて要注意だわ 知らない人多いみたいだけど
>>726 あまり知らないようですけど、そのいっている特徴点抽出のSIFTなりはBSDじゃないライセンスいる部分ですよ。実費としているはず。
それもかなりの割合で。あと、金の他に情報の提供も要求されるはずですよ。こちらの希望するライセンス形態なんかまず通りません。
比較的価値ある部分がそれだからどうなの?ってのもあるんですよ。欧米のライセンスはかなり厳しいですぜ。
特許なくて性能いいかわりの特徴点検出がたくさん入っただろ
FREAKSとかいう新しいの全然使えなくてワラタ
論文読んで実装できるかどうかもわからないレベル、 中身の良し悪しも判断できないレベルなら、そりゃ試してみるしかないだろうな。 どこに違いがあるかも、わからんのだろ。
特許絡みのはnonfreeになってるから普通に気付くでしょ
まぁ、surfもsiftもいうほど万能じゃないけどね
SURFとかSIFT使ったってバレないっしょ
なんで特許のあるコードがOpenCV本体に入っちゃったの? 商用利用可能なのに一部はそのままでは不可ってやるぐらいなら 最初から別のモジュールとして出せばいいのに
何が問題なの? 普通に特許料払えばいいじゃん
大きい会社ほど特許料支払うの凄い嫌がるようになるのはなんでだろうね 全部独自技術じゃないとダメみたいな謎の風潮
743 :
デフォルトの名無しさん :2013/03/23(土) 15:15:35.45
ついでに言うと大きい会社ほど他所の会社の真似をしたがる どうしても同じことをやらないと気が済まないと言うか レベルの高さよりも品質落としてでも自社の技術()を寄せ集め 横並びを好む
>>718 の真意がよくわからないんだよな。
「今までやったことないのをちょっと試してみるかとか」ってのがどういうレベルでの「試す」なのかがよくわからない。
大企業が消費者向けの完成された商品を提供するようなレベルでなきゃ、「試す」なのかな?
小規模な開発だと、結構お試しっぽい感じでいろいろ動いてると思うんだけどさ。特にこの業界は。
「うわべだけいじる」「人と違うことする」についてもどういうレベルを想定してるのかよくわからない。
わからないならレスしないでください うざいだけです
>>740 だからそうなってるだろ
opencv_nofreeに分けてて勝手にはリンクされない
>>745 議論をするのにどういう前提条件での話なのか確認するのはダメなの?
ハフ変換って精度わるすぎね? ペイントで、直線と丸を書いて検出させても検出できん事多いのだが、
>>748 確率的ハフ変換ならパラメーターでどこまでを検出するか指定できる
VideoCaptureでWebカメラから映像を取得してimshow()で表示したいんだけど、 imshowの後にwaitkeyを書かないとグレーの画像しか表示されない。 これってなんで?仕様? 2.4.4でVS2010です。
確認しないで書くと、どっかでモノクロ指定かグレースケールに変換してないか? まぁwaitkeyで解除されるってのも変な話だが
waitkeyがないとイベントループが回らなくてウィンドウへの描画が起こらないんじゃね?
>>752 すまんグレーの画像ってのはグレースケールじゃなくて灰色の単一色の画像なんだ
取り敢えず取得して表示するだけの最小のプログラムで試してる
>>753 そういうのがあるのか
必ず必要なら1ミリ秒の時間がもったいないなー
必ず必要です。最小値1msも当たり前。画面書くのやめればいいさ。 Sleepしてもオープンcvに処理が回るわけではないんだよな
d ということは今回は画面表示で気づいたけど 他でもwaitkeyがないとダメなこともあるかも知れないんだな 覚えとくよ
1msとか人間が認識できるわけないからまったく問題にならない、誤差の範囲 内部処理とか描画のが絶対時間かかってる
たかが1ms、されど1ms Webカメラ使ってるならコマ落ちにも関わってくるからな
highgui使うのやめればいいじゃん。
761 :
デフォルトの名無しさん :2013/03/29(金) 11:45:07.76
OpenCVって不安定すぎない? OSとvisualstudioのバージョンが同じPCにライブラリ持って行って動作しないからその場でコンパイルしなおしたわ
へえー
んで?
764 :
デフォルトの名無しさん :2013/03/29(金) 14:08:03.58
自己解決しません
waitKeyはSleepで1ms待ちながらpeekMessageしてるから Windowsスケジューラの仕様上、1を指定しても16msは待ってるんじゃね
>>765 昔聞いたことあるなと思って、
今やってみたら1ms単位(?)でSleepしてるみたい(winows7)
>>761 PythonかJavaで書いたら?
なんでみんなわざわざC++みたいなカオス言語で書こうとするの?
マゾなの?
>>766 昔はOS自体のタイマー精度を上げるかマルチメディアタイマーを使わないと
10msくらいは誤差が出るものだったけど何か変わったのかね
>>767 そのC++のライブラリをリンクしてるから同じだろ
>>761 AVXやPOPCOUNT使ってコンパイルしていると
対応してないCPUで動かないかもね
770 :
デフォルトの名無しさん :2013/04/01(月) 13:30:17.35
usbカメラでつまづいてググったらみんな つまづいとるがな でさewlibだっけ なんかそれつかってやってるんだが while 入った直後の capture.capture まではバグでないんだけど 次の cvcopyで落ちる なんでだ orz
direct sdkはいれた ソースはふじもんのコピペ
msysでライブラリ作成時どうしてもlibstdc++とlibgccがリンク出来ませぬ フラグ立ててもガン無視、cmakeのcuiで無理矢理リンクさせても無理 gccでopencvやってる人、作成物のリンク時にstdcとgccリンクしてるの?
774 :
デフォルトの名無しさん :2013/04/07(日) 15:41:49.60
gccにリンク? 日本語わからない。。
775 :
デフォルトの名無しさん :2013/04/08(月) 12:13:38.97
斜めになった長方形を検出するのがどうもうまくできない
カメラを斜めに傾けるといいよ
サンプル通りで普通に動いてた気が Ver2.10の頃だが
778 :
デフォルトの名無しさん :2013/04/10(水) 10:12:29.38
tes
779 :
デフォルトの名無しさん :2013/04/10(水) 11:38:46.56
2.4はまだ相変わらず情報量少ないの?
少ないのではない 無いのだ
画像処理の専門書読んだら 気が狂いそうな程意味分からん数式ばかりなんですが このスレの皆さんはその数式も理解してプログラミングしてるんですか? 例えばCRFとか
たしなむ程度には
大抵はライブラリ使うだけでしょ
ゆとり時代の高校数学の指導要領を見ると画像処理に関連の深い分野がすっかすか だからな。今はかなり改善されているけど偏微分とかは復活していない。
サンプルソースコード見ながら数式追いかけてる
786 :
デフォルトの名無しさん :2013/04/12(金) 16:05:38.08
高校数学で頑張っても所詮文系だよ
とりあえず線形代数の本を本棚に祀った。
いや、読めよ 手元に置けよ
読もうと思って裁断まではした
OpenCVって、RGBの並び順はなぜBGRなんですか?
インテルが作ったからだろ
32bit intで上の桁から順にRGBAって入れていくと、リトルエンディアンだとバイトの並びはABGRになるからそれが由来じゃね?って話を聞いたんだが真偽の程は?
バグだな
いいエンディアンは死んだエンディアンだけだ
16色の頃からBGRの順番だしな 24bitでもそのまま拡張しただけか?
アルファベット順だったりして
それだ
pgr
799 :
デフォルトの名無しさん :2013/04/15(月) 17:24:12.44
threshold()での2値化の際のビット深度についての質問です。 cvThreshold()では32Fの画像を2値化する際、 srcに32bit(32F)の入力画像、dstに8bit(8U)の2値画像を指定していました。 でも同じことをcv::threshold()で行おうとした場合、 dstに指定した8bit画像のビット深度が勝手に32Fに変換されてしまいます。 リファレンスでは (cvThreshold) dst: 出力配列.src と同じデータタイプ,または8ビット. (cv::threshold) dst: src と同じサイズ,同じタイプの出力配列. と書かれているので、この動作は仕様と考えていいんでしょうか。
SetCursorPosがリンクされません。助けて下さい。
801 :
デフォルトの名無しさん :2013/04/16(火) 00:30:24.38
現在SetCursorPosを使おうとしているのですが、以下のメッセージが でて実行することができません、 error LNK2019: 未解決の外部シンボル __imp__SetCursorPos@8 が関数 _main で参照されました。
includeしてないんじゃね?
804 :
デフォルトの名無しさん :2013/04/16(火) 01:51:55.52
#pragma comment(lib, "kernel32.lib")
次の方どうぞ
次の方はよ
User32 ですれ違いと見た
809 :
デフォルトの名無しさん :2013/04/16(火) 11:16:52.92
dft動かねーよ
810 :
デフォルトの名無しさん :2013/04/17(水) 12:08:40.37
opencv2.4を使用しています。 vc2012です。 カメラから入力した映像のなかで選択した色を抽出し、その色の部分を追いかけるといったプログラムを作りたいのですがまったく手がつけられません。プログラムの流れというかそういったものをヒントで教えていただけると助かります。
>>810 プログラムの流れ
カメラの映像を読む
↓
選択した色を抽出
↓
選択した色を追いかける
↓
終了
単純な方法 選択箇所の色を抽出 変数に保存 毎フレーム全ピクセルから変数と合致する色を探す
OpenCV関係ねーと思ったら、画像処理スレ落ちてたのかw
こっちは落とさないようにしよう
OpenCV使ってキャプチャした動画からランダムに表示される数値を動的に読み取って スプレッドシート上で加算していくアプリ作るのってOpenCV初心者ならどれくらいの時間でやれますか? プログロムの知識は2,3年Javaの開発してたくらいでCとかC#の知識はあまりないって感じです というかそもそも市販の10万前後のPCでそのくらいアプリをまともに動かす事が可能でしょうか?
数字の書体や大きさ太さは固定?ランダム?
数字の書体や大きさ太さは固定で出現する位置も固定です
OpenCVの部分だけなら1週間〜3週間ぐらいってとこじゃない? 全部スムーズに行けば C++で引っかかれば+2週間ぐらいかかりそう
ありがとうございます 頑張ってみます
opencvに文字認識なんてあったけ?
あらたいへん
なんか昔OCR系調べた時にそんなネタあったよな、 と思ってググってみたけど OpenCV単体じゃなくて他ライブラリとの組み合わせではいろいろあるみたいね
位置フォント大きさ固定なら フォント画像用意して距離測るだけでしょ
数字10種類しかないしな
数字が手書きみたいに適当なのか、PCで記録された時刻等なのかでも難易度がえらく変わるような
画像にノイズが含まれていないことが保証されていて位置もフォントも固定なら 単に画像の特徴点の一致だけを見れば良いから一日あれば出来るだろう
>>817 いわゆるテンプレートマッチングか。出る場所決まってるなら、テンプレート画像を
用意しておいて、対象のROI(Region Of Interest; 問題にしたい領域)を指定して
正規化相関とかで数字を一つ一つチェックして相関値が最大のを取れた数字にする、という
のでいいんじゃね。
>>826 画素値そのまま並べたベクトルでユークリッド距離が一番近いやつを選ぶだけでえやろ
正直ネタとしか思えない内容
ネタとしか思えん言うのはある程度画像の扱いに慣れてるからやろ
あー完全固定だったか 画素を数点比較するだけで出来るなw
832 :
デフォルトの名無しさん :2013/04/24(水) 18:13:08.73
さて、一日経った訳だが、
>>826 は何か出せるのか?
OpenCV使うのがはじめてだったりするとまだ cmake で間違って64ビット用のバイナリを作っちゃってWin32プロジェクトで 動かない事に悩んでるレベル
今は自分でコンパイルする必要ないから
「おい、そこのお前。 こいつをコンパイルしろ。 今すぐにだ」
836 :
815 :2013/04/27(土) 17:32:11.81
先日質問した者ですがOpenCVにはテレビ出力に対応した入出力ライブラリは用意されていないのでしょうか? DirectShowと連携すればそういう事が可能になるようですが色々調べてみたら OpenCV単体ではUSBカメラ用のライブラリしかないような印象を受けました
837 :
デフォルトの名無しさん :2013/04/27(土) 18:37:10.73
OpenCVはくだらない関数つくりすぎ しかも名前が似てるもの量産するし
838 :
デフォルトの名無しさん :2013/04/27(土) 19:18:42.91
直交性がないとか ネーミングセンスが悪いとか
>>836 オープンcvはdirctshowのラッパーだからできると思うけどいくらで作る?
なんならdirctshowフィルターを自作。dirctshowフィルターの中身をオープンcv使えるようにすればいい。
見返りがあるならもっと情報提供するよ
840 :
815 :2013/04/27(土) 22:39:39.02
>>839 個人で使うものなのでいくらというとタダです
時間のある時に趣味で作っている感じです
DirectShowのラッパーという事は知りませんでした
どちらを使うか色々試してみようと思います
ありがとうございました
Windowsで最初からビルドされてるバイナリ使うんでいいよ、もう VisualStudio使えば簡単でしょ
本家画像処理スレ落ちてんのか
843 :
デフォルトの名無しさん :2013/05/09(木) 13:49:06.80
opencv2.1のリファレンスで HoughLines のサンプルを動かそうとしているのですが どうもCV_PIでNullpointerになってしまうのですが どなたか解決方法をご存じないでしょうか
ソース晒して
根本的な解決にはならんだろうが、直接3.14に書き換えてみるとか pathが通って無いとか参照先が無いとか間違っているんだろうけども
ただの画像処理ライブラリなのに、使うだけで苦労してるのが多いのか
まあまあ最初は面倒くさいよね
OpenCVって動画ファイルを入力してフレーム毎に保存とかできたりする?
はい
それぞれの関数のソースが知りたいんだけど公開されてる? ちなみにmacです
はい
どいつも質問の仕方下手すぎてわろた
ドイツ?
アメリカは上手いらしいよ
俺はイタリアだし
質問者がこれだから画像処理スレと分けたんだよな
そういえば最近画像処理スレ見かけないと思ったら 次スレ立ってなかったのか
バグレポの通算50個突破しそう 今回はDescriptorExtractor.computeでPythonバインディングの参照カウントが腐るのを見つけた
もう一つ freak.cppの365行目 SSE2有効だとmovdqaが使われるみたいだけど movdqaのオペランドは16の倍数アドレスじゃないといけないのに 8の倍数アドレスががたまに入ってて死ぬ と思ってさらに2行下を見ると 堂々と ptr -= 8; って書いてある そら死ぬわな 何だこれは
レガシーな上ガンガン作り替えてるからな
stable版とは一体なんなのか
いい加減に安定したと思いたいバージョン
いい加減安定させなさいよ
今だに2.1使ってるw
保守 しかし過疎るね、フリーの画像処理ライブラリってこれくらいしかないのに
867 :
デフォルトの名無しさん :2013/06/20(木) 10:24:59.52
画像処理自体あんまでかい業界じゃないってこと
画像処理自体はでかいと思うんだがなぁ
ライブラリの完成度が微妙ってのもあるし 画像処理って一歩踏み込むとだいぶ専門的になるから着いていけない奴が多いし 単純な効果だけが必要ならImageMagickのバインドでも使ってた方が分かりやすい
Dで書き直したのないかな
871 :
デフォルトの名無しさん :2013/06/21(金) 14:49:05.77
実装が変とかバグがあるままリリースとか常態化しすぎ
872 :
デフォルトの名無しさん :2013/06/21(金) 15:11:54.10
てかこれつくってるやつら相当古いプログラマーだよな いくつなんだろう
いっそのこと、公式で.net版を・・・
OpenCV4Androidを使って、C++でAndroid開発してる人いますか?参考にしたHPなどを教えていただけたら嬉しいです。
最近は研究者が多いんだろ
VideoCaptureで、deviceが何番まで使えるかとか、それぞれ設定できる 解像度とか取得することってできないんですかね? とりあえず試してみてエラーを確認するとか、泥臭い方法しかないのかな。
正直ここで質問してもあまり答えは期待できないよ 公式フォーラムなりなんなりに英語で質問した方がいいんじゃないかな 質問するなとは言わないけど
VideoCaptureクラス読んでみたけどその辺の機能はない その辺の機能追加するのも今のクラス構造だとキツそう
やっぱりできないですか。 実験用以上のものじゃないんでしょうね。
キャプチャ部分はオマケみたいなもんだからな
キャプチャ部分はfpsが合わない動画があるとか不具合あったしなー 最新では直ってるんだろうか
ARM+Linuxで動かしてるヤツいる?どんなCPU使ってる?
Snapdragon
cvResizeってIplImageで領域確保しておかないと動かないんだな
画像をフーリエ変換し、その周波数成分の分布からテクスチャ特徴を求めて そのパワースペクトルを表示させたいんだけど 大きい画像を使わなくてはならないのでパワースペクトルがまったくでない 領域統合法の様にn*nの短形領域に分割して それぞれをフーリエ変換してテクスチャの方向性と構成要素の大きさを求めた方がいいのかな? 処理時間は別に長くなっても構わないんだ
ここでそういう質問すんなカス死ね
ハハハ
889 :
デフォルトの名無しさん :2013/07/07(日) 06:30:31.72
tbb3.xってもう手に入らないのかな? intelのHP行っても4.1しか落ちてないので. オープンソースって,LinuxにせよOpenCVにせよ過去のバージョン 保存するものだと思ってたが 理研や奈良先端大に落ちてたりするのかしら
OpenCvのLANCZOS4の品質悪過ぎワロス 高画質を求めるなら楽せず自力で作れと言うことなのか
こんなクソに何を期待してんの?バカなの?死ねよ
なんだ突然
R、G、Bの各値からHSVの値に変換したいんだけど、 cvtColorの引数にcv::Scalarを与えて使うのって無理なの? なにか良い方法ってあるんだろうか
オーバーロードがない時点で直接は無理だと分かってくれ 1x1のcv::Mat経由してくれ
やっぱ無理なのか。dクス
ソースから該当部分だけ抜き出しゃいいじゃん
任意の色変換を行う機能ってないんですかね? cvtColorはcodeを指定すればいくつかの色空間の変換はできるけど、 任意の3x3係数行列を使って変換できるようなものが欲しいのですが。
たぶんそういうのはフィルターの機能
ありがとうございました。 この程度なら機能として存在するかなと思ったんですが、自分で filterを書かなきゃならんですか。
cvmatで読み込んだ画像にcvcircleで円をかき込めないんだけど 一度IplImageでコピった後に円処理をしてcvarrToMatで戻すしかないのかな?
902 :
デフォルトの名無しさん :2013/07/29(月) 08:49:01.46
>>900 試してないが、cv::MatならcvCircleじゃなくてcv::circleつかえばいいんじゃないの?
面白いけどどういう需要があるのこれ
寄付の代わりに買えよってことダロ
1万円ぐらいのステレオカメラ Panasonic デジタルカメラ ルミックス 3D1 光学4倍 DMC-3D1-K にusbケーブルついてるのだけどOpenCVからリアルタイムで使えたりします?
デジカメのusbは撮影後の写真ファイルを送るためについてるんじゃないのか? 普通は無理。webカメラにもなるならしらね
広角目的に2つのレンズがついているなら、視野の重なりはほとんどないよね?撮ってどうするのか興味がある
ちなみにbsw180abkの仕様を確認したところ1つのビデオデバイスとして認識されるみたいね。 だから普通には生画像を2毎取り出すことは出来ない
あんま高度な期待しないでくださいよこのライブラリに 幻滅するだけですよ
>>911 >あんま高度な期待しないでくださいよこのライブラリに
>幻滅するだけですよ
高度な処理を実装してOpenCVに提案しても無視されるよね
githubを検索したほうがいい感じ
OpenCVもboost.eggと似た感じの事を何度もやってきた結果 こうなってるわけか
>>911-913 gnomeの開発があまりに酷いのでmateにフォークしたけど
OpenCVもそろそろ同じ事しないといけない感じする
基本部分はできたから意欲ある研究者が自分のアルゴリズム公開する共通プラットフォームになってくんじゃないの?
917 :
デフォルトの名無しさん :2013/08/27(火) 09:04:07.36
ありえねえ
いろんな種類の猫の顔検出をまじめにやってるとこある?
ない
犬猫はうちの製品にあるけど種類までは出力しないな なんといっても精度が微妙だったから
人の顔のデータベースにぬこの顔一匹分混ぜた 今のところ誰も気付いていない
Stanford Dogs Datasetを見たらやる気をなくす
>>922 これすごいな!
かわいくない犬画像が2万枚もあるぞ
Cats Datasetとかないの?
>>924 Oxford Pet Datasetってのがある
すげえなお前ら超詳しいな こういうDatasetってどこかに纏まってないのかな
まとめてるところはあるだろうがリンク切れが多かったり微妙だったりだな 最近の論文を見て実験で使われているデータセットをメモるのがいい 流行も分かるし
UncannyCVってどうなんでしょう? ARM環境でopencvよりも2-20倍高速らしい。
でもプロプラだしお高いんでしょう?
OpenCVのソース見て、自分で最適化すればいいんじゃね
自分で最適化する人件費が安いやつはすればいいし 高いやつは買えばいいってだけ 買って糞だったらここに愚痴を書き込め
他人が書いたライブラリのコードをわざわざ読んで最適化するくらいなら 自分で新しいの書くほうがラクだし
sseで書く高速画像処理みたいな本が出てたりするけどどれくらい効果的なんだろうね
画像処理でSSEとOpenMP/TBB使ってなかったら馬鹿だろって思うくらいには効果あるよ OpenCVはどちらも使っているだろ
失礼します。 USBカメラを複数繋げたいので、一台辺りの通信量を減らしたいのですが、 cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH, w); cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, h); これでサイズを小さくしてもあまり変わっているように見えないのは、受信後にサイズ変更しているからでしょうか?
ドライバによるんじゃね ソースコード見れば答えが分かるやろ
あまり変わっているように見えないという意味がわからない 単に表示サイズを固定にしてるだけではないのか
いったいいくつ繋いだら足りなくなるんだよ
一つでもわりときついよ
USB2.0かIEEE 1394を使え
帯域がボトルネックならUSB3.0とか でもUSBコントローラの方が制限厳しいかと
フレームレートを下げる必要がある バックエンドによるが directshowなら帯域最大限使おうとする cvでのやり方はしらないけどなんかあるでしょ
openCVのカメラ関係はオマケだからなあ
Directshowなら期待するフレームレートをカメラに要求できるよ。 936の質問はそれでカメラからのデータ量は落ちるような気がする。
そもそも普通のUSBカメラってパラメータ変更を受け付ける部分が無ければ、 解像度やFPSは固定のような?
パラメータ変更を受け付ける部分っていうか設定可能な解像度とfpsの組み合わせは製品ごとに決まってる。 MATLABだとその組み合わせを表示できるから、多分パラメータセットを呼び出す共通の仕様があるんだろうけど知らないな。
以前、video4linux2 で解像度とFPSの取得とか設定はしたことある。
950 :
デフォルトの名無しさん :2013/09/20(金) 22:07:06.44
xcode でpython とopencvのコード混ぜてプログラム作成することって 可能なのでしょうか?
951 :
デフォルトの名無しさん :2013/09/20(金) 22:14:50.48
質問が悪かった。 python+opencv(C++)を混ぜてってことです。 pythonのプログラムでは単にディレクトリ走査などだけをしようと考えています
opencvのコードって何だ opencv自体は言語じゃないからpythonがよければpythonのバインディングをimport cv2するだけだろ
手っ取り早いのはctypes
ここはプログラミング初心者スレじゃない
955 :
デフォルトの名無しさん :2013/09/21(土) 22:27:46.53
非常に時期尚早だと思いますね
957 :
デフォルトの名無しさん :2013/09/22(日) 08:17:16.62
うむ
同意
961 :
デフォルトの名無しさん :2013/09/22(日) 11:03:40.62
おまえのそのレスが一番ウザい
962 :
デフォルトの名無しさん :2013/09/23(月) 09:38:16.97
Come on talk to me.
963 :
デフォルトの名無しさん :2013/09/23(月) 10:15:08.99
全部のバージョンが必要
ストアアプリ(笑
965 :
デフォルトの名無しさん :2013/09/24(火) 15:17:09.67
966 :
デフォルトの名無しさん :2013/09/25(水) 08:49:17.51
967 :
デフォルトの名無しさん :2013/09/25(水) 09:52:00.32
HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM AlwaysHibernateThumbnails ColorizationAfterglow ColorizationAfterglowBalance ColorizationBlurBalance ColorizationColor ColorizationColorBalance ColorizationGlassAttribute ColorizationGlassReflectionIntensity ColorizationOpaqueBlend Composition EnableAeroPeek EnableWindowColorization これらの値を変更して再起動することで色々設定できるみたいだね
972 :
デフォルトの名無しさん :2013/09/26(木) 16:40:20.04
失礼します。
http://opencv.jp/sample/discrete_transforms.htmlのプログラムを利用して 、入力画像のDFTを計算し、実部の画像をcvSaveImageにて
保存したいのですが、保存した画像が真っ黒になってしまいます…
上記のプログラムでは、実部を表示する画像のデプスをIPL_DEPTH_64Fで作成しており、cvSaveImageでは扱えないからだと思うのですが…
image_Re = cvCreateImage (cvSize (dft_N, dft_M), IPL_DEPTH_64F, 1);
のデプスをIPL_DEPTH_8Uと書き換えるだけだとエラーが出て実行できません。
なので、image_ReをIPL_DEPTH_8Uに変換する方法を教えて頂けませんか?
よろしくお願いいたします。
cvCvtScale() 変換前と変換後の値の対応をどうするのかはあなた次第
974 :
デフォルトの名無しさん :2013/09/26(木) 17:02:29.53
>>973 ありがとうございます。
エラー無くコンパイルはできたのですが、なぜか保存された画像は真っ黒のままです。
ウィンドウにはDFTの結果が表示されるのですが…
解決策はありますでしょうか?
image_Reの値を一つずつ見れ
0.0-1.0の範囲になってるのを0-255に変換しないといけない
OpenCLだよ
3.0からC APIはメンテされなくなるらしいな。C++使わなきゃならないのか。
がっかりだね
GDI+の悪夢ふたたび
まず2系のfixしろよw
982 :
デフォルトの名無しさん :
2013/09/30(月) 15:17:04.00