【发布时间】:2021-02-03 11:31:07
【问题描述】:
我尝试在 QLabel 上显示大小为 3000 * 4096 的 OpenCV 图像。图像在显示前调整大小。如果尺寸可整除的resize factor(例如2、4、8、16、32),则图像显示正确。如果大小不能被因子整除(例如 3、5、7、10),则图像无法正确显示。
我也尝试使用重新缩放因子而不是 cv:Size() 作为输入,但它的行为相似。例如:与fx = fy = 0.25 一起正常工作,但与fx=fy=0.3 不正确。
OpenCV 显示,比例因子 = 4:
在 QLabel 上显示,比例因子 = 4:
OpenCV显示,比例因子=10:
在 QLabel 上显示,比例因子 = 10:
以下是代码摘要:
resize(opencv_image, img_resize, cv::Size(opencv_image_.cols/4, opencv_image_.rows/4), 0, 0, cv::INTER_AREA);
ui->lbl_continuous_grab->setPixmap(QPixmap::fromImage(PutImage(img_resize)));
QImage PutImage(const Mat& mat)
{
// 8-bits unsigned, NO. OF CHANNELS=3
// Copy input Mat
const uchar *qImageBuffer = (const uchar*)mat.data;
// Create QImage with same dimensions as input Mat
QImage img(qImageBuffer, mat.cols, mat.rows, QImage::Format_RGB888);
return img.rgbSwapped();
}
【问题讨论】:
标签: c++ opencv mat resize-image