问题描述:调整大小后的opencv图像在QWidget C++上显示不正确。
答案:在使用OpenCV库进行图像处理时,调整图像大小后可能会导致图像在QWidget上显示不正确的问题。这可能是由于以下几个原因引起的:
cv::cvtColor(srcImage, dstImage, cv::COLOR_BGR2RGB);
这将把BGR格式的图像转换为RGB格式,以确保与QWidget的格式一致。
cv::resize(srcImage, dstImage, cv::Size(newWidth, newHeight), 0, 0, cv::INTER_NEAREST);
这将使用最近邻插值算法进行图像的大小调整。
srcImage.convertTo(dstImage, CV_32F);
这将把图像的数据类型转换为32位浮点型,以满足后续的图像处理需求。
对于QWidget C++上显示图像的问题,可以通过以下方法解决:
void CustomLabel::paintEvent(QPaintEvent *event) {
QLabel::paintEvent(event);
QPainter painter(this);
QImage image((uchar*)dstImage.data, dstImage.cols, dstImage.rows, QImage::Format_RGB888);
painter.drawImage(0, 0, image);
}
这将创建一个QImage对象,并使用OpenCV图像的数据填充该对象,然后使用QPainter绘制该QImage对象到QWidget上。
QImage image((uchar*)dstImage.data, dstImage.cols, dstImage.rows, QImage::Format_RGB888);
ui->label->setPixmap(QPixmap::fromImage(image));
这将创建一个QImage对象,并使用OpenCV图像的数据填充该对象,然后将其转换为QPixmap,并设置为QLabel的背景图像。
以上是关于调整大小后的OpenCV图像在QWidget C++上显示不正确的解决方法。如果还有其他问题,请详细描述,我将尽力提供更多帮助。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云