c++ - 质量差,在 qt4 中渲染来自相机的图像时

标签 c++ qt opencv

我的代码:

camera = new RaspiCam_Cv();//raspbery pi library 

camera->set(CV_CAP_PROP_FORMAT,CV_8UC1); //this is monochrome 8 bit format
camera->set(CV_CAP_PROP_FRAME_WIDTH, 960);
camera->set(CV_CAP_PROP_FRAME_HEIGHT,720);

while (1){
    camera->grab();//for linux
    unsigned char* buff = camera->getImageBufferData();

    QPixmap pic = QPixmap::fromImage(QImage( buff, camWidth_, camHeight_,  camWidth_ * 1, QImage::Format_Indexed8 ));
    label->setPixmap(pic);
}

问题是质量不好!我发现问题发生在使用QImage时,当使用openCv Mat时,一切都很好!

同样的事情发生在其他基于 Qt 的程序中,比如这个(同样糟糕的质量):https://code.google.com/p/qt-opencv-multithreaded/

这是一张图片,其中显示了问题。 摄像头前面有一张白纸,所以如果一切正常,您应该会看到干净的灰色图像

photo of monitor

最佳答案

您正在使用像素图和标签变换调整图像大小,这比 QImage 的更差。这是因为像素图针对显示进行了优化,而不是针对其他任何内容。像素图大小应与标签相同,以避免进一步调整大小。

QImage img =QImage( 
    buff, 
    camWidth_, 
    camHeight_,  
    camWidth_ * 1, 
    QImage::Format_Indexed8 ).scaled(label->size());
label->setPixmap(QPixmap::fromImage(img));

关于c++ - 质量差,在 qt4 中渲染来自相机的图像时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32535724/

相关文章:

c++ - OpenGL Alpha channel 细节?

c++ - 基于类型名称的 SFINAE

c++ - 即使函数存在,也出现 undefined reference 错误

python-2.7 - 区分手写和机器打印的文本

清理相机 osx 和 opencv

c++ - 如何让 OpenCV 在 nix 中工作?

c++ - 从 cmake 文件运行 npm 命令

c++ - QMediaPlayer:发出 positionChanged() 时声音中断

c++ - qt designer 的自定义小部件插件是不可见的

c++ - 没有 try_key 的灰色图像