zoukankan      html  css  js  c++  java
  • 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();
        }
    }
  • 相关阅读:
    c3p0使用
    连接池介绍
    内存角度探寻C++面向对象 之 继承、多态
    java多线程总结
    SQL关联查询总结
    java内存管理总结
    自制操作系统 (六) 分割编译与中断处理
    C++内联函数
    C++函数指针
    springmvc下实现登录验证码功能
  • 原文地址:https://www.cnblogs.com/larkin-cn/p/14173417.html
Copyright © 2011-2022 走看看