zoukankan      html  css  js  c++  java
  • IplImage QImage Mat 格式互转

    //QImage->IplImage *
    static IplImage *ConvertToIplImage(const QImage &img)
    {
        int nChannel=0;
        if(img.format()==QImage::Format_RGB888)nChannel=3;
        if(img.format()==QImage::Format_ARGB32)nChannel=4;
        if( nChannel==0 )return false;
     
        IplImage *iplImg=cvCreateImageHeader( cvSize(img.width(), img.height()),8,nChannel );
        iplImg->imageData=(char*)img.bits();
     
        if(nChannel==3)
            cvConvertImage(iplImg,iplImg,CV_CVTIMG_SWAP_RB);
     
        return iplImg;
    }
     
    //Mat->QImage
    static QImage ConvertToQImage(cv::Mat &mat)
    {
        QImage img;
        int nChannel=mat.channels();
        if(nChannel==3)
        {
            cv::cvtColor(mat,mat,CV_BGR2RGB);
            img = QImage((const unsigned char*)mat.data,mat.cols,mat.rows,QImage::Format_RGB888);
        }
        else if(nChannel==4||nChannel==1)
        {
            img = QImage((const unsigned char*)mat.data,mat.cols,mat.rows,QImage::Format_ARGB32);
        }
     
        return img;
    }
     
    //IplImage *->QImage 
    static QImage ConvertToQImage(IplImage *iplImg)
    {
        QImage img;
        int nChannel=iplImg->nChannels;
        if(nChannel==3)
        {
            cvConvertImage(iplImg,iplImg,CV_CVTIMG_SWAP_RB);
            img = QImage((const unsigned char*)iplImg->imageData,iplImg->width,iplImg->height,QImage::Format_RGB888);
        }
        else if(nChannel==4||nChannel==1)
        {
            img = QImage((const unsigned char*)iplImg->imageData,iplImg->width,iplImg->height,QImage::Format_ARGB32);
        }
     
        return img;
    }
  • 相关阅读:
    linux 还能这么来
    JS还能这么来
    FFmpeg常用命令
    golang gin框架默认打印日志写入到文件 (http请求打印写入到文件而不是控制台)
    社保、新农合介绍以及报销比例介绍
    Lightroom 快捷键集合
    golang map基础使用-初始化
    SOLID
    java dump
    Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
  • 原文地址:https://www.cnblogs.com/emouse/p/2988807.html
Copyright © 2011-2022 走看看