簡體   English   中英

視頻時長(OpenCV)

[英]Duration of a video (OpenCV)

我想獲取視頻的fps,但無法使用屬性CV_CAP_PROP_FPS。 我以為擁有視頻的幀數和持續時間可以得到它。 問題是我找不到給出持續時間的方法。 有人可以幫助我嗎?

謝謝!

首先,在嘗試獲取/設置某些屬性之前,請從攝像機/視頻中至少獲取一幀。 有時不做就可以正常工作,但最好還是這樣做。
如果它不能解決您的問題,則可以嘗試使用其他屬性:

cv::VideoCapture camera("some_movie.avi");
cv::Mat img;
camera >> img;
std::cout << camera.get(CV_CAP_PROP_FPS) << std::endl;
std::cout << camera.get(CV_CAP_PROP_FRAME_COUNT) << std::endl;
std::cout << camera.get(CV_CAP_PROP_POS_AVI_RATIO) << std::endl;
std::cout << camera.get(CV_CAP_PROP_POS_FRAMES) << std::endl;
std::cout << camera.get(CV_CAP_PROP_POS_MSEC) << std::endl;
std::cout << "setting pos avi ratio to 1" << std::endl;
std::cout << camera.set(CV_CAP_PROP_POS_AVI_RATIO, 1.0) << std::endl;
std::cout << camera.get(CV_CAP_PROP_POS_AVI_RATIO) << std::endl; //i think it's not working - returns bad position(same as the first call of camera.get(CV_CAP_PROP_POS_AVI_RATIO)
std::cout << camera.get(CV_CAP_PROP_POS_FRAMES) << std::endl;
std::cout << camera.get(CV_CAP_PROP_POS_MSEC) << std::endl;

結果:

三十
1739
0.0333333
1
33.3333
將pos avi比率設置為1
1
0.0333333
1739
57966.7

使用總時間(最后一幀的時間)和幀數,您可以自己計算fps。 另外,您也可以使用第一幀的位置-將1.0除以第一幀的位置即可獲得fps。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM