zoukankan      html  css  js  c++  java
  • Qt QImage与OpenCV Mat转换


    本系列文章由 @yhl_leo 出品,转载请注明出处。
    文章链接: http://blog.csdn.net/yhl_leo/article/details/51029382


    应一个朋友的要求,整理总结一下,Qt中的图像类QImage与OpenCV库中Mat的转换方法,测试工程已发布在GitHub:yhlleo/QImage2Mat

    编译环境:

    • VS2010
    • CMake (version >= 2.8.3)
    • Qt (version 4.8.6)

    运行结果如图:

    lena

    一共有四个测试函数及其对应的转换结果:

    • qimageShow() -> QImage加载图像,并显示在Graphic View中;
    • mat2qImageShow() -> Mat to QImage是OpenCV Mat加载图像,转化为QImage后在Graphic View中显示;
    • qImage2MatShow() -> QImage to Mat 1是使用QImage数据直接初始化Mat后,使用OpenCV的gui显示方法;
    • qImage2MatPtrShow() ->QImage to Mat 2是使用常用的指针数组的方式遍历QImage,然后为Mat矩阵赋值,再使用OpenCV的gui显示方法;

    mat2qImageShow()qImage2MatShow()函数中,转换源代码主要来自博客:QImage 与 cv::Mat 之间的相互转换,博主写得很巧妙,值得一看。

    另外,提供的常见的指针数组的访问方式(见函数qImage2MatPtr()),对于QImage数据格式不同于Mat,不能使用以往(i*cols+j)*channels+k这种方式访问,而是i*byterPerLine+j*imgChannels + k,其中byterPerLine=(width*depth+31)/8,也就是说,其中含有4个字节的补齐问题,请参见提供的详细代码。

    关于QImage的format()类型,可以阅读help文档,解释的也比较清楚。

  • 相关阅读:
    js中细小点
    被 idea 坑了的记录篇
    Spring 读写分离
    Java反射机制
    Spring AOP
    java Beanutils.copyProperties( )用法
    java List 数组删除元素
    java 中序列化(Serializable)
    webpack 入门
    使用zxing生成彩色或带图片的二维码
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332139.html
Copyright © 2011-2022 走看看