PS3のEyeCameraが60fpsで画像を取り込めるか調べるために、画面にfpsの値を表示させるコードを作成した。
以下にソースを示す。表示するコードの量を減らすために。ヘッダーやライブラリの宣言を省き、エラー処理も省いている
int _tmain(int argc, _TCHAR* argv[]) { cv::VideoCapture mCap; // camera device cv::Mat mat; int cnt = 0; // frame数 int oldcnt = 0; // 前フレーム数 int64 nowTime = 0; // 現時刻 int64 diffTime = 0; // 経過時間 int fps = 0; // 1秒のフレーム数 const double f = (1000 /cv::getTickFrequency()); mCap.open(0); mCap.set(CV_CAP_PROP_FPS, 60); mCap.set(CV_CAP_PROP_FRAME_WIDTH, 640); mCap.set(CV_CAP_PROP_FRAME_HEIGHT, 480); cv::Point point(2,28); int64 startTime = cv::getTickCount(); while(1) { mCap >> mat; nowTime = cv::getTickCount(); diffTime = (int)((nowTime- startTime)*f); if (diffTime >= 1000) { startTime = nowTime; fps = cnt - oldcnt; oldcnt = cnt; } std::ostringstream os; os << fps; std::string number = os.str(); cv::putText(mat, number, point, cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0,0,200), 2, CV_AA); cv::imshow("image", mat); int key = cv::waitKey(10); if (key == 'q') { break; } cnt++; } return 0; }
手持ちのカメラで調べてみたら、26fpsしかでないものもいた。
あとで、EyeCameraも試してみる
Syntax Highlighterとの相性が悪いので、乗り換えを考える。
22日補足
時間の条件式に等号が抜けていたので修正
0 件のコメント:
コメントを投稿