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 件のコメント:
コメントを投稿