大佬教程收集整理的这篇文章主要介绍了调整大小的 opencv 图像在 QWidget C++ 上无法正确显示,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试在 QLabel 上显示大小为 3000 * 4096
的 OpenCV 图像。图像在显示前被调整大小。如果大小可整除的调整大小因子(例如 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),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();
}
所以问题是OpenCV的step是一个size_t,当你把图片转成QImage的时候需要把它转成int。但是,我仍然不知道为什么当图像大小可以被调整大小因子整除时它会起作用。
QImage img(qImageBuffer,mat.cols,mat.rows,static_cast<int>(mat.step),QImage::Format_RGB888);
以上是大佬教程为你收集整理的调整大小的 opencv 图像在 QWidget C++ 上无法正确显示全部内容,希望文章能够帮你解决调整大小的 opencv 图像在 QWidget C++ 上无法正确显示所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。