• C++ QT5中cv::Mat转化为QImage


    /// 转化Mat为QImage
    QImage scan::Mat2QImage(const cv::Mat& mat)
    {
        QImage img;
        int chana = mat.channels();
        /// 依据通道数不同,改变不同的装换方式
        if (chana > 1) {
            //img = QImage(static_cast<uchar *>(mat.data),mat.cols,mat.rows,QImage::Format_RGB888);
            cv::cvtColor(mat, mat, CV_BGR2RGB);
            /// construct the QImage using the data of the mat, while do not copy the data
            img = QImage((const uchar*)(mat.data),
                mat.cols,
                mat.rows,
                mat.step,//TmpMat.cols*TmpMat.channels(),
                QImage::Format_RGB888);
        }
        else if (4 == chana) {
            cv::cvtColor(mat, mat, CV_BGR2RGB);
            /// construct the QImage using the data of the mat, while do not copy the data
            img = QImage((const uchar*)(mat.data),
                mat.cols,
                mat.rows,
                mat.step,//TmpMat.cols*TmpMat.channels(),
                QImage::Format_ARGB32);
        }
        else {
            /// 单通道,灰度图
            img = QImage(mat.cols, mat.rows, QImage::Format_Indexed8);
            uchar* matdata = mat.data;
            for (int row = 0; row < mat.rows; ++row) {
                uchar* rowdata = img.scanLine(row);
                memcpy(rowdata, matdata, mat.cols);
                matdata += mat.cols;
            }
    
            QVector<QRgb>  colorTable;
    
            for (int k = 0;k < 256;++k)
            {
                colorTable.push_back(qRgb(k, k, k));
            }
    
            img.setColorTable(colorTable);
        }
        img.bits();
        return img;
    }
    本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    【LeetCode】203. Remove Linked List Elements
    【Leetcode】237. Delete Node in a Linked List
    char * const * (*a) (int b)
    排序算法
    系统设计
    PHP生成随机单词
    通过建立ssh信任,启动其他客户机的服务
    定时监控服务,告警,并启动服务
    定时监控所有服务器的端口,如果挂起,发送报警邮件
    反射
  • 原文地址:https://www.cnblogs.com/yamboo/p/13889598.html
Copyright © 2020-2023  润新知