如何将opencv cv :: Mat转换为qimage
我想知道如何将OpenCV C ++标准cv :: Mat类型转换为Qimage。我一直在寻找,但没有运气。我找到了一些将IPlimage转换为Qimage的代码,但这不是我想要的。谢谢
没有找到相关结果
已邀请:
11 个回复
诞胃
区别在于添加img.step部分。如果没有它,qt不会抱怨,但如果没有它,一些图像将无法正常显示。希望这会有所帮助。
纤洞需匪
畦桨存灯
转换为
,您可以尝试使用
构造函数,如下所示(
是
):
它比手动将像素转换为
更有效,但您必须将原始的
图像保留在内存中。它可以很容易地转换为
并使用
显示:
更新 因为OpenCV默认使用BGR顺序,所以你应该首先使用
来获得Qt理解的图像布局。 更新2: 如果您尝试显示的图像具有非标准步幅(当它是非连续的,子矩阵时),图像可能会失真。在这种情况下,最好使用
明确指定步幅:
bab
这对我有用。我上面修改了Michal Kottman的代码。
蕾跨立锌煤
呢率篓舍烫
这些函数可以处理带有1,3,4个通道的图像,每个像素只能占用一个字节(CV_8U-> Format_Indexed8,CV_8UC3-> QImage :: Format_RGB888,CV_8UC4-> QImage :: Format_ARGB32),我不处理其他类型还没有(QImage :: Format_RGB16,QImage :: Format_RGB666等)。代码位于 在github。 **转换到Qimage **的关键概念是
变换
的关键概念是
如果有人可以扩展这些功能并使它们支持更多类型会很好,如果有任何错误,请通知我。
鲁釜头
,而
需要RGB。这意味着如果将
转换为
,将交换蓝色和红色通道。要解决这个问题,在构造
之前,需要使用参数
通过
方法将
的BRG格式更改为RGB,如下所示:
或者,在
上使用
死搭胯
转换为OpenCV的
,反之亦然。 在那之后,如果您需要帮助将
到
之间进行转换:
这是一个黑客,但将完成工作。
翁茄口霉氖
宠封钞轰
壤欠攻混
完成! 如果你想要在QLabel中显示它,那么继续:
我个人用它来做一个简单的图像编辑器。