• 締切済み

画像ボードのバッファにある画像をOpenCVで処理する方法を教えてください

カメラの画像をグラフインというメーカーの画像ボードを介してPCに取り込んでいます。 ここでその画像をOpenCVを使用して処理しようとしています。 一度保存した画像を処理するのはできるのですが、 画像ボードのバッファからデータを読み込んできてきて処理する方法が分からず困ってます。 Iplimageという構造体にデータを入れればよさそうなのですが、 その変換のやり方がわかりません。 開発環境はWindowsXP visual C++ 2005 MFC です。 当方、プログラムを始めたばかりなので できれば詳しく教えて頂けると助かります。 よろしくお願いいたします。

みんなの回答

  • BLK314
  • ベストアンサー率55% (84/152)
回答No.1

画像ボード内のバッファからデータを取り出すのはOpen CVの仕事ではないと思います。画像ボードに付属の"開発用キット"みたいなものがありませんか?あるいは、メーカーのサイトからDLする必要があるかもしれません。そのキット(みたいな物)の中には、マニュアル(ヘルプの場合もある)やサンプルも同梱されているはずです。Windows用であれば、十中八九(というか、ほぼ確実に)VC用のサンプルも存在するはずです。それを参照してください。

komehon
質問者

お礼

返信ありがとうございます。 すいません情報不足でした。 おっしゃる通り、画像ボードからデータを取り出すのは画像ボードのライブラリ関数を使って行ってます。 で、そのとってきた画像データをOpenCVで使えるように変換する方法がわからなかったのです。 昨日、cvSet2Dという関数を使って 画像ボードの関数でとってきた画像データの値を1個ずつ入れていく (行列の値を入れていく?)方法でやるとなんとかできるようになりました。 しかしcvSet2Dという関数は非常に低速で推奨しないと書かれてました。 他に何か効率のいい方法があれば教えていただけないでしょうか?

関連するQ&A

  • OpenCV処理画像をpictureBoxへ。

    VC++にて画像処理を行っています。 OpenCVのライブラリを使って画像処理をしようと考えているのですが、 処理した画像がMFCで作成したpitureBoxに表示の仕方が分かりません。 調べていくうちに、 「IplImage形式の画像を直接ウィンドウに描画することは出来ないので、 画像をDIBセクション形式に変換してWindows固有の描画処理を行うといい。」 ということが分かり、DIBセクション形式への変換には、IPLを入手し、 「iplConvertToDIB()関数」を使うということが分かりました。 このiplConvertToDIB()関数をつかって画像表示の方法を教えてはいただけないでしょうか?サンプルのソースなどありましたらよろしくお願いいたします。

  • 【OpenCV】IplimageをDirectXのテクスチャとして利用する方法

    Webカメラにてキャプチャした動画像を,二値化,アフィン変換等の処理を施し,このイメージをテクスチャとしてポリゴン等に貼り付けてリアルタイム表示するといったことを考えています. キャプチャから画像処理まではOpenCVを利用すると簡単そうなのですが,OpenCVで採用されている画像の構造体IplimageをどのようにしたらDirect3D用のテクスチャにできるのかわからず,困っております. そもそもそのようなことができるのかも良くわかりません. どなたか,よろしくお願いします.

  • OPENCVの画像処理について

    現在OPENCVを使って画像処理の勉強をしているのですが画像を読み込む際 IplImage* cvLoadImage という関数?を使って画像を読み込んでいるのですが 例えばファイルAに10枚画像が入っていたとしてその10枚をIplImage* cvLoadImageで一枚ずつ読み込むのではなくまとめて読みこむ(配列のように読みこんだ画像の順から[1]などの番号が付くような)という関数はないのでしょうか? 画像を変えるたびに「名前.jpg」を変えないといけない手間を省きたいです。

  • OpenCVでの画像処理について

    OpenCVを用いて連続して画像処理を行おうとしています。 単にcvLoadImageを用いて画像処理を行うことはできるのですが、 if(k=1)IplImage *img = cvLoadImage( "gazou1.jpg", -1); if(k=2)IplImage *img = cvLoadImage( "gazou2.jpg", -1); とif文を用いて画像を取り込んで処理して破棄して、新しい画像を取り込んで…と連続して異なる画像を同じ処理をするプログラムを作ると error C2065: 'img' : 定義されていない識別子です。 error C2227: '->height' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。型は ''unknown-type'' です。 error C2227: '->width' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。型は ''unknown-type'' です … とたくさんのエラーがでてしまいます。 if文を使わずに同じ画像を何度も処理することはできるのですが… この解消法をわかる方は教えてください。 ぜひ、よろしくお願いします。

  • opencvによる画像処理。

    opencvによる画像処理。 今opencvを使った画像処理をしているのですが、これって普通のプログラム中に関数みたいな感じで使う事って出来ないのでしょうか? 例えば、Cで車両を制御するプログラムを作ってる場合に、車両が何mm進んだ時点で車両に取り付けたカメラを使って、画像処理を行う。みたいな処理をしたいです。 でもopencvのmain文って、引数が二つあってそれをどう渡せばいいのかよく分かりません。 素人なので分かりずらくて申し訳ありません。

  • openCVについて‥

    openCVでIplImage構造体の変数に格納された画像の座標値(i,j)の画素RBG値を取れだす方法を知れたいのですが、ご存知の方、是非ご教授ください。

  • OpenCVで処理した画像の表示方法。

    VC++でOpenCVを使って画像処理を研究中です。 OpenCVでの画像の表示は、 char *filename = "lena.jpg"; image = cvLoadImage(filename, CV_LOAD_IMAGE_COLOR); cvNamedWindow ("lena", CV_WINDOW_AUTOSIZE); cvShowImage ("lena",image); で出来るということは分かりました。 しかし、MFCで作ったフォームのピクチャーボックスへの表示の仕方が分かりません。 画像処理は実行ボタンでpictureBox1の元の画像をpictureBox2に表示させようと考えております。 回答のほど、どうぞよろしくお願いいたします。 また、分かりやすいサイトなどありましたらお願いします。

  • OpenCVでの動画処理(入出力)

     OpenCVを用いて動画処理を行っています。  動作環境はMacOS10.9で、MacPortsを用いて最新版(おそらく...)のOpenCVを入れています。開発環境はXCode4です。  USBカメラを接続し、cvQueryFrame(CvCapture*)の関数を用いて画像を取得しています。そのままこの関数の返り値をIplImage*に代入してはいけないようなことをどこかで聞いていたので、念のため... IplImage* cap = cvQueryFrame(capture); IplImage* img; if(cap) img = cvCloneImage(cap); else img = NULL; というようなコードを書いて、imgに対して処理を行っています。  しかし、頻度は少ないのですがたまにimgにNULLが代入されるときが有ります。頻度は5000フレームに一度あるかどうかで、再現性が低いのでなんだかよくわかりません。 これは仕様なのでしょうか?USBカメラがたまに画像を取得できない瞬間があるという理解でいいのでしょうか?  私のコードに間違いがある場合は指導お願いします。  あと、動作が正常なので、画像は取得できているのでしょうが... QTCaptureSession warning: Session received the following error while decompressing video: Error Domain=NSOSStatusErrorDomain Code=-12909 "The operation couldn’t be completed. (OSStatus error -12909.)". Make sure that the formats of all video outputs are properly configured. というような警告が標準出力される時があります。 この警告の頻度はなかなか多く、200フレームに一度ぐらいあります。 動作は正常ですが、この瞬間だけ処理速度が少し落ちる傾向があるようです。 ちなみに言語はC++を用いています。 よろしくお願いします。

  • OpenCVのIplImage型に関する質問

    OpenCVのIplImageという構造体は http://hp.vector.co.jp/authors/VA025246/opencv/004.html のようになっているようなのですが, 画像をキャプチャした際に、「画素のdepthが 8(bit)でチャンネル数3(RGB)のとき」、 char *imageData から、一直線の配列として画像がRGBRGBRGB・・・という風に並んでいて、それぞれの大きさがcharだというのはわかりました。 そこで、imageDataのポインタを進めていって(+1したり+2したりすることで)画像データを読み込んでいます しかし、「depthが32(bit)でチャンネル数1(グレイ画像)のとき」、同じように辿っても、正しいデータが得られませんでした(0.00000という画素値やありえないぐらい大きい値)。 型がcharなので、そこがおかしいのかと思いますが、 char型から始まる画像データなのに、double型(32bit)をどうやっていれてあるのか見当もつきませんし、どうやって32bitずつポインタを進めていくのかもわかりません。 そもそも、ここに本当にデータが入ってるのか・・・(汗 OpenCV経験者の方は少数だと思いますが、画像処理経験者の方など、何か思いつくところがある方、ぜひとも意見をお願いしますm(_ _"m)ペコリ

  • C++ OpenCV Mat CvMat Ipl

    C++ OpenCV2.4についての質問です. cv::Mat CvMat IplImage など他にもデータ形式はあると思うのですが・・・. 画像処理に用いる場合に, 画像読み込みついて CvMatはcvLoadM IplImageはcvLoadImage 画像のメモリ取得について CvMatはcvCreateMat IplImageはcvCreateImage とあるのですが,cv::Matはないように思います. 最初はIplImage型やCvMat型でデータを取得するのではなく Loadの時点からcv::Matを使う方法はありませんか?

専門家に質問してみよう