トップページ⇒tech
986コメント337KB

【Intel】OpenCV総合スレ【画像処理】2

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/12/29(月) 09:47:36
OpenCVとはインテルが開発・公開しているオープンソースのコンピュータビジョン向けのLinux/Windows向けC/C++ライブラリです。

実装分野は
・ユーザーインターフェイス
・物体分離
・セグメンテーションと認識
・顔認識システム
・ジェスチャー認識
・モーショントラッキング
・感情モーション
・モーション理解
・モーションからの構築(SFM)
・モバイルロボティクス
前スレ
【Intel】OpenCV総合スレ【画像処理】
http://pc11.2ch.net/test/read.cgi/tech/1182830261/

関連リンクなどは
>2-10くらい
0153デフォルトの名無しさん2009/05/22(金) 18:16:04
うまく実行されたりされなかったりするんですが何とかならないですかね…
主にトラックバーの表示なんですが
0154デフォルトの名無しさん2009/05/23(土) 13:27:36
>>150なんですけど、ここの住人さんはカメラの歪み除去せずにOpenCV使ってるの?
もし歪み除去してたら同じ現象が起こるかどうか教えてもらいたいんですけど
0155デフォルトの名無しさん2009/05/23(土) 17:40:09
Windows環境の1.1preでcvCreateVideoWriterで、第2引数にCV_FOURCC_PROMPTまたは-1を設定しても、
コーデックの設定画面出さずに、しかも読み込めないaviっぽいファイル(真空波動研でエラー)を出すようになってしまった。
コマンドプロンプトの出力見ると、勝手にffmpegを使って出力してるみたい。
どうもffdshowを入れてから挙動が変わったっぽいけど、ffdshowをアンインストールしても何かが残ってるのか、元に戻らない…
こういう時って、OSのクリーンインストールとhighguiのリビルド以外でどうやったらVFW使うように戻せるか情報ってある?
0156デフォルトの名無しさん2009/05/24(日) 04:04:08
バージョン1.1からffmpegでDirectShow使い始めたらしく1.0の時よりだいぶ高速になってるよ。
ffmpegも更新が速いから次のバージョンではエラー無くなってるはず。
わざわざVFWなんて古いのに戻さなくてもいいんじゃない?
AVI保存のエラーはTMPGEncとかで非圧縮AVIに書き出しなおせば直ると思う。
0157デフォルトの名無しさん2009/05/24(日) 08:25:38
>>152

つ「cvAdd」
0158デフォルトの名無しさん2009/05/24(日) 08:31:26
>>150
画像が上下反転してるとかじゃない?要所要所で画像出力してみれば。
0159デフォルトの名無しさん2009/05/24(日) 10:59:35
>>158
画像をLoadImageした直後にUndistort2してるだけだから反転してないのは確認済みです
0160デフォルトの名無しさん2009/05/24(日) 12:42:32
>>159
ソース読めば分かるが、前バージョンからundistort2の内部が変更されたからねー
特に主点のあたりが
0161デフォルトの名無しさん2009/05/27(水) 19:19:04
SVNからチェックアウトしてOpenCVのソースコードを勉強しているのですが、
OpenCVのSobelフィルタのアルゴリズムがよくわかりません。
(一般的なSobelフィルタのアルゴリズムがわからないのではありません。)

どなたか解説できる方はいらっしゃいませんでしょうか?
01621552009/05/28(木) 01:23:02
>>156
ffmpegでも実行時にビットレートやエンコードオプションの設定ができればいいんですけど、
cvCreateVideoWriterを使う限りはVFWでしか無理っすよね…

結局cvffmpeg110.dllをリネームして無理矢理VFWを使うようにしたけど、
今度はcvCreateFileCaptureあたりが動かなくなりそうだ…
0163デフォルトの名無しさん2009/06/03(水) 17:21:20
>>161
どこがどう分からないのかが分からない。ビット演算とかでやってるとか?
0164デフォルトの名無しさん2009/06/05(金) 13:09:27
OpenCVを使って文字認識をさせることはできますか?
0165デフォルトの名無しさん2009/06/05(金) 17:09:25
>>164
出来る。
画像処理とパターン認識入門って本が役立つと思う
0166デフォルトの名無しさん2009/06/06(土) 03:00:36
あ
テンプレートマッチングとかできるの
あれ
0167デフォルトの名無しさん2009/06/06(土) 06:22:43
できるにきまってるじゃん。リアルタイムで。
01681672009/06/06(土) 06:25:39
>>166
「あれ」ってなんのこと?OpenCV?

>>164
手書きの文字認識とかなら、テンプレートマッチングじゃなくて、
OpenCVのHaar-Like学習で手書き文字を学習させるといいかも。
0169デフォルトの名無しさん2009/06/06(土) 09:26:17
>>165
ありがとうございます。本屋で見てみます。

>>168
Haar-Like学習ってのは顔の検出アルゴリズムだけじゃなくて文字もイケるんでしょうか。
取りあえずやってみたいと思います。
0170デフォルトの名無しさん2009/06/06(土) 11:16:24
顔ちぇきってOpenCV使ってるのかな。
0171デフォルトの名無しさん2009/06/06(土) 12:18:25
シラネ
0172デフォルトの名無しさん2009/06/06(土) 15:57:33
へえすごいんだねOpencv
0173デフォルトの名無しさん2009/06/06(土) 22:48:13
OpenCVを使って顔認証することはできますか?

けっこうググったけど、あまりいい情報見つからず。
01741732009/06/06(土) 22:54:37
あ

ここでいう認証は登録してある、写真をもとに同一人物であるかどうか
という意味での顔認証です。

見つけるという意味ではないです。
0175デフォルトの名無しさん2009/06/07(日) 00:17:32
どのような手法を想定しているのかわからんけど
OpenCVに何を期待しているの?

顔認証したいならかなりの部分を自分で実装しないといけないんじゃないかと思うよ
ttp://www.face-rec.org/
このサイトに資料が充実してるよ
0176デフォルトの名無しさん2009/06/07(日) 01:47:20
あ
ライブラリがそろってるわけでは無いのね
0177デフォルトの名無しさん2009/06/07(日) 02:42:16
池沼レス認証パターンを見つけたよ

一行目に
あ
そして全てage
0178デフォルトの名無しさん2009/06/07(日) 05:29:57
「顔ちぇき」はまさに顔認証だな。OpenCVを使ってるかどうかは不明だけど。
OpenCVでやりたいなら、認識させたい顔をHaarLike学習させて、その顔ごとに
特徴ファイルを分ければ顔『認識』ができそうだな。
0179デフォルトの名無しさん2009/06/07(日) 05:41:12
でも内容的には今一なんだねOpenCVでやると
0180デフォルトの名無しさん2009/06/07(日) 12:37:53
だからお前はOpenCVに何を期待してるんだよ
OpenCVは画像処理/認識のライブラリであって
顔認識のライブラリじゃねーよ
0181デフォルトの名無しさん2009/06/07(日) 18:51:20
質問させてください。
Ver1.1で追加?されるMakeScanlinesがうまく動きません。
1つ目の引数のCvMatrix3の型で引っかかっているようなのです。
CvMatrix3でググってみましたがヒットしませんでした。
F行列はCvMat型で、キャストしてみましたがうまくいかず・・・
動かした経験のある方、助言していただけると嬉しいです。
01821812009/06/07(日) 19:06:17
すみません自己解決しました…
純粋にキャストミスでしたorz スレ汚しすみません;;
0183デフォルトの名無しさん2009/06/07(日) 19:11:54
>>180
顔認識は画像認識だよね。
0184デフォルトの名無しさん2009/06/08(月) 00:10:51
顔認識は画像認識の応用だろ
0185デフォルトの名無しさん2009/06/08(月) 00:24:15
だからOpenGLは顔認識だと?
0186デフォルトの名無しさん2009/06/08(月) 01:51:30
まあ画像処理そのもののおうようでも有るしな
高度なのはダメといわれればそれまでだけど
0187デフォルトの名無しさん2009/06/08(月) 12:48:41
OpenCVは顔も含めて画像認識を楽にできるようにする「ライブラリ」だろ。
顔認識アルゴリズムを自前で実装するもよし、内蔵のHaarLikeを使うもよし。
>>179は自分で実装もチューニングもやったのか?
0188デフォルトの名無しさん2009/06/08(月) 14:31:22
OpenCVやり始めたんだけど動画が再生できないんだけどどうすりゃいい?
0189デフォルトの名無しさん2009/06/08(月) 15:06:08
あ
ffdshowを入れればどんな動画も再生できるようになるんだな
この一番上のやつ

http://sourceforge.net/project/showfiles.php?group_id=173941
0190デフォルトの名無しさん2009/06/08(月) 15:07:09
>>188
どの段階で止まるかによる.
たとえば,AVI読み込み失敗ならコーデック不足.
0191デフォルトの名無しさん2009/06/08(月) 15:23:58
if(name == "デフォルトの名無しさん[] ") && (first_line == "あ\n") ) { ikenuma_flag = 1; }
0192デフォルトの名無しさん2009/06/08(月) 15:44:14
あ
だけでは同一人物だとは限定できないよね
プログラムの基本だよ
0193デフォルトの名無しさん2009/06/08(月) 16:16:44
>>189のような偽物が出てくると認識率が下がってしまいます。
顔認識でも双子とかそっくりサンがでてきたら駄目でしょうね。
DNA鑑定だって100%はありえないですからね。
0194デフォルトの名無しさん2009/06/08(月) 16:18:58
数字が並んだテキストファイルをCvMatに読み込ませたいのですが
関数1つではできないのでしょうか?

1 2 3
4 5 6

というテキストがあったら
cvCreateMat(2,3)
と各入れる要素の読み込みまでしたいのです
0195デフォルトの名無しさん2009/06/08(月) 16:44:15
>>190
ありがとう。ffdshowインストールしたら動画再生されるようになった。取りあえずコーデックを全部いれといた。


次はUSBカメラを買ってきて再生してみる。お勧めのUSBカメラあったら教えてくれ。
0196デフォルトの名無しさん2009/06/08(月) 17:25:29
あ
やっぱりいいや
これにするわ

http://www.amazon.co.jp/dp/B0001ZWN7M
0197sage2009/06/08(月) 18:41:32
質問させていただきます。
cvStereoCaribrateを使いたいのですが
引数の設定に悩んでいます

第4引数まで(以下リファレンスよりコピー)
object_points
オブジェクト点の結合行列,3xN あるいは Nx3.ここで, N は全てのビューにおける点数の合計.
image_points1
1 番目のカメラのビューにおける画像間対応点の結合行列, 2xN あるいは Nx2.ここで,N は全てのビューにおける点数の合計.
image_points2
2 番目のカメラのビューにおける画像間対応点の結合行列, 2xN あるいは Nx2.ここで,N は全てのビューにおける点数の合計.
point_counts
各ビューに含まれる点数のベクトル,1xM あるいは Mx1. ここで,M はビューの数.

結合行列という単語で引っかかっているのですが、
それぞれどういった内容の配列を与えればいいか教えてください
0198デフォルトの名無しさん2009/06/08(月) 19:56:48
OpenCVのキャリブレーションは全方位カメラや魚眼レンズでも使えますか?
0199デフォルトの名無しさん2009/06/08(月) 20:54:16
やったことはないけど歪み過ぎてチェスボードが検出できないと思う。
Matlabなら魚眼対応ツールあるけど
0200デフォルトの名無しさん2009/06/08(月) 22:50:15
PS2のUSBカメラが使えるらしいけど他のより性能いいの?使ってる人
0201デフォルトの名無しさん2009/06/08(月) 23:00:05
Webカメラのスレで聞いてみなよ
0202デフォルトの名無しさん2009/06/08(月) 23:12:20
>>200
USBカメラの中で最高の性能だよ。
人気で品薄になってるから見かけたら即買ったほうがいい
02032002009/06/09(火) 01:50:57
>>202
まじっすか。買ってみる。OpenCVで使ったらFPS早くなるかな。
0204デフォルトの名無しさん2009/06/09(火) 04:51:55
>>198 >>199
いったんラフに極座標変換とかして平面にしてからキャリブレーションすればいいんじゃないか?
0205デフォルトの名無しさん2009/06/09(火) 22:36:54
>>198
OpenCVはピンホールカメラモデルを仮定してるから,これに従う投影像
ならいい.ということで全方位カメラは無理.
魚眼レンズは画像中心付近はピンホールカメラモデルに近似できない
こともないからなんとかなるかも.中心以外はレンズ歪みを補正しきれ
ないと思う.
0206デフォルトの名無しさん2009/06/10(水) 12:32:56
matlabの吐く.datファイル(数字が並んだだけのテキストファイル)をOpenCVに読ませる関数はないのでしょうか
02071982009/06/10(水) 15:49:41
解答してくれた人ありがとう。いろいろ試行錯誤してみる
0208デフォルトの名無しさん2009/06/11(木) 22:25:28
>>206
OpenCVって16ビットの画像も扱えるんだから、CSVなんか使わないで
画像自体をCSVの代わりに使ったら?
CSVだと横の要素の制限(256?)があるし。
0209デフォルトの名無しさん2009/06/11(木) 22:48:42
>>208
pythonとか他の言語でも使うこと考えるとcsvが一番便利なんです
02102082009/06/11(木) 23:53:09
>>209
なるほど。自前で実装するといいよ。
数字だけでいいんだったらfgetsで一行づつ読み込んで
「,」で分けて配列に入れていけばいいじゃん。
0211デフォルトの名無しさん2009/06/12(金) 00:28:10
>>208
嘘はやめれ。csvに列数の制限など無い
Excelの制限(65536x256)と勘違いしていないか
0212デフォルトの名無しさん2009/06/12(金) 09:05:32
へぇ
0213デフォルトの名無しさん2009/06/12(金) 11:11:45
動画ファイルを読み込んで、その動画の強弱に合わせてアーティスティックな映像を
出すなんてことはできますか?メディアプレーヤーの視覚効果みたいなものです。
0214デフォルトの名無しさん2009/06/12(金) 11:13:55
>>211
Excelに256カラムの制限なんてない。そりゃぁ、かつてはあったかも知らんが。
0215デフォルトの名無しさん2009/06/12(金) 11:26:02
Excel 2007 では、以前のバージョンの列数制限 256 列 (IV) から16,384 列 (XFD) に拡大された。

http://office.microsoft.com/ja-jp/excel/HP100738491041.aspx?pid=CH101030621041
0216デフォルトの名無しさん2009/06/12(金) 11:27:37
>>213
できる。
0217デフォルトの名無しさん2009/06/12(金) 13:49:35
>>213
できまっせ!
02182132009/06/12(金) 14:42:16
いや、どうやったらできるかというか、その指針だけでもみんなに提案してもらおうと。
できるかできないかを聞いてるんじゃなくて。
0219デフォルトの名無しさん2009/06/12(金) 15:05:36
指針としては、まず動画ファイルを読み込んでみてそれができたら次を考える。
ちなみにメディアプレーヤーの視覚効果の入力は動「画」ではないんじゃね?
0220デフォルトの名無しさん2009/06/12(金) 15:20:23
指針

其の壱  動画を読み込む。

其の弐  動画の強弱を求める。

其の参  強弱に合わせて映像をアーティスティックに変化させる。

以上
02212132009/06/12(金) 16:09:22
えーと、その流れだってことは何となく分かってます。大丈夫でエス。
ところで、動画が再生できないんだけど。。。 どうすればいい???
0222デフォルトの名無しさん2009/06/12(金) 16:10:21
では聞くが、「動画の強弱」とは一体何なのだ。
02232132009/06/12(金) 16:13:33
なんなんでしょう。やっぱ明るさっすかね?
02242132009/06/12(金) 16:33:26
これで動画が再生できるはずなんですけどなんかおかしいですか?
Visual C++ Express 2008で作ってます。


#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")

int _tmain(int argc, _TCHAR* argv[])
{
CvCapture* src;
IplImage* frame;
cvNamedWindow("動画");
src = cvCaptureFromFile("動画.avi");
while(1){
frame = cvQueryFrame(src);
cvShowImage("動画", frame);
cvWaitKey(33);
}
cvDestroyWindow("動画");
cvReleaseCapture(&src);
return 0;
}
0225デフォルトの名無しさん2009/06/12(金) 16:40:58
>>224
これ無限ループしないか?
02262132009/06/12(金) 16:57:24
すまん。過去ログ>>189に動画の再生方法書いてあったぜ。
ffdshowってのでコーデックを入れればよかったんだな。
動画は再生できた。ただ>>225がいうように無限ループになる。

あとは動画の強弱の取り出し方だが、何かよい方法を提案してくれ。
0227デフォルトの名無しさん2009/06/12(金) 17:07:26
>>226
強弱ってのが何の強弱を意味するのかわからんが、画素値の平均とか標準偏差ならcvAvgとかcvAvgSdvとかでいいんじゃない?
0228デフォルトの名無しさん2009/06/12(金) 17:34:11
提案ねー。ピンボケしてたら弱い、クッキリしてたら強いってのはどう?
0229デフォルトの名無しさん2009/06/12(金) 17:35:58
色の変化が大きければ強くて変化が小さければ弱いってことでどうだろう。
02302132009/06/12(金) 17:43:01
>>227
平均値を出してみた。いい感じで動画の明るさに応じて変化しているようだ。
で?っていう。


#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")

int _tmain(int argc, _TCHAR* argv[])
{
CvCapture* src;
IplImage* frame;
cvNamedWindow("動画");
src = cvCaptureFromFile("動画.avi");
while(1){
frame = cvQueryFrame(src);
printf("平均値は%fだ。\n", cvAvg(frame));
cvShowImage("動画", frame);
cvWaitKey(33);
}
cvDestroyWindow("動画");
cvReleaseCapture(&src);
return 0;
}
0231デフォルトの名無しさん2009/06/12(金) 17:45:00
>>228 >>229
おお。いいね。
02322132009/06/12(金) 17:54:15
でもどうやったら。ちょっと調べてくる。
0233デフォルトの名無しさん2009/06/12(金) 20:38:55
213の口調はともかく
行動力に好感
0234デフォルトの名無しさん2009/06/12(金) 21:16:51
ブログを書く植物、その名も「緑さん」。
USBウェブカメラで撮影した映像でいろいろやってるみたい。
http://japan.cnet.com/news/tech/story/0,2000056025,20394905,00.htm
0235デフォルトの名無しさん2009/06/12(金) 23:54:08
癒し系だな
0236デフォルトの名無しさん2009/06/14(日) 21:41:59
あるノートパソコンでOpenCVをインストールしてサンプルプログラムを
実行したりしたんですけど、整数型しか使わないサンプルは動くんですが
小数型を使うプログラムは動かないみたいです。同じような症状が出た人
いますか?解決法があれば教えてください。
0237名無し募集中。。。2009/06/14(日) 23:22:52
「あるノートパソコン」以外では正常に動くのかね?
02382362009/06/15(月) 00:52:21
>>237
はい、デスクトップPCでは動きます。ちなみに動かないのはミニノートPCです。
多分、グラフィックボードが対応してないとかなんでしょうかね?
0239名無し募集中。。。2009/06/15(月) 01:04:41
グラフィックボードに依存した「サンプルプログラム」なのか?
少数型(浮動小数点?)の演算にグラフィックボードが依存するってgpgpuの事かね
環境や症状を人にわかるように説明出来なければヒントすら得られないと思うぜ
0240デフォルトの名無しさん2009/06/15(月) 07:13:51
入ってるOpenCVのバージョンが違うに一票
02412362009/06/15(月) 12:19:36
デスクトップ、ミニノートPCとも、XPのSP3にOpenCV1.1preをインストールした直後の状態です。
普通、サンプルプログラム(例えばDFTサンプルのdft.exe)なんか普通に実行できるはずなのに、
できないんです(デスクトップでは普通に実行できる)。
原因となっている関数を特定する為に、ソースコードを1つづつ削ったりしながら
ビルド&実行してみると、どうやら小数型の関数で引っかかっているみたいなんです。
最悪、OSの再インストールからやってみるべきかとも思っています。
0242デフォルトの名無しさん2009/06/15(月) 12:43:48
そもそも、「小数型の関数」なんてものはないだろ。
説明が下手なんだから、ソースを晒せよ。
02432362009/06/15(月) 13:04:55
下のソースのcvCreateImageの一行目で小数型(IPL_DEPTH_16S)のIplImage変数を
準備してるところでエラー発生。

#include <cv.h>
#include <highgui.h>

int main (int argc, char **argv)
{
IplImage *src_img, *dst_img, *tmp_img;

// 画像の読み込み
if (argc != 2 || (src_img = cvLoadImage (argv[1], CV_LOAD_IMAGE_GRAYSCALE)) == 0)
return -1;

tmp_img = cvCreateImage (cvGetSize (src_img), IPL_DEPTH_16S, 1);
dst_img = cvCreateImage (cvGetSize (src_img), IPL_DEPTH_8U, 1);

cvSobel (src_img, tmp_img, 1, 0); // Sobelフィルタ

cvNamedWindow ("Sobel", CV_WINDOW_AUTOSIZE);
cvShowImage ("Sobel", dst_img);

cvWaitKey (0);

cvDestroyWindow ("Sobel");
cvReleaseImage (&src_img); cvReleaseImage (&dst_img); cvReleaseImage (&tmp_img);
return 0;
}

02442362009/06/15(月) 13:08:41
上のソースは、張り付け間違えました。
下のソースのcvCreateImageで小数型(IPL_DEPTH_16S)のIplImage変数を
準備してるところでエラー発生。

#include <cv.h>
#include <highgui.h>

int main (int argc, char **argv)
{
IplImage *src_img, *dst_img;

// 画像の読み込み
if (argc != 2 || (src_img = cvLoadImage (argv[1], CV_LOAD_IMAGE_GRAYSCALE)) == 0)
return -1;

dst_img = cvCreateImage (cvGetSize (src_img), IPL_DEPTH_16S, 1);

cvSobel (src_img, dst_img, 1, 0); // Sobelフィルタ

cvNamedWindow ("Sobel", CV_WINDOW_AUTOSIZE);
cvShowImage ("Sobel", dst_img);

cvWaitKey (0);

cvDestroyWindow ("Sobel");
cvReleaseImage (&src_img); cvReleaseImage (&dst_img);
return 0;
}
0245デフォルトの名無しさん2009/06/15(月) 14:05:27
説明が下手な馬鹿でどうしようもないんだから、エラーメッセージくらい貼れよ。
なんだよ、準備って。俺語なんか作ってんじゃねぇって。
0246デフォルトの名無しさん2009/06/15(月) 14:44:42
いつからIPL_DEPTH_16S を少数型って言うようになったんだ?
0247デフォルトの名無しさん2009/06/15(月) 14:55:59
>>245 >>246
つたわりゃいいだろ。おまえならどう説明するんだい?
0248デフォルトの名無しさん2009/06/15(月) 14:59:33
お頭が硬いのかな?俺語くらい受け入れられなきゃだめだぞ。
0249デフォルトの名無しさん2009/06/15(月) 15:02:44
>>236はもう他のスレに行け。はてなとか。
0250デフォルトの名無しさん2009/06/15(月) 15:41:26
>>247
つたわんないだろ。IPL_DEPTH_16Sは符号有り 16 ビット「整数」
0251名無し募集中。。。2009/06/15(月) 15:42:13
IPL_DEPTH_16Sは符号付き16bit整数ね
02522362009/06/15(月) 16:14:22
あ
間違い、IPL_DEPTH_16Sじゃなく単精度浮動小数点数IPL_DEPTH_32Fを
使ったときにエラーが出るんだ。さっきのソースは適当に組んだもんで
実際には実行可能。
兎に角、ソースが悪いのではなくOpenCVとミニノートの相性が悪いみたい。
エラーメッセージは今そのPCが手元に無いので貼れず。
うまく動けばモバイルでOpenCVを使っていろいろできそう。
さあ、どうしたらよいのでしょうか。
■ このスレッドは過去ログ倉庫に格納されています