将 OpenCV cv::Mat 转换为 QImage
OpenCV cv::Mat 和 Qt QImage 是两种常用的数据结构,用于存储和操纵图像。这些格式之间的转换是一项常见任务,有多种方法可以实现此目的。
Michal Kottman 的解决方案
提供了问题中引用的一个解决方案作者:米哈尔·科特曼。此方法涉及将 cv::Mat 数据直接分配给 QImage:
QImage imgIn= QImage((uchar*) img.data, img.cols, img.rows, img.step1(), QImage::Format_RGB888);
解决限制
但是,在某些情况下,此方法可能不会产生某些图像的预期结果。为了解决这个问题,提出了一种改进的解决方案:
QImage imgIn= QImage((uchar*) img.data, img.cols, img.rows, img.step, QImage::Format_RGB888);
关键区别
此解决方案的关键区别是在函数调用中包含 img.step 。虽然如果没有此参数,Qt 可能不会引发错误,但它的缺失可能会导致某些图像显示不正确。
结论
通过合并 img.step,此解决方案提供了将 cv::Mat 转换为 QImage 的更稳健的方法,确保在所有情况下图像表示一致且准确。
以上是如何可靠地将 cv::Mat 转换为 QImage?的详细内容。更多信息请关注PHP中文网其他相关文章!