我的代码:
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/
这是一张图片,其中显示了问题。 摄像头前面有一张白纸,所以如果一切正常,您应该会看到干净的灰色图像。
最佳答案
您正在使用像素图和标签变换调整图像大小,这比 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/