opencv 打开usb镜头卡顿(帧率低)
以下是qt 代码,opencv 版本3.4.1
1.核心问题是设置cap.set(CV_CAP_PROP_FOURCC, CV_FOURCC(‘M’, ‘J’, ‘P’, ‘G’));
但是不要设置帧率即cap.set(CV_CAP_PROP_FPS, 30);
不知道为啥设置后反而帧率上不去。
2.如果之上的代码还是未达到预期,而且是在linux系统下使用可以安装以下依赖项
sudo apt-get install libv4l-dev
同时,重新编译opencv库
cmake -D WITH_LIBV4L=ON ../
ps:"…/"不加是不能生效的!
make -j8
make install
int main()
{
qint64 m_nTime=0;
qint32 m_nFrameRate=0;
VideoCapture cap(CV_CAP_DSHOW);
cv::Mat matframe;
if(cap.isOpened()){
cap.release();
qDebug()<<"cap.isOpened() ";
}
qDebug()<<cap.open(0);
Sleep(1000);
if(cap.isOpened()){
cap.set(CV_CAP_PROP_FOURCC, CV_FOURCC('M', 'J', 'P', 'G'));
cap.set(CV_CAP_PROP_FRAME_WIDTH, 2592);
cap.set(CV_CAP_PROP_FRAME_HEIGHT,1944);
// cap.set(CV_CAP_PROP_FPS, 30);
while ( cap.read(matframe))
{
if (matframe.empty())
{
qDebug() << "frame is null " << endl;
break;
}
cv::imshow("Input video", matframe);
if((QDateTime::currentDateTime().toTime_t() - m_nTime) < 1)
{
m_nFrameRate++;
}
else
{
qDebug()<<"m_nFrameRate:"<< m_nFrameRate << "opencv fps:"<<cap.get(CV_CAP_PROP_FPS); << QDateTime::currentDateTime().toString();
m_nTime = QDateTime::currentDateTime().toTime_t();
m_nFrameRate = 0;
}
char c = waitKey(1);
if(c==27) //ESC退出
break;
}
}
else
qDebug()<< "cap.isOpened() is failed !!!" ;
cap.release();
}