【Intel】OpenCV総合スレ 5画素目【画像処理】
1 :
デフォルトの名無しさん :
2013/10/25(金) 17:28:16.71
OpenCV 2.4以降でMatと配列を相互変換したい。 Matは幅w、高さhのCV_32FC3型。 配列はw*h*3のfloat型3次元配列。 for文を使わずシンプルに書きたいんだけど、 いい方法ないかな?
3Dとか動画も扱えますか?
ノ ゚.ノヽ , /} ...
,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは
>>1 乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. :::
7 :
デフォルトの名無しさん :2013/10/25(金) 19:54:30.16
いちもつ
9 :
デフォルトの名無しさん :2013/10/26(土) 10:46:42.66
ググったらできました!ありがとうございまいた
10 :
デフォルトの名無しさん :2013/10/26(土) 10:51:15.28
916 57 [sage] 2013/10/25(金) 21:38:54.52 ID: Be: openCV触ってみたが、cで扱った時よりか大分楽だな。 インストールからして凄く楽々 開発も楽々 ちっくら、惚れた
11 :
デフォルトの名無しさん :2013/10/26(土) 11:10:57.43
一般人なら英語を読めて当然とは思わないけど、プログラマなら当然でしょ。 これだけ日進月歩の激しい分野でどこかの誰かの翻訳待ちとか頭悪すぎる。
立てたのか
プログラマは頭なんてよくないよ 一種のサバン症候群だから日本語は苦手
画像処理15に合併申し込まないか?
英語ならまだいいがnginxとか最初ロシア語でしたし
ロシア語で考えるんだっ!!
17 :
デフォルトの名無しさん :2013/10/27(日) 07:29:51.98
pythonで使っても速いっすか?
中身は C だからな 下手なループとかを Python 側で書いてしまわなければ桶
冗談抜きでプログラムさくさく書けるひと尊敬するわ コミュ障が多いけど
最近ずいぶん熱心にマルチポストしてるようだけど 医者に罹る気はないかい?
21 :
デフォルトの名無しさん :2013/10/27(日) 10:39:53.41
2ちゃんにクロスポストの機能があればなぁ
こういうライブラリこそJSで書けば速くなるのに
全く根拠がないな
WebGL がサクサク動く時代だからな WebCV.js があっても驚かない自信はある
実行時最適化のおかげで行列が速い速い ES6からSIMDも入るしJSで書けば一足先に未来へ行ける
ああ、馬鹿なんですね
極一部のレアケース除いてJSがC/C++より速いわけねーだろ・・・。 と思ったけどJSと比べられてるのは文脈的にPythonか?それならそうだろうな。
ひょっとしてブラウザじゃなくて
node.jsみたいなの想像したけど
>>27 に先越された
そうでもない JSの実行速度はかなり速い ブラウザのおまけだった時代と違う 今や速度ではアセンブラがライバル 昔のイメージで見ると時代に乗り遅れる
笑っていいよね。うぬぼれが過ぎて。
Intel自身がOpenCVを書く言語を誤ったと認めているからね。 大量のデータに小さな命令を適用するにはVM方式のほうが速度面で有利らしい。
はいはい。アセンブラと勝負しててね。
こういうライブラリには実行時最適化が有利に働くね
速度の話は門外漢だから触れないけど ライブラリをC/C++で書くというのは、大抵の言語に存在するFFIを利用できることに他ならない いちいちポーティングしなくても使用できる点において絶対的に優位だと思う VMだとそうはいかないだろう
実行時最適化って言葉を使いたいお年頃なのかな?ボク?
技術板である以上、JSのほうが速いとわかったらJSで書き直す有志が 出てくると思う OpenCVの倍以上速くなる
この板ってのはさすがにないw この板で生み出されたものがまずないもんw
ライブラリが使用されるには実装に加えて保守が必要だからねー JSでしか使えないライブラリでそんな人足が集まるだろうか?
形になったら寄贈すればいいんだよ GoogleとかApacheに
言われて見るとム板発ってないな。 いい機会だからやってみたらいいんじゃね。
ES7からexport入るし他の言語から呼び出される側になるだろうね ライブラリは高速性を生かしてJSで書き アプリは環境固有のネイティブで書く
Javascript製のOSが出てきているのでJavascriptがネイティブ言語になる可能性もある Javascriptはシステム記述言語としても成熟してきた
>>38 せっかく作っても叩く香具師ばっかだからな
オライリーのopencv第2版が出るらしいけど 2.x系の説明は追加されるのかなぁ。
ちくしょう買ったばかりなのに;; まー追加分はwikiとか見てるけどさ・・・
49 :
デフォルトの名無しさん :2013/11/01(金) 00:25:44.39
Mac のPythonでOpenCVを使いたいと思い
ttp://slowquery.hatenablog.com/entry/2013/06/09/121420 を参考にHomebrewでインストールしました。
このサイトに乗っているデモをダウンロードして実行したのですが
running: color_histogram.py
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /tmp/opencv-YuGx/opencv-2.4.6.1/modules/highgui/src/window.cpp, line 261
Traceback (most recent call last):
File "color_histogram.py", line 38, in <module>
cv2.imshow('camera', frame)
cv2.error: /tmp/opencv-YuGx/opencv-2.4.6.1/modules/highgui/src/window.cpp:261: error: (-215) size.width>0 && size.height>0 in function imshow
Cleaned up camera.
と出てしまいます。なにがおかしいのでしょうか?
おまえの頭
バージョンが古いんじゃないかこれ
52 :
デフォルトの名無しさん :2013/11/06(水) 19:41:00.92
Officeなどにゼロデイ脆弱性、Word用いた標的型攻撃も観測
米マイクロソフトは2013年11月5日、Microsoft Officeなどに未修正の脆弱性
(CVE-2013-3906)が存在することを明らかにし、注意を呼び掛けた。
http://www.atmarkit.co.jp/ait/articles/1311/06/news105.html (前略)
脆弱性が存在するのは、Windows Vista、Windows Server 2008、
Microsoft Office 2003〜2010とMicrosoft Lync。
Microsoft Graphics ComponentのTIFF形式の画像処理に問題があり、
細工を施したTIFF画像を開くと、攻撃者に権限を奪取され、リモートからコードを実行されてしまう恐れがある。
(後略)
OpenCVに梱包されている目の検出器で検出された領域というのは、 どのくらい確からしいものなんだろう。 領域内のある程度決まった場所に目頭とか目尻って出てくるんだろうか。
>>53 そこまでこだわるんならAAMとか使った方が良いんじゃない?
55 :
デフォルトの名無しさん :2013/11/09(土) 18:04:08.77
>>55 "SURFの出力"を詳しく知りたい。
取れるkeypointが異なるのか、取れたkeypointの特徴量が異なるのか、マッチングの結果が異なるのか。
57 :
デフォルトの名無しさん :2013/11/10(日) 00:09:21.39
>>56 とれるキーポイントの場所が異なる。
具体的には、
>>55 の一枚目の画像で、右側の画像ではイルカの上側付近に特徴点が
抽出されてるのに対して、左側の画像ではその部分に特徴点が無いんです。
部分的にSURF抽出すると
画像の黒いエッジ付近にやや、特徴点が抽出されてしまっているのをどうにかしたい。
この部分はマスクで処理しているので、決して画素値0として処理しているわけではないです。
>>57 塗りつぶすのがいかんのじゃない?
塗りつぶすんじゃなくてちゃんとカットしたのと比べてみた?
59 :
58 :2013/11/10(日) 00:34:41.38
失礼。 マスクしてたのね。
質問です。opencvsamples\cpp\peopledetect.cppのHOGの人認識プログラムの処理速度を改善する方法はありますか 動画中の人物を認識しようとしているのですが、自分の試した限りでは最速でも1フレームあたり0.7秒程度かかってしまいまいます これをなんとか1フレームあたり0.2〜0.3秒で処理したいのです もし難しいようであれば他の手法やライブラリを紹介していただけるとありがたいです。高額でなければ有料のものでも構いません
基本的に画像処理の速度というのは精度とトレードオフだから
CUDA環境入れてgpu::HOGDescriptorを使う。
CPUパワーを上げる
>>57 マスクに関しては0として計算してしまう仕様なんだろうね。keypointの場所に関しては今のところわからない…
その場しのぎの手段だけど、左図でdetectionした後に各keypointの座標とマスクを参照して切る処理を自作するとか。
質問です。 cv:Matを用いて1ch 3次元のヒストグラムを操作する処理を作成しているのですが現在配列へのアクセスにてこずっています。 Matにおける3次元配列へのアクセス方法を教えて頂けないでしょうか? 初歩的な質問だと思いますがよろしくお願い致します。
え、Matって三次元に対応してるの?
普通にカラー画像と同じアクセスの仕方でできるべ
>>65 cv::Matは宣言の仕方でアクセス法が少し違うのでコードを貼ってもらえると話が早いです。
69 :
デフォルトの名無しさん :2013/11/12(火) 17:46:48.29
オライリーの詳解opencv買っちまったから IplImageとかのほうでいまだにやってるわ。
IplImageに毎回変換するの面倒とか思ってたら 気がついたら動画の読み込みと作成だけOpenCVにやらせて、 画像処理は自力になった
OpenCV 2.4.7 でたね。 次の 2.4.8 はいまのところバグ修正が9件あるだけ。
Mat_の方が画素アクセスとかtemplateで関数宣言するのも楽じゃない?
74 :
デフォルトの名無しさん :2013/11/15(金) 07:12:27.22
シーケンスの要素を削除するときのエラーについて質問します あるシーケンスA(CvSeq *A)の 総数(A->total)が500個でした。 そこで for(i=0;i<300;i++){ cvSeqRemove(A,i) } をすると、i<300では大丈夫なのですが、iを350あたりより大きくすると エラーがおきます。 シーケンスの数は500なのに、なぜ350個以上削除するとエラーが起きるのでしょうか??
うしろから消してみたら?
>>75 なるほど、削除すると同時に前へずれていくのを忘れてました。
以下の4行目のように一度シーケンスに格納したあと、 すぐにそのシーケンスから中身を取り出して ->size の値をを調べてみると まったく違う値になります。どうしてですか・・・ 正常値は10~30なんですが、取り出した後は22430958309(整数)というありえない数値になってます CvSURFPoint *pp1=(CvSURFPoint*)cvGetSeqElem(keypoints1,i); cout<<pp1->size<<endl;//ここは正常値 cvSeqInsert(new_keypoints,new_keypoints->total,pp1); CvSURFPoint *SURFP=(CvSURFPoint*)cvGetSeqElem(new_keypoints,new_keypoints->total-1); cout<<SURFP->size<<endl;
bgfg_segmのサンプルをビルドして実行してみたんだけども、何も設定した覚えがないのにブレークポイントが発生して最後まで動かない...。どうしてかわかる??やっぱりサンプルのコードにバグがあるのかな...。
segmってくらいだからセグメンテーションフォールトでしょう(断言)
前に3次元配列へのアクセスについて質問させて頂いた者です。 自主解決出来ました! 3次元用のatが定義されてたんですね。 反応してくださった方ありがとうございました!
初心者です opencv2.4.6を使っているんですが、以前使えていたcvAndの機能はcvクラスではどんな使い方(cv::?)にすれば良いのでしょうか? リファレンスを見つけたのですが分からなくて…… よろしくお願いします
リファレンスへのリンクはよ
CvMatとMatのことで悩んでおります。 以下のCvMat型の表記をMat型に直すにはどうすればよいのでしょうか。 ご存知の方いらっしゃったらご教授下さい。 CvMat *cvMat; CV_MAT_ELEM(*cvMat, int, x, y) = value;
84 :
83 :2013/11/25(月) 23:36:25.10
83です。 mat.at<int>(j,cur) = (int)val; にて書き換えが出来たと思ったのですが、matの中身を参照したところ 浮動小数点で表示されてしまいます。 調べたところcreateが以下のようになっており mat.create( X,Y, CV_32FC1); 3番めの引数をCV_8UC4等に変えてみたのですが、 そうするとmatが正しく初期化されていないとエラーが出てしまいます。 対策方法有りましたらご教授お願いします。
何をやりたいか整理して話してください。 ・使いたい型はuchar?float? ・チャンネル数は1?4? ・書き込みたい値の型はint? いろいろ混ざりすぎて何やりたいかさっぱり
86 :
83 :2013/11/26(火) 17:37:09.36
83です、申し訳ございません、整理させていただきます。 あるテキストファイルから1箇所ずつint型で数値を抜き出して Mat型に格納したいです。Matに格納後、中身を確認したところ、 整数値ではなく浮動小数点で全く違う値が示されてしまいます。 0〜255の数値を「,」で区切った、 32行×500列の以下の様なテキストファイルが有ります。 2, 32, 255, ・・・(32行) ・ このテキストファイルから1箇所(,で区切られた数値)ずつ抜き出して int型にして下記のようにmatに代入していきます。 mat.at<int>(x,y) = (int)val; //valは正常な数値を示しています。
87 :
83 :2013/11/26(火) 17:41:15.81
そしてその後 以下のようにして中身を表示します。 for (int i = 0; i < mat.rows; i++) { Mat d(mat, Rect(0,i,mat.cols,1)); cout << d<< endl; } しかし、ここで [2.8025969e-045, 4.4841551e-044, ・・ のように浮動小数点で全く違う値が表記されてしまいます。 正確に表示させられるようにするにはどうすればよろしいでしょうか。
cout << (int)d<< endl;
>>87 よく分かってないけど、mat.at<int>って、doubleとintの間で数値を変換してるわけじゃなくて、
ポインタのキャストみたいに本来doubleの所に無理やりintの値を書き込んでるのでは?
>>82 すいません、よく見たら2.4.3のリファレンスでした
91 :
83 :2013/11/27(水) 21:45:12.28
>>89 返信ありがとうございます。そのようですね…
Mat_ <int> で宣言することでintを扱うことが出来ました。
皆様有り難うございました。
boost.gilを何で使わないの
boostが嫌いだから
>>94 詳しくは調べてないけど、flannのmatcherだとorbやfreakで落ちる。freakのサンプルみたいにBF matcherではいかんの?
97 :
デフォルトの名無しさん :2013/12/08(日) 02:10:22.87
画像処理の論文は理想的な画像でやってるのばっかだから
たくさんの画像セットで実験してみて一番良い結果が出るものを載せます
kinectと組み合わせてプログラム書いてんだけど CV_16UC1のcv::Matのdataにushort型の値を代入しようとしたらucharにキャストされる。 16UC1でメモリ確保してるんだしなにかうまい代入方法ってない?
>>100 .dataでアクセスしたら相変わらずucharじゃねえかって思ったら()でアクセスできるのか。
dクス
static_cast<ushort *>(mat.data)[i]とかじゃない? dataって一応uchar *の型が指定してあるだけの単なるポインタだよね。
すまん間違えた、static_castじゃなくてreinterpret_castだった。
SIFTを組んでいるのですがコンパイルはできても実行すると実行停止してしまいます。 どうやらキーポイントの数(配列の要素数)が6億個もでてることが原因っぽいです。 なにか解決方法はありますか? 一応主なソースは↓です cv::SiftFeatureDetector detector(0.04,10.0); cv::SiftDescriptorExtractor extractor; cv::Mat descriptors1; extractor.compute(grayImage1, keypoints1, descriptors1); 環境はvs2010、opencv2.2です。
入力画像の先鋭度を測るプログラムはOpenCVで作れますか?
>>105 すみません自己解決しました。
どうやらリンカの設定が甘かったようです。
ありがとございました。
108 :
デフォルトの名無しさん :2013/12/20(金) 14:54:14.84
traincascadeから出力したxmlは、haartrainingから出力したxmlと中身というか書式が違いますよね?
OpenCV 2.4以上、VS2010でOpenEXR対応の 64bitビルドを行いたいのですが、必要な ライブラリとか手順とかの情報ってどこかに まとまっていないでしょうか? そもそも、このような構成でのビルドは可能ですか? OpenCV単体のビルドは何度かやっているのですが、 外部ライブラリとの連携は未経験です。
110 :
デフォルトの名無しさん :2014/01/01(水) 23:45:38.65
画像を回転させると角が切れちゃうんですが、バグですか?
昔からあるバグだな諦めろ 今時、opencvなんて使うのはダサイ
それのどこがバグなんだ
OpenCVではそのような仕様です。
額縁の中で絵を回転させたら角っこがはみ出るのと同じ。 額縁の大きさ(画像サイズ)を変えないと。
今時OpenCVって・・・ オワコンじゃん
115殿には是非今一番アツいCVライブラリを 御教示頂きたいものだ。 もっとも、OpenCVが何かと難有なのは同感だし、 結局選択肢がないからこれ使ってるってCV技術者が 大半なんだろうな。 IOさえ何とかなれば、その他の演算処理は 自前で組んだ方がややこしいドキュメントを 隅から隅まで読むのより早かったりするし。
リンクスのHalconとかいいらしいよ でもこれ個人で気軽に買える類のものじゃないね どこで売ってるのかわからないし、値段も公開されてない MatlabとかもそうだけどAmazonとかで気軽に買えるようにしてほしい
おまえらは人が作ったライブラリがなきゃなにも作れねーのかよw
OpenCVをC++から使ってクソ使いにくいって思ってる人は Pythonから使ってみるといいよ、ダメダメな設計のcv::Matじゃなくて Numpyで多次元配列扱えるから遥かに使いやすい 速度は多少残念なことになるけど 未だにIplimage使ってる人は絶滅して
車輪の再発明だらけになって どこの誰が書いたのか分からない糞コードが氾濫するような世界は嫌だよ 定番のライブラリがあったほうが絶対いい
121 :
116 :2014/01/05(日) 17:24:58.33
>>117 Halconは職場で使ってるけど、オープンじゃないのがね。
>>119 俺は99%Pythonからしか叩かないわ。
実行速度は課題だけど、C++特有のストレスから
解放されるだけでも十分使う価値あると思っている。
122 :
デフォルトの名無しさん :2014/01/05(日) 23:51:23.11
c#のラッパー不便だわ
OpenCV3.0から公式でC#対応だからそれ待とう
cv::imreadで画像を読み込む場合、その画像が カラーテーブルを持っているかどうかはどうやって判断するんですか? 気にせず読み込めますが、グレースケールの画像を読み込んだのに グレースケールボタンが押せるのはおかしいので・・・
Halconなんて工業製品のパターンマッチングとかで使われる高価なパッケージでしょ そりゃフリーなら喜んで使うけどOpenCVスレで何言ってんの?って感じ
お金なら払うからOpenCVの呪縛から逃れたい
>>124 cv::Matのチャンネル数見るとかかな?
チャンネル数1ならグレースケール画像
チャンネル数3ならカラー画像
最近は画像の入出力にしか使ってないや 読み込んだあとはEigenに変換してる
Python版はNumpyに放り投げてるわけだし C++版もcv::Matとかクソ扱いにくい仕様やめて Eigenに放り投げるよう再設計すべきだよね、常々思うわ
内部でEigen使ってなかったか 確かコンパイルに必要だったような
確かにEigenは必須ライブラリだったはずだけど、 cv::Matは画素アクセスとか面倒だよね。 2月にはOpenCV3.0出るって言ってるけど、 使いやすくなってるのかな。
新しいバグが皆様をお待ちしています
どんな言語もフレームワークの善し悪しで流行る・流行らないが決まっちゃうほどだし やっぱライブラリの使用が如何に簡潔で解り易いかってとても重要だと思うなー 逆にプロプライエタリなフレームワークが使い易かったことって一度もないけど
画素アクセスをsrc(y,x,ch)みたいな仕様にしなかったのは何でだろうね
Python版はその仕様だよ、みんなC++やJavaみたいなクソ言語は捨ててPythonを始めよう
pythonは一度も触ったことないんだけど、MATLABみたいな感じ?OpenCVの関数は基本的に全部移植されてるの?
俺もPython良く知らないんだが Pythonの新しい企画には対応してないとかなかったっけ?
OpenCVがpython3に対応したら、おれもpythonの勉強するんだ...
>>136 基本的な機能は抑えてるけど新機能は対応してないことも多々あるね
例えばこのあいだの動画の超解像とか
個人的にはヘタするとMatlabより使いやすい
>>137 Python3には対応してないけど対応する予定はあるらしい
互換性はないけどPython2でも3でもたいして変わらない
IplImage *pImg = cvCreateImage( ... ); { cv::Mat M( pImg ); } これって画像は破棄されるの? されないの?
JavaScriptは3日で覚えたけど(jqueryは使ってない)PythonもLLだからそのくらいで習得できるかな?
JavaScriptを本当に3日でマスターしたならPythonなんて半日だ
visualstudio2013にopencv.netを導入したのですが CreateImageのようにサイズを指定して画像を作成するにはどのようにすれば良いですか? OpenCV.Net.CV.CreateImageを実行したいのですができませんでした.
マッチテンプレートでOCRを行いたいと考えています 文字列と同じように空白もマッチングしたいのですが、空白を与えても上手く検出できません なにかよい方法はありませんか?
まずテンプレートマッチングによるOCRを諦めよう
切ない
空白以外が検出できているなら文字間隔から空白があるか予測して補間すればええやろ
同じ細胞から作ったコピー細胞なら画像似てても仕方ない気がするが
簡単に技術盗まれないように 肝心な部分はぼかしてるんだよ
パンチルトカメラで顔を追いかけるプログラムって どこかで公開してないでしょうか
顔の座標とれるんだったら 一定時間でとり続けて差分でどっち動いたか判断してそっちにカメラ動かすだけだろボケが 自分でやれよ。
共通規格があるわけでもなし当たり前のような気がする
156 :
デフォルトの名無しさん :2014/03/03(月) 01:19:53.97
OpenCV初心者です 現在OpenCV2.4.7を使用しています かなり基礎的な質問で申し訳ありませんが、2.4.7内の関数の使い方を全部掲載しているサイトなどはありますか?
2.4.7にこだわる必要は? 英語は読めるか?
読めたらこんな肥溜めで聞かないっすよハハハご冗談を
じゃ、中学英語からやり直しだな。
160 :
デフォルトの名無しさん :2014/03/04(火) 04:07:36.16
英語は読めます 学生で、部活内で使われているものが2.4.7です 2.4.7でなくともそれに近いものであれば構いません 教えていただけると幸いです よろしくお願いします
じゃ内蔵か公式でいいだろ。
162 :
デフォルトの名無しさん :2014/03/05(水) 00:57:21.51
163 :
デフォルトの名無しさん :2014/03/05(水) 03:30:21.82
OpenCVのプログラムコードの一部だけ論文に転載するのって 著作権的にはOpenCVへのリファレンス書いてたら問題ないの?
165 :
デフォルトの名無しさん :2014/03/22(土) 20:56:49.83 ID:k2pZAvlI
opencvで手を検出する方法って無いかな?
手を学習させるしかない
僕はおっぱいの方がいいです
OpenCVでジャンケン処理のがあったような
170 :
デフォルトの名無しさん :2014/04/01(火) 00:11:48.63 ID:+BzQu1X1
WindowsでMinGW版無くなっちゃったのか。 VC版はやたら充実してるけど。
画質良いの定義が難しいからなー 画像によって処理が合ってるかも変わるだろうし 自分でやってみて拡大してみるのが一番いいんじゃね
>>171 サンプルプログラム
opencv-2.4.8.2/samples/gpu/super_resolution.cpp
がコマンドラインから超解像動画を自動生成できるみたいなのですが
1分ぐらいの動画でも一晩ずっと動かしてもとまらなくて
生成した途中結果表示みてみると
最後まで行った後、まさ最初に戻って何度も同じ動画を処理してるみたいです
バグでしょうか?
main内のforループも終了条件ないですし
動画の補完限定なん? 静止画数枚でテスト出来ないんかな
>>175 >静止画数枚
の例らしきものも同じディレクトリにあった
Javaで画像処理をしたいと思い、勉強してます。 JavaCVではなく、OpenCVのJavaライブラリを使ったプログラムを 勉強できるサイトなどありましたらご紹介いただけないでしょうか? 書籍は「Javaで始めるOpenCVプログラミング」を読んでいます。
OpenCVのPythonインターフェイスが 次々と出来ては消えて行くのは 何故?
C#でOpenCVSharpのBitmapConverterってどうやって使うんですか? 名前空間OpenCvSharpには存在しませんでした 環境はVS2013でパッケージはNuGetを使ってOpenCvSharp x64を使ってます
画像認識に興味があり、OpenCVを勉強し始めました。 カメラ撮影したものから長方形の物体を検出し、射影変換することで、 長方形の物体を正面から見たときの画像を得たいと思っております。 元の長方形の縦横比が既知である場合はcvFindHomographyにて射影変換行列を得ることができました。 しかし、元の長方形の縦横比が既知ではない場合、つまり射影変換前の長方形から縦横比を求める方法が思いつきませんでした。 カメラで斜めから撮影した長方形の物体の縦横比を求める方法が知りたいです。 どうかよろしくお願いします。
ピンホールカメラモデルを考えて式を立てればどういう計算で縦横比が求まるかと、どこまで条件を揃えてないといけないかがわかると思うけど、 そのための関数ってのは特にないんじゃないかな。 長方形の縦横比、カメラの回転並進で合わせて7つの自由度があるから、少なくともカメラの内部カメラパラメータがわかってれば 長方形の4点が認識できれば8つの拘束条件ができるから計算はできそうな気がする。
>>182 OpenCvSharpからOpenCvSharp.Extensionsに移ったみたいなので、
using OpenCvSharp.Extensions;
をソースに追加。
>183 画像上での4頂点に対応するカメラ座標系でのレイ(無限直線) と ある平面 との交点を求めたときに その4交点が長方形になってるような平面を求めればいいんだろうきっと. 4つの交点を結んだ四角形の四つ角が90度にならなければいかんぜよ という条件とかから 適当に目的関数でも立てて最小二乗法とかでやればいいんじゃないか? なんとなくだが平面が通る点をどこかに適当に定めてしまって 平面の法線方向だけについて解けばいいような気がする
まだこの話題続いてたんか。 つい最近トラ技だかInterfaceだかで車のナンバープレートを 矩形化する記事があったが、あれも確か縦横比使わないで 画像解析だけで何とかしてたはず。
ナンバープレートで縦横比を使わない理由を知りたい
>>187 >>184 だけど確かにその方法でいけるね。
最小二乗法を使うまでもなく代数的に解けるようなレベルのような気がする。
4点がそれぞれp1,p2,p3,p4だったら、レイ上のどこに来るかっていう適当なスケールパラメータs1,s2,s3,s4を考えて、
あとはs2p2-s1p1とs4p4-s1p1の内積が0かつs2p2-s3p3とs4p4-s3p3の内積が0になるようなs1〜s4が求まればおしまいだから、
4元2次の連立方程式かな?
OSXでopencv2.4.9を自前ビルド、静的リンクしてc++プロジェクトで使ってます。 highguiの関数 cvShowWindow()を使おうとするとリンク時にcocoaの関数まで静的リンクしよう として symbol not foundエラーになり、ビルド出来ません。 全体を動的リンクにしてやり直すしかないのでしょうか
初心者名質問で申し訳
IPカメラの画像(h
ttp://192.168.x.y/snapshot.cgi )をopenCVで処理することって出来ないの?
画面キャプチャとかハードウェア改造とかじゃなくて。あよ、筐体開けてもシリアルの口は見当たらなかった。
カメラの初期化が出来ない司やり方も分からなくて困ってる
カメラはELECOMのLAN-NCW150/sという代物
EdimaxのOEMらしい
sureti
>>192 できるよcv::VideoCaptureにurl食わせてやればいいだけ
195 :
194 :2014/07/18(金) 09:12:29.83 ID:6ptJYAb2
すまん勘違いした動画じゃなく画像か
>>193 の言うとおりだった
とにかくBitmapで取得して変換すればよい
OS XのCocoaでOpneCVが使いたいんですがStackOverFlowなど読んでもCommand Line Toolが前提っぽいんですがGUIで利用できないんでしょうか こういう開発環境や導入見ても如何にWin+VSが優れてるかわかりますよね、Mac本当に面倒くさい・・・
>如何にWin+VSが優れてるかわかりますよね >如何にWin+VSが優れてるかわかりますよね >如何にWin+VSが優れてるかわかりますよね あのさ、心の底から教えて欲しいと思ってるなら こういう物言いすべきじゃないぜ? VSコンパイラのタコ仕様に振り回されてる開発者も 世間にはごまんといる。 おまけにちょっとググったらすぐ情報見つかった。 もう少しきちんと探してみることだな。
煽ったら何か出て来るだろうっていういつものことだな 自演でなければ
OpneCVって書いてる時点でネタじゃね?
Mac が面倒なのは同意 Mac 使ってるひとの理由の大半はタダの Linux で充分なことを求めてる
Xcodeで使うのはWin+VSで使うのとそんなに変わらないんうじゃないの?
まぁ普通に考えて釣りだろうな
そもそもサポート対象じゃないライブラリを無理矢理動かして使えないからダメって そりゃそうだとしか言えんはw
It has C++, C, Python, Java and MATLAB interfaces and supports Windows, Linux, Android and Mac OS.
そりゃそうだ
>>196 がタコなだけ。XCode経由で開発可能。
Windows版と違って公式にビルド済みのバイナリが置いてないから使えねえって言ってるのかな。
いつの間にかMacに対応してたんかw
とっくに対応してる。 CV系の学生はMacユーザ多い。
へーすごいじゃん
CV系の学生って何ぞ?w 自分で計算出来ないからライブラリにやってもらって 自分は何もわかりませんとか?
あー言っちゃったね マカーのプライド傷つけるとどうなるか、身を持って知るといいよ
最近は、GLSL触るだけで画像処理の専門家なんだそうで、 SPIDERもOpenCVも何それな専門家が増えているからなぁ
>>211 ま、別にライブラリ使ってもいいんじやない?
巨人の肩に乗ってる事を忘れなければ。
OpenCVに限らないが、入出力のような本質から外れる部分はライブラリを使ってどんどんすっ飛ばせばいいよ
216 :
デフォルトの名無しさん :2014/08/05(火) 04:51:02.99 ID:9rn9hAyi
opencvのSIFTを利用してCSIFTのプログラムを作成したいのですが、このアルゴリズムの詳細がわかる方いますかね?
217 :
デフォルトの名無しさん :2014/08/05(火) 06:23:24.18 ID:iLUP5Qqd
CV系の学生はMacが多い。
要約すると、まずMacを買います
Windows版に慣れてからMacに移植した方が覚えやすくね?
御託を並べて抵抗するな はやくアップルストアに行け
Mac版のメリットってあるの? Windows版の方が情報多くて楽だろ
インストールの時しか違いなくね?
だいたい、自分の環境でのビルド方法なんかcvに手出す前に 身につけて置くべきもので、 WinがMacがと取り立てて騒ぐ事かと。
ある凸多角形に収まる最大の円の大きさを求める関数ってないだろうか
質問失礼します。 入力画像が、複数あるテンプレート画像の中のどの画像と最もマッチングしているかをSURFを使って調べるにはどうしたらよいでしょうか。 最近openCVを使いはじめましたが、プログラミング自体初心者であるため、調べ方もよくわかりませんでした。 よろしくお願いします。
宿題は宿題スレへ
「openCV SURF 特徴量」でググる
>>229 正の場合、重心求めて任意辺の中心との距離で求まるかと
思っていたけど間違っている?
正でない場合は?
>>231 解無しを簡単に排除する方法が思い浮かばない。ので
聞いたのだが?
ID:4kkHNvLcは軽くアスペっぽいなw
数値解法でいいなら単なる最適化問題だからそんなに難しくないんじゃない? 解析的に求まるかはわかんないけど、円に接触しない辺が出てくるし難しそう 解なしの場合なんてある?
剛体シミュで風船でも膨らませようず
それって画像で考えると 凸多角形の輪郭線からの距離画像を作ったときに最大値になる点が求まればいいってことだよね? じゃあ それを解析的にやるとしたら… どうすりゃいいんだ? 図形の輪郭を徐々に小さくしてくことを考えると 各頂点は角の2等分線の方向に縮んでいくような気がするが どこか(別の2等分線との交点?)で別の頂点と合体してその後は縮んでく方向が変わる その合体後の方向ってのがどうなってんのかわかればそれを最後までやって 一点になる位置を求めればいいのか うん,わからん
最早OpenCV関係ないじゃん。
>>236 のを読んでて思ったけど、
凸多角形のそれぞれの辺を内側に向かって同じだけ並行移動させつづけると、どこかで内側のエリアが3角型になるか、線分になるか1点になって、
3角型の場合はその3角型の内接円の半径に辺の移動距離を足したものが内接円の半径になりそうな気がする。
線分になる場合や1点になる場合は辺の移動距離が半径になりそう。
解析的には解けるけど方程式一発という訳にはいかなくて判定処理が必要そうだね。
辺を平行移動させるとどこかで辺が消えるけど、その条件も解析的に求まりそうな気がするから今一歩というところだね。
n角型だとして、隣り合った2辺のなす内角を2等分する線を引くと、その線交点がn個できる。 この交点と辺の距離の分だけ辺を移動させたときに辺が消えてn-1角型になる可能性が出てくるから、辺からの距離が小さい交点から順に処理してやって、 3角型になるまでやればいいわけだから… ああそうか、交点と辺の距離を計算してn-3個目に小さい距離がn角型を3角型にする辺の移動距離だから、そのときに出来る3角型を求めれば最大の内接円が求まるね。
お利口さんが一丁前に語り始めたぞ
そごうのマークみたいな図形だと解なし?
>>242 四角形の場合、辺の長さをAからDとした時 A+C=B+Dなら
解あり。そごうのマークはこの条件を満たしているが線分が
交錯しているので解無し。
そういえば凸って書いてありましたね
どうでもいいが >剛体シミュで風船 って矛盾してないか?
物理シミュレーションって言いたかったんじゃね
>>243 A+C=B+Dという判定式はどっから来たんだろう?
A+C!=B+Dでも解が存在する場合はあるし、==でも存在しない場合もあるし。
ああ、問題を誤解していた。すまん。
問題を誤解してコメントしたひとのレスを読んで さらにそれを誤解してコメントする訳ですね
RGB -> HSV
>>251 流し読みだけど定数だからボトルの高さ167mm じゃね
254 :
デフォルトの名無しさん :2014/08/12(火) 18:51:29.00 ID:0jK/pM8y
>>251 認識した物体(緑のボトル)の実際の高さ
>>173 >opencv-2.4.8.2/samples/gpu/super_resolution.cpp
なんだけどCUDAで計算しても全然遅い
CPUで計算する方がはるかに高速
ある程度以上のビデオカードでないとCUDAの恩恵得られないって事なのかな
ちなみにGforce GT420です
GT420のCUDAコアは48基 現在のミドル帯で最も普及したであろうGTX660で960基 Titan blackで2880基 無い方がマシかもよ それ以前にGeforceは倍精度演算コアが以下略なんだが
>>255-256 このプログラムは
メモリー1Gのビデオカードだと
デフォルトの設定でCUDAが動かない
画像の拡大サイズをデフォルトの4倍から2倍にしたら動いたけど
メモリー2Gならデフォルト設定で動くのだろうか
>>258 データ律速だと、速くならない。
ましてや、安いビデオカードはPCIeバスもメモリも遅いから、なおさら。
その数千円レベルだと数枚挿そうが CUDAコア少なすぎて無い方がマシ 貧乏人は麦でも食ってろ
Linuxでパッケージのアップデートしたら OpenCVのプログラムに動画を読み込ませようとすると OpenCV Error: Assertion failed (vc_.isOpened()) というエラーが起きるようになりました (以前はちゃんと動いてた) ひょっとしてOpenCVのソースをいじらないと 治らないのでしょうか
そのopencvはソースから入れたのかい?
javascript版OpenCVクル━━━━(゚∀゚)━━━━!!
現在挑戦していることでわからない点があるのでなにかアドバイス頂きたいです。 動画を読み込みハール分類器により顔と目領域を検出します。 次に目輪郭を cvFindContoursで探し、輪郭を検出しcv虹彩に楕円を当てはめようとしているんですが ビルドは成功しますがソースコードの輪郭を構成する頂点座標を取得 tmp = CV_GET_SEQ_ELEM (CvPoint, contours, -1)の部分でオーバーフローしてしまいます。 またcvHaarDetectObjectsで顔検出では動作しますが目領域の際にエラーがでます。 どなたかこの原因と考えられる対策など教えてください
266 :
デフォルトの名無しさん :2014/10/23(木) 14:55:24.63 ID:RjBQcz8M
ぬるぽ
>>266 ヌルポインタが原因のようですがなぜ顔検出では起こらず、
目領域の検出でぬるぽになってしまうのでしょうか?
この続きを見るには最低限のソースが必要です
普通に考えると目を検出する範囲が間違ってるとしか思えんは
271 :
デフォルトの名無しさん :2014/11/25(火) 13:19:38.85 ID:dMEv4AW9
OpenCV必要ないな。こんな画像認識技術があったってろくな使われ方しないだろうからな。
お前の発想が貧困なだけだろ 休みの日に馬鹿アピールとかなかなか有意義な人生送ってますね 死ねば?
274 :
デフォルトの名無しさん :2014/12/11(木) 16:55:50.85 ID:6slixBmx
OpenCVでROIを用いて画像の一部を矩形で切り抜き、保存することはできたのですが 矩形以外での多角形で切り抜きは可能なのでしょうか?
どういう結果を期待してるんだ? その多角形を包括する矩形で切り出してきてそこから欲しい結果に加工すれば?
maskをしらない厨房か
C++でOpenCVを使っています。 2つのMatを返すメソッドをつくりたいんですけど、どうしたらいいですか?
何が判らないの
OpenCVに限らないだろうよ C++の勉強をした時に、2つ以上値を返すにはどうすればいいって習った それと同じようにやれよ
vector<Mat> func(){ vector<Mat> retVal; retVal.push_back(Mat(640,480,CV_8UC3); retVal.push_back(Mat(640,480,CV_8UC3); return retVal; } だろやっぱw
ポインタを使えと習いました先生
引数がレジスタやスタックに積んで複数渡せる仕組みなんだから 戻り値も同様にして複数返せるようにすりゃよかったのにな
構造体返し出来るじゃん?
ご相談に乗っていただきたいです
現在OpenCV2.4.10とDxLibを併用して使っているのですが、findContoursメソッドを使用すると
ヒープが壊れたというランタイムエラーが発生してしまいます
どうにか回避方法を教えていただきたいです
↓ソースです
http://codepad.org/hS14MmrI
usbカメラをキャプチャしたものを遅延再生をおこないたいのですが、どうやって行ったら良いのでしょうか?
286 :
デフォルトの名無しさん :2014/12/28(日) 21:06:23.20 ID:q/AaEctr
FASTでコーナーだと検出するときの連続画素数の閾値はデフォルトだとどうなっていますか?
289 :
デフォルトの名無しさん :2015/01/13(火) 10:26:33.93 ID:MMza42nd
本当にこんな画像ばっかりなら、SIFTとかの 画像特徴量で割と行けちゃうかも。
分類器作ることになったんですけどポジティブ画像の識別対象の位置ってやっぱ一個ずつ手作業で打ち込んでいくものなんでしょうか
5次元の行列に添字アクセスするにはどうしたらいいですか? 2次元、4次元はわかるんですが5次元がわかりません...
>>292 どうやろうとして、どんな結果になった?
>>293 M.at<cv::Vec5d>(i, j, k, l)[m]
とやろうとしましたがそんなメソッドねーよと怒られました
295 :
デフォルトの名無しさん :2015/01/21(水) 19:48:55.20 ID:e4jAYfur
複数の画像からvecファイルを作る、もしくはvecファイルを統合できるソフトをご存じの方いらっしゃいませんか
cv:Matって五次元配列作れたんだ、知らんかった。
cv::Mat<cv::Vec5d>は、cv::Matの一つ一つの要素が5次元ベクトルってだけでしょ。 i,j,k,l,mで単一のdoubleにアクセスできるような5次元配列(5階テンソルみたいな?)はMatでは表せないと思うけど。 そもそも掛け算とか定義できないじゃん。 Mat<Vec5d>のデータにアクセスするだけなm.at<Vec5d>(i,j)[4]とかでしょ?
>>297 そうなんですか。
ちょっとよくわかってないのですが、4次元の行列操作も根本的に勘違いしてるかも知れません。
とりあえずやりたいことは、4および5次元行列の、
添字(k, l, m,・・・)で指定した要素を読み書きすることだけです。
OpenCVはバージョン2.4.9です。
多次元行列(a.k.a cv::MatND)がcv::Matに統合されたと聞いたのですが、、、
なるほど、at<要素の型>(添字のベクトル) でアクセスできるわけですね。 ベクトルじゃなくて()内に直接添字を列挙できるのはその特殊な場合(2次元など) ということですね。 4次元のときにat<要素の型の4次ベクトル>(添字3個)[4個目の添字] でアクセスできていたのがよくわかりませんが、、、
>>300 あんまりちゃんと追ってるわけじゃないんで正確じゃないけど、一番最後の添字にはそうやってアクセスできるっぽいね。
Mat::at(i,j,k)とMat::ptrの実装を見る限りでは。
302 :
デフォルトの名無しさん :2015/02/03(火) 11:51:54.66 ID:QhWvOAvq
カスケードファイルを使って物体認識するところを、 (重いだろうけど)、DeepLearning(DCNN)で認識させる実装やってるんだけど、 ふと既に誰か作ってるんじゃないかと思ってググったんだが、どこにもないな。 誰もが考えそうなものなんだけど、何故だろう。
雑誌で既にやられてるけどな、それ
304 :
デフォルトの名無しさん :2015/02/04(水) 09:55:03.50 ID:tcl4NYuY
>303 やられてるんですね。 だいたいは、物体抽出だけカスケードで抽出して、 その後DCNNかける例ばかりだったので、 物体抽出の精度に依存していやだなーと思ってました。 ちなみに、雑誌って、Interfaceとかですか?
コンピュータビジョン最先端ガイド 毎年12月に出版されてたのに去年はなかったね。 もう出さないのかな?楽しみにしてたのに。
>>305 ありがとうございます。
参考に買ってみようかな。
最先端ガイドは4からあんまり目新しくなくなったから、買ってないなー
基本的なことですがSIFTとSURFの違いってなんですかね? 使ってて基本的にSURFの方が早いことはわかりますが それぞれどういった特徴に対して特徴ベクトルを出してるんですかね?
すいません 行列A、Bがあり、Bは行、列共にAより小さいとします。 いま、Aの一部に、Bをまるごと代入したいと思って、 Mat C = A(Rect(...)) B.assignTo(C) のように書きましたが、うまくいきませんでした。 assignToの実装を見てみると、typeが未指定(負)だとそのまま目的の変数に代入するような実装になっています。 このような目的では、copyToを使うのが適切ですか? 目的の行列と型・行列サイズが同じならば、メモリの再割り当てはされない(Aに正しく代入される)ことは保証されていますか?
cv::Matって内部で他のcv::Matとかとメモリ共有してるの怖くない? constなのに中身が変わってるとかあるわけでしょ 関数型世界からの悲鳴が聞こえてきそうだ
そんな世界からいくら悲鳴が聞こえたところで興味ねえよ アホのお前たちは粛々とカーネルだけ書いてろ
314 :
デフォルトの名無しさん :2015/03/04(水) 20:48:16.18 ID:g4+m5Y9b
質問です。 カメラからキャプチャしてhaarcascadeを用いて 顔認識することができました。 認識された箇所にrectangleを用いて四角形を作ることができたのですが その範囲内だけや範囲外だけを塗りつぶしたりぼかしたりはどうすれば いいのでしょうか?
>>314 その矩形のマスクを作って処理引数の後につける