【OpenCv】QImage 与 cv::Mat 之间的相互转换

转换代码:

cv::Mat QImageToMat(QImage image)  
{  
    cv::Mat mat;  
    switch (image.format())  
    {  
    case QImage::Format_ARGB32:  
    case QImage::Format_RGB32:  
    case QImage::Format_ARGB32_Premultiplied:  
        mat = cv::Mat(image.height(), image.width(), CV_8UC4, (void*)image.constBits(), image.bytesPerLine());  
        break;  
    case QImage::Format_RGB888:  
        mat = cv::Mat(image.height(), image.width(), CV_8UC3, (void*)image.constBits(), image.bytesPerLine());  
        cv::cvtColor(mat, mat, CV_BGR2RGB);  
        break;  
    case QImage::Format_Indexed8:  
        mat = cv::Mat(image.height(), image.width(), CV_8UC1, (void*)image.constBits(), image.bytesPerLine());  
        break;  
    }  
    return mat;  
}  
QImage MatToQImage(const cv::Mat& mat)    
{    
    // 8-bits unsigned, NO. OF CHANNELS = 1    
    if(mat.type() == CV_8UC1)    
    {    
        QImage image(mat.cols, mat.rows, QImage::Format_Indexed8);    
        // Set the color table (used to translate colour indexes to qRgb values)    
        image.setColorCount(256);    
        for(int i = 0; i < 256; i++)    
        {    
            image.setColor(i, qRgb(i, i, i));    
        }    
        // Copy input Mat    
        uchar *pSrc = mat.data;    
        for(int row = 0; row 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值