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();
    }
}
复制代码

 

posted @   larkin-cn  阅读(209)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示