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

このエントリーをはてなブックマークに追加
937デフォルトの名無しさん:2010/03/08(月) 21:54:25
OpenCV2.0のcvLoadImageで16bitカラーのtiff画像読み込んだら、
勝手に8bitカラーに圧縮して読み込まれてしまうようなんですけど、これは仕様ですか?
オンラインマニュアル見ても特に記載されていないので・・・。
938デフォルトの名無しさん:2010/03/08(月) 23:06:41
ソースを秘匿したままでどうしろと?
939デフォルトの名無しさん:2010/03/08(月) 23:25:11
なぞなぞの答えは第2引数を書いてない。では?
CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR
940937:2010/03/09(火) 00:34:02
すいませんでした。
>>939 いえ、第2引数もそのように指定して、
IplImage* tmp = cvLoadImage("test.tif",CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
としても、tmp->depthがIPL_DEPTH_U8となっていて、実際にtmp->imageDataに格納されている
画素配列を確認しても8bitに変換されている状態でした。
サンプル画像はhttp://dl.maptools.org/dl/libtiff/の
pics-3.8.0.tar.gzのflower-rgb-contig-16.tifを使用しました。
941デフォルトの名無しさん:2010/03/09(火) 01:17:56
あ、ちがったか。失礼。
PNGだと読めるみたいだけどtifだとダメみたいですね
grfmt_tiff.cpp見ると8bitにしか対応してないような気もする
942デフォルトの名無しさん:2010/03/14(日) 22:14:36
サンプル画像数100でcreatesamples.exeを実行してるんですが、
3週間近く経っても実行完了しない。
サンプル画像の縦横比はそろえてるんだけどなぁ。
比だけでなく縦の長さ、横の長さ自体をそろえないとダメですかね?

それとももっと別の理由でしょうか。
943デフォルトの名無しさん:2010/03/15(月) 00:55:33
createsamplesって一瞬で終わるものだぞ。
サイズはテキストに書いて指定する。
944デフォルトの名無しさん:2010/03/15(月) 01:07:28
実際に3週間も待つとはずいぶんと気長な人だなあ
945デフォルトの名無しさん:2010/03/16(火) 01:47:05
OpenCVを勉強しようと思ってEssential OpenCVって本を買ったら1.0を使用してたんだけど、1.0をダウンロードして使ったほうがいいのかな?
それとも2.0で使ってても問題無いですか?
946138:2010/03/16(火) 02:08:10
とりあえず、1.1との違いが書いてあったので1.1で勉強してみることにしました。
947デフォルトの名無しさん:2010/03/16(火) 20:53:46
Cなら2.0でもあまり変わらない
948945:2010/03/17(水) 02:24:17
2.0を入れて本の通りにいくつかやってみましたが、特に問題は無さそうですね。
1.1と2.0は関数名とかも同じなのかな?
949デフォルトの名無しさん:2010/03/17(水) 10:47:38
ほぼ同じ。

変わったものもあるけど、コンパイルエラーが出てからググれば大丈夫。
950デフォルトの名無しさん:2010/03/17(水) 18:31:12
画像から任意の三角形を抜き出したいんだけど、マスクを使わずに
座標指定だけでやる方法ってある?
951デフォルトの名無しさん:2010/03/17(水) 20:12:07
三角形から外接の四角形を作りX,Yの点ごとに点が三角形の中にあるか否かを判断し中なら取り出すとか
をやるくらいならマスクのほうがいいな
952デフォルトの名無しさん:2010/03/17(水) 20:19:06
>>950
水平ラインごとに三角形内部の始点と終点座標を求めればOK。小学校の算数レベル。
953デフォルトの名無しさん:2010/03/17(水) 20:51:15
マスクを使わずにってのはマスク画像を自分で用意せずにっていう意味だと勝手に解釈
ならマスク画像を3点の座標からopenCVで描けばいいよね
954デフォルトの名無しさん:2010/03/17(水) 22:29:33
>>951に一票
955デフォルトの名無しさん:2010/03/18(木) 16:02:06
UbuntuでOpenCVやろうとしてるんですが、DVカメラ(所謂ハンディカム)からはキャプチャできないのでしょうか?
956デフォルトの名無しさん:2010/03/19(金) 18:04:48
>>950
どうせ取り出すときにマスク範囲と同じ領域が
必要だからマスクのほうが効率いいんじゃない?
957デフォルトの名無しさん:2010/03/19(金) 22:49:06
ctypes_opencvとopencv2.0に付属のpythonインターフェイスはどっちがお勧め?
openCVに付属してる奴は自分でCの関数書くとそれをpythonから簡単に読めなかった記憶あるんだけど
958デフォルトの名無しさん:2010/03/23(火) 21:35:45
OpenCVデフォルトのpython interface生成方法がすごい変すぎる
なんでctypes使わないの?
959デフォルトの名無しさん:2010/03/24(水) 04:21:22
OpenCVの癖のあるC++はVisual Studioでないと読めない
emacsでは無理なのか
960デフォルトの名無しさん:2010/04/02(金) 14:24:01
OpenCV2.0をVisualStudioで使おうとcmakeからビルドしたら
サンプルプログラムの実行をVisualStudioからできない
コンパイルしたのを直接動かすことはできる
VisualStudioでデバックしながら実行したいのに
961デフォルトの名無しさん:2010/04/03(土) 03:26:55
失礼します。
画像ファイルから動画を作りたいと思っているのですが、以下のプログラムを実行しても、最初の画像しか出てきません。
自分としては2枚目の画像が2秒後に出るように作ってみたつもりなのですが・・・。
また、コーデックで無圧縮AVIは使えるのでしょうか?//にしている部分を実行してみたところ、エラーになりました。
良かったら、どこが間違っているのか教えてください。
WindowsXPでOpenCV1.1preを使用しています。言語はC++/CLIです。
よろしくお願いします。

CvVideoWriter* rec;
CvSize sz;

sz = cvSize(640,480);
rec = cvCreateVideoWriter("D:\\Test.avi",CV_FOURCC('P','I','M','1'), 120, sz,1); // MPEG-1
// rec = cvCreateVideoWriter("D:\\Test.avi",CV_FOURCC('D','I','B',' '), 120, sz,1); // 無圧縮AVI?エラーになる

IplImage* img1 = cvLoadImage("D:\\tmp.bmp");
cvWriteFrame(rec,img1);
IplImage* img2 = cvLoadImage("D:\\tmp2.bmp");
cvWriteFrame(rec,img2);

cvReleaseImage(&img1);
cvReleaseImage(&img2);
962961:2010/04/03(土) 19:10:12
いちおー自己解決しました。
MPEG-1コーデックが壊れていたらしいです。
963デフォルトの名無しさん:2010/04/04(日) 19:09:27
>>955
1394以外だったらキャプチャボードが必要
964デフォルトの名無しさん:2010/04/08(木) 02:21:21
OpenCV始めて1日目です
IplImage* img = cvLoadImage("CMYK.TIF", CV_LOAD_IMAGE_ANYCOLOR);
↑でフォトショで作ったCMYKのTIFF画像を読み込んだのですがimg->colorModelを参照するとなぜかRGBになっています
勝手にRGB変換されてしまうのでしょうか?CV_LOAD_IMAGE_ANYCOLORをつけているのですが・・・
OpenCVでCMYKを正しく扱うにはどうすればいいですか?
965デフォルトの名無しさん:2010/04/08(木) 22:48:40
>>964
そのTIFF画像のRGBにCMYK時の色が付いてるんだろ
966デフォルトの名無しさん:2010/04/09(金) 02:13:11
それってRGBに変換されてるってことじゃね
967デフォルトの名無しさん:2010/04/09(金) 03:06:33
TIFF画像がCMYKで保存されているか調べる方が先だろ
968デフォルトの名無しさん:2010/04/09(金) 21:09:02
RGBで読まれるだろ
いやなら変換しろ
969デフォルトの名無しさん:2010/04/12(月) 14:05:10
ubuntu10.04はOepnCV2.0がパッケージで入るみたいだよ
970デフォルトの名無しさん:2010/04/12(月) 20:55:41
>>969 これだね。
Ubuntu -- lucid の libcv4 パッケージに関する詳細
ttp://packages.ubuntu.com/lucid/libcv4
971デフォルトの名無しさん:2010/04/13(火) 13:05:57
VisualStudio2010出たみたいだけど
OpenCVは対応したのかな
972デフォルトの名無しさん:2010/04/13(火) 23:53:36
OpenCV2.1には特に書いて無かったよな
まぁ2010でも問題無いだろう
973デフォルトの名無しさん:2010/04/14(水) 12:12:57
VS2010は何かdllたりなくてビルド失敗するらしいとブログに書いてあった
974デフォルトの名無しさん:2010/04/15(木) 09:01:28
そのブログがどこか分からんので何ともいえんが、
2010express単体だとopenmpライブラリ無くて使えないから
windowssdk7.1を待つしかないな
975デフォルトの名無しさん:2010/04/15(木) 11:26:14
cmakeのオプションでopenmpはずせるよ
976デフォルトの名無しさん:2010/04/15(木) 16:54:35
USBカメラからキャプチャするプログラムを試してます。
http://opencv.jp/sample/video_io.html
このサンプルプログラムをそのまま使っています。
ビルドもエラー無くでき、カメラは認識するんですが映像が映りません。

環境はVisial C++ 2008 OpneCV1.0 カメラはMicrosoft Life Cam VX-7000です。
設定などは全部できました。
977デフォルトの名無しさん:2010/04/17(土) 14:51:34
素直に2.0以降を使いましょう。

1.0だとDirectShow経由で画像取得してる例がいくつかあるね。
978デフォルトの名無しさん:2010/04/18(日) 21:38:18
cvFindContours で線形上のエッジを検出した後、そのエッジの始点〜終端までの
距離(ピクセル数ではない)を求めたいのですが、どのような方法が一般的でしょうか?

例えば斜めの線だと、2点間の距離はピクセル数ではない為、
線を書いてピクセル数を数える方法では対応できませんでした。
979デフォルトの名無しさん:2010/04/18(日) 23:10:09
ピクセル数じゃない距離って何?
980デフォルトの名無しさん:2010/04/18(日) 23:31:10
>>978

勉強不足ですみません。例えば X1=1 Y1=1 ピクセルを P1、X2=5 Y2=6 ピクセルを P2 とすると
2つの座標間を線を書くなどして現すと■のような軌跡で6ピクセルとなりますが、
これは X2-X1 か Y2-Y1 のどちらか大きい方の移動量を現すだけで、点間の距離ではありません。

P1とP2の距離を座標で計算すると SQRT((5-1)^2+(6-1)^2) で、距離は 6.403 になると思います。

■(←P1:1,1)
□■
□□■
□□□■
□□□■
□□□□■(←P2:5,6)
981デフォルトの名無しさん:2010/04/19(月) 01:00:35
>>980
直線しか検出しないの?

2値化されているなら、
while(1){
 ■(X,Y)の場所から上下左右の9ピクセルの中から
 上の座標以外で■のある場所を探して、その座標をX,Yに
 ■が無かったらbreak;
}
982デフォルトの名無しさん:2010/04/19(月) 03:04:24
>>980
ではどちらか大きい方を選べばいいんじゃ?
len = max ( abs(X2-X1), abs(Y2-Y1) ) + 1;
983デフォルトの名無しさん:2010/04/19(月) 03:12:35
上下左右への移動は1
斜め移動は√2で計算すればいいんじゃないの?
984デフォルトの名無しさん:2010/04/19(月) 12:02:19
>>980
その距離が欲しいなら、その距離を計算すればいいんじゃないの?
等高線の長さが欲しいなら、擬似的には>983でいいし。
>983で>980の状況なら、等高線の長さは4√2+1で約6.66になるね。
985980:2010/04/19(月) 21:10:34
皆さん

アドバイスありがとうございます。
983さんの方法が近似的に計算できそうなので、この方法で考えてみます。
986名無し募集中。。。
【Intel】OpenCV総合スレ 3画素目【画像処理】
http://pc12.2ch.net/test/read.cgi/tech/1271686856/l50