OpenCVでカメラのFPSが設定できません
OpenCVでカメラのFPSが設定できません
OpenCVでカメラのFPSが設定できません。どうやったらできるのでしょうか。
cap.set(CV_CAP_PROP_FPS,1);
と記述したのですがFPSが1にならないようです。なぜでしょうか
cap.set(CV_CAP_PROP_FPS,1);
と記述したのですがFPSが1にならないようです。なぜでしょうか
Re: OpenCVでカメラのFPSが設定できません
C++ OpenCV3.1 ですが このコード で動いてます。
cap.set(CV_CAP_PROP_FPS,1); は 値が 間違って いませんか。
#include <opencv2/core.hpp>
#include <opencv2/videoio.hpp> // videoioのヘッダーをインクルード
#include <opencv2/highgui.hpp> // highguiのヘッダーをインクルード
#include <iostream>
int main(int argc, const char* argv[])
{
// (1)DirectShowを使ってカメラキャプチャを行う。
// また、カメラIDが0番のカメラについてキャプチャの準備を行う
int camera_id = 0;
cv::VideoCapture cap(cv::CAP_DSHOW + camera_id);
// (2)カメラIDが0番のカメラが正しくオープンできているかをチェックする
//(正しくオープンできていなければエラー終了する)
if (!cap.isOpened())
return -1;
// (3)カメラキャプチャのフレームレートを30.0に指定する
cap.set(cv::CAP_PROP_FPS, 30.0);
// 画像表示用のウィンドウを生成する
cv::namedWindow("image", cv::WINDOW_AUTOSIZE);
// 画像データを格納するための変数を宣言する
cv::Mat frame;
for (;;)
{
// (4)カメラから1フレーム分の画像データを取得して、変数frameに格納する
cap >> frame;
// 画像データ取得に失敗したらループを抜ける
if (frame.empty()) break;
// 取得した画像データをウィンドウ表示する
cv::imshow("image", frame);
if (cv::waitKey(30) >= 0) break;
}
return 0;
}
Re: OpenCVでカメラのFPSが設定できません
ご返信ご検証ありがとうございます
OSはUbuntuでopencvはC++のver3.1.0を使用しています
以下のコードを記述すればカメラから得られる動画像は1FPSになってカクカクな映像が表示されると踏んでいたのですが
滑らかな映像で表示されます(体感40FPS以上?)
何故こうなるのか見当もつきません
ご教授の程よろしくお願いします
OSはUbuntuでopencvはC++のver3.1.0を使用しています
以下のコードを記述すればカメラから得られる動画像は1FPSになってカクカクな映像が表示されると踏んでいたのですが
滑らかな映像で表示されます(体感40FPS以上?)
何故こうなるのか見当もつきません
ご教授の程よろしくお願いします
#include <opencv2/core/core.hpp>
#include <opencv2/video/video.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
int main(int argc, const char* argv[]){
cv::VideoCapture cap(0);
if (!cap.isOpened())
return -1;
cap.set(CV_CAP_PROP_FPS,1);
cv::namedWindow("image", cv::WINDOW_AUTOSIZE);
cv::Mat frame;
while(1){
cap >> frame;
if (frame.empty()) break;
cv::imshow("image", frame);
if (cv::waitKey(30) >= 0) break;
}
return 0;
}
Re: OpenCVでカメラのFPSが設定できません
単純に 待ち時間 を 900 以上 にして 調整してみてください。
30fps だと 1000 ミリ秒 わる 30 で 33 msec なので
waitKey(30) かな という 気がします。
30fps だと 1000 ミリ秒 わる 30 で 33 msec なので
waitKey(30) かな という 気がします。
Re: OpenCVでカメラのFPSが設定できません
http://13mzawa2.hateblo.jp/entry/2015/12/28/180021 いま、よんでるとこるですが。関係あるかもしれません?
Re: OpenCVでカメラのFPSが設定できません
オフトピック
>何故こうなるのか
CV_CAP_PROP_FPS
等の設定が効かないというのは経験があります.
CVが中でどうやってそれを実現しようとするのか仕組みはわかりませんので,正確な理由は私は知りませんが,
例えば,単にカメラ自体にそう動けという設定をする形になっているのであれば,
カメラ側がそのような動作モードみたいなのをサポートしていなければ無理だろうな,とか想像はできます.
CV_CAP_PROP_FPS
等の設定が効かないというのは経験があります.
CVが中でどうやってそれを実現しようとするのか仕組みはわかりませんので,正確な理由は私は知りませんが,
例えば,単にカメラ自体にそう動けという設定をする形になっているのであれば,
カメラ側がそのような動作モードみたいなのをサポートしていなければ無理だろうな,とか想像はできます.
C6b14さんがおっしゃっているように,自前でフレーム画像を取得するタイミングを調整する方向ではダメなのでしょうか?
”1FPS”に対する要求精度がとても高いのでしょうか?
Re: OpenCVでカメラのFPSが設定できません
[ OpenCVでカメラのFPSを設定するには? CV_CAP_PROP_FPSは偽物です ] という 情報があって
”highgui / cap_v4l.cppには実装が存在しないため ” と ありますが。( ちょっと前の情報です )
”highgui / cap_v4l.cppには実装が存在しないため ” と ありますが。( ちょっと前の情報です )
Re: OpenCVでカメラのFPSが設定できません
とりあえず,まず
cap.set(CV_CAP_PROP_FPS,1);
の戻り値をチェックしてはどうでしょうか.
設定不能であれば,falseが返ってるのではないかと.
cap.set(CV_CAP_PROP_FPS,1);
の戻り値をチェックしてはどうでしょうか.
設定不能であれば,falseが返ってるのではないかと.
Re: OpenCVでカメラのFPSが設定できません
なるほど、私のPCでは1(true)が返るので,カメラの機種情報が分からないと調べようがないですね。
[ OpenCVでカメラのFPSを設定するには? CV_CAP_PROP_FPSは偽物です ] というのはここhttp://stackoverflow.com/questions/7039 ... -is-a-fakeの翻訳を見たのだと思います。注意して見ると
Worked for me for OpenCV 3.0.0 on Ubuntu 12.04. After
installing libv4l-dev, I reran my original cmake
(WITH_LIBV4L was enabled by default) and linking worked
without any change to make. Getting and setting
CV_CAP_PROP_FPS now works for my LifeCam Cinemas. – Ulrich Stern Aug 19 '15 at 14:36
とあるのでいまはカメラによっては正しく動いているようです。
読んでみると海外の皆さんもOpenCVの組織に問い合わせて苦労してるようです。(私のPCないのコードのopencvのincludeには該当する箇所がみつからずhttps://fossies.org/diffs/opencv/2.4.11 ... -diff.htmlなどを眺めてました。おかげで勉強になりました。)
[ OpenCVでカメラのFPSを設定するには? CV_CAP_PROP_FPSは偽物です ] というのはここhttp://stackoverflow.com/questions/7039 ... -is-a-fakeの翻訳を見たのだと思います。注意して見ると
Worked for me for OpenCV 3.0.0 on Ubuntu 12.04. After
installing libv4l-dev, I reran my original cmake
(WITH_LIBV4L was enabled by default) and linking worked
without any change to make. Getting and setting
CV_CAP_PROP_FPS now works for my LifeCam Cinemas. – Ulrich Stern Aug 19 '15 at 14:36
とあるのでいまはカメラによっては正しく動いているようです。
読んでみると海外の皆さんもOpenCVの組織に問い合わせて苦労してるようです。(私のPCないのコードのopencvのincludeには該当する箇所がみつからずhttps://fossies.org/diffs/opencv/2.4.11 ... -diff.htmlなどを眺めてました。おかげで勉強になりました。)
Re: OpenCVでカメラのFPSが設定できません
cap.get(CV_CAP_PROP_FPS);とcap.set(CV_CAP_PROP_FPS);の戻り値が共に-1になってしまうのを確認しました
(cap.get(CV_CAP_PROP_FRAME_WIDTH)の戻り値はちゃんと出るのになんで...... ;_; )
なのでwhileの中で経過時間を測定してFPSを調整する方法を試してみます
(cap.get(CV_CAP_PROP_FRAME_WIDTH)の戻り値はちゃんと出るのになんで...... ;_; )
なのでwhileの中で経過時間を測定してFPSを調整する方法を試してみます