【OpenCV】PointGrey社のカメラからMat型・IplImage型のデータを得るクラス

PointGrey_MV

研究室ではPointGrey社のカメラを使うことが多いです。
その辺で手に入るWebカメラとは違い、ホワイトバランスの自動調整など行わないので
背景差分などの処理に非常に都合が良いです。

PointGrey社のカメラから、OpenCVで用いるIplImageや、Matを得ようとすると若干メンドクサイです。
なので、ちょっとサボるためにC++用のクラスを作ってみました。
そして、折角作ったので一応公開してみる。

対象は、PointGrey社のカメラを使うんだけど、よくわかんない人、使えればいいやって人です。
カメラは1台のみの使用を想定しています。
本当に適当に作ってあるのでソース汚いです、ごめんなさい。
また多分バグあります、ごめんなさい
それでもよければ使ってみてください。
もちろん、Flycapture SDKはWindowsにしか無いので、Windows専用です
(Mac用のSDK出ないかな…)

Flycap_cppwrap_v0.1.zip
(Windows7 32bit、VisualC++.net2010、OpenCV2.2、PointGrey MVでのみ動作確認)

 

上記のzipを解凍して、中にあるflycap_cppwrap.hとflycap_cppwrap.cppをプロジェクトに追加してください。
なお、PointGreySDKやOpenCVなども使える状態にしておいてください。

Mat型を得るサンプル

#include <iostream>
#include "opencv2¥¥opencv.hpp"
#include "flycap_cppwrap.h"

using namespace cv;
using namespace std;

int main()
{
	Mat frm;

	Flycap cap
	while(waitKey(1)!=27){
		cap.grap(frm);
		imshow(CAMERA_IMAGE,frm);
	}

	return 0;
}

Flaycap型を宣言して、grap関数を呼ぶだけ。引数はカメラの画像を格納したいMat型です。
あとはことMat型、ソースではfrmを好き勝手にOpenCVでいじって下さい。

ちなみにIplImage型を得る場合は以下参照

IplImage型を得るサンプル

#include <iostream>
#include "opencv2¥¥opencv.hpp"
#include "flycap_cppwrap.h"

int main ()
{

	IplImage *frame = 0;
	int c;

	Flycap cap;

	while (1) {
		frame = cap.iplgrap();
		cvShowImage (CAMERA_IMAGE, frame);
		c = cvWaitKey (2);

		if (c == '¥x1b')
			break;
	}

	cvDestroyWindow (CAMERA_IMAGE);

	return 0;
}

同様にFlycap型を宣言して、iplgrap関数を呼び出すだけ。
iplgrap関数の戻り値はIpleImage型です。

一応サンプルとしてmain_mat.cppというファイルに上記のソースが入ってるので
よかったら適当に利用してみてください。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です