Mat QImage QPixmap互转

简介: Mat QImage QPixmap互转
QImage MatToQImage(const cv::Mat& inMat)
{
    switch (inMat.type())
    {
    case CV_8UC4: 
    {
        QImage image(inMat.data,
            inMat.cols, inMat.rows,
            static_cast<int>(inMat.step),
            QImage::Format_ARGB32);
        return image;
    }
    case CV_8UC3:
    {
        QImage image(inMat.data,
            inMat.cols, inMat.rows,
            static_cast<int>(inMat.step),
            QImage::Format_RGB888);
        return image.rgbSwapped();
    }
    case CV_8UC1:// 8-bit, 1 channel
    {
#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)
        QImage image(inMat.data,
            inMat.cols, inMat.rows,
            static_cast<int>(inMat.step),
            QImage::Format_Grayscale8); 
#else
        static QVector<QRgb>  sColorTable;
        // only create our color table the first time
        if (sColorTable.isEmpty())
        {
            sColorTable.resize(256);
            for (int i = 0; i < 256; ++i)
            {
                sColorTable[i] = qRgb(i, i, i);
            }
        }
        QImage image(inMat.data,
            inMat.cols, inMat.rows,
            static_cast<int>(inMat.step),
            QImage::Format_Indexed8);
        image.setColorTable(sColorTable);
#endif
        return image;
    }
    default:
        qWarning() << "error" << inMat.type();
        break;
    }
    return QImage();
}
//QImage 转 QPixmap
QImage image;
QPixmap map = QPixmap::fromImage(image);
//QPixmap 转 Mat
QPixmap image;
Mat frame = Mat(image.height(),image.width(),CV_8UC3,(void *)image.bits(),image.bytesPerLine()); 
//Mat 转 QImage
Mat frame;
QImage img=QImage((const unsigned char*)(frame.data),frame.cols,frame.rows,frame.step,QImage::Format_RGB888);


相关文章
|
关系型数据库 MySQL Apache
window下修改MySQL密码
window下修改MySQL密码
382 6
|
3月前
|
机器学习/深度学习 边缘计算 算法
金属材料表面六种缺陷类型数据集 | 适用于YOLO等视觉检测模型(1800张图片已划分、已标注)
本数据集包含1800张金属表面缺陷图像,涵盖裂纹、夹杂、凹坑等6类缺陷,已标注并按train/val/test划分,支持YOLO、Faster R-CNN等模型训练,适用于工业质检与智能检测研究。
金属材料表面六种缺陷类型数据集 | 适用于YOLO等视觉检测模型(1800张图片已划分、已标注)
|
存储 算法 C++
c++ vector数组详细介绍(二)
c++ vector数组详细介绍(二)
411 0
|
12月前
|
数据可视化 数据挖掘 数据处理
实时计算Flink评测
本文介绍了Flink在实时计算领域的应用实践及核心功能评估,涵盖用户行为分析、电商羊毛党识别、实时销售数据分析三大场景,展示了Flink在处理实时数据流时的高效性、准确性和可靠性。同时,文章还深入探讨了Flink的统一数据处理、事件驱动处理、高容错性、高性能低延迟、灵活窗口操作及丰富API等核心功能,并指出了其优势与待改进之处,为用户提供全面的参考。
|
机器学习/深度学习 存储 数据可视化
【PyTorch基础教程23】可视化网络和训练过程
为了更好确定复杂网络模型中,每一层的输入结构,输出结构以及参数等信息,在Keras中可以调用一个叫做model.summary()的API能够显示我们的模型参数,输入大小,输出大小,模型的整体参数等。
1867 0
【PyTorch基础教程23】可视化网络和训练过程
|
IDE 开发工具 数据安全/隐私保护
【干货】Qt Creator快速下载、安装、使用教程
【干货】Qt Creator快速下载、安装、使用教程
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
366 0
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】 Python连接Azure Redis, 使用redis.ConnectionPool 出现 "ConnectionResetError: [Errno 104] Connection reset by peer"
【Azure Redis 缓存】 Python连接Azure Redis, 使用redis.ConnectionPool 出现 "ConnectionResetError: [Errno 104] Connection reset by peer"
233 0
|
计算机视觉 Python
OpenCV为图像扩边(填充)
OpenCV为图像扩边(填充)
194 0
|
开发框架 UED 开发者
QML(Qt Quick) 按钮设计指南
QML(Qt Quick) 按钮设计指南
1024 0