作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的个人项目,该项目使用QT和OpenCV框架在QLabel中显示视频。我知道如何进行到QImage的转换并设置Pixmap。
但是,视频在while循环下运行得太快了,无论我加载哪个视频,当我检查fps时,帧数都是29或30。
为了解决这个问题,我还实现了QTimer以在加载视频时启动。
我不确定如何使用它来显示需要设置的适当帧速率的帧。
任何想法,我怎么可以实现这一目标?
最佳答案
我之前在项目中已经完成了QImage转换。
static QImage Mat2QImage(const cv::Mat3b &src) {
QImage dest(src.cols, src.rows, QImage::Format_ARGB32);
for (int y = 0; y < src.rows; ++y) {
const cv::Vec3b *srcrow = src[y];
QRgb *destrow = (QRgb*)dest.scanLine(y);
for (int x = 0; x < src.cols; ++x) {
destrow[x] = qRgba(srcrow[x][2], srcrow[x][1], srcrow[x][0], 255);
}
}
return dest;
}
void foo::timeout() // A slot which QTimer's timeout signal is connected to
{
// I didn't tested the code but it should work
Mat frame;
m_cap >> frame;
QImage img = Mat2QImage(frame);
QPixmap pixmap = QPixmap::fromImage(img);
ui->streamDisplay->setPixmap(pixmap);
}
关于c++ - OpenCV QT,显示视频帧(不使用While循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60051635/
我是一名优秀的程序员,十分优秀!