• opencv mat转qimage


    QVector<QRgb> g_clrtable;
    for(int i = 0; i < 256; i++)
    {
            g_clrtable.push_back(QColor(i, i, i).rgb());
    }
    
    QImage cvMat2QImage(const cv::Mat &mat)
    {
        // 8-bits unsigned, NO. OF CHANNELS = 1
        if(mat.empty()){
            return QImage();
        }
        if(mat.type() == CV_8UC1)
        {
            uchar *pSrc = mat.data;
            QImage image(pSrc, mat.cols, mat.rows, mat.cols, QImage::Format_Indexed8);
            // Set the color table (used to translate colour indexes to qRgb values)
            image.setColorTable(g_clrtable);
    
            return image;
        }
        else if(CV_16UC1 == mat.type()){
            cv::Mat mat256 = mat / 256;
            cv::Mat mat8;
            mat256.convertTo(mat8, CV_8UC1);
            QImage image(mat8.data, mat8.cols, mat8.rows, mat8.cols, QImage::Format_Indexed8);
            // Set the color table (used to translate colour indexes to qRgb values)
            image.setColorTable(g_clrtable);
            return image;
        }
        // 8-bits unsigned, NO. OF CHANNELS = 3
        else if(mat.type() == CV_8UC3)
        {
            const uchar *pSrc = (const uchar*)mat.data;
            // Create QImage with same dimensions as input Mat
            QImage image(pSrc, mat.cols, mat.rows, mat.step, QImage::Format_RGB888);
            return image.rgbSwapped();
        }
        else if(mat.type() == CV_8UC4)
        {
            // Copy input Mat
            const uchar *pSrc = (const uchar*)mat.data;
            // Create QImage with same dimensions as input Mat
            QImage image(pSrc, mat.cols, mat.rows, mat.step, QImage::Format_ARGB32);
            return image /*image.copy()*/;
        }
        else
        {
            qWarning() << "mat type unsupport:" << mat.type();
            return QImage();
        }
    }
  • 相关阅读:
    为什么要使用href=”javascript:void(0);”
    切图要点
    css属性学习
    CentOS7使用yum安装RabbitMQ
    Linux下,root权限才能启动1024以下端口的程序
    Gitlab备份和恢复操作记录
    rpm批量卸载所有带有Java的文件
    如何使用微软官方工具制作win10启动盘
    重装系统时,将MBR分区转为GPT 分区
    walle 2.0 上线部署
  • 原文地址:https://www.cnblogs.com/larkin-cn/p/14173417.html
Copyright © 2020-2023  润新知