zoukankan      html  css  js  c++  java
  • 开源库CImg 数据格式存储之二(RGB 顺序)

    在上一篇博客中已经初步说明了GDI和CImg数据的存储格式感谢博友 Imageshop 评论说明

    CImg的说明文档中已有详细说明(详见上篇博客说明)

    CImg的数据格式确实是RRRGGGBBB顺序存储的已经毫无疑问,但是其参考手册中对其他GDI

    的数据格式说明是略有瑕疵,参考手册说其他GDI的数据格式是RGBRGBRGB,其实则不是经过验证

    bmp类型的数据格式应该是BGRBGRBGR 下面用code验证

    说明:使用MFC 同时用CImage和CImg加载同一幅图片

    void ImageIO::loadImage(const BiCImg & image, T*& pImagePlane,int& width,int& height,int& nchannels)
    {
        // get the image information
        
        width=image.width();
        height=image.height();
        nchannels=3;
        int rgb_leng=width*height;
        pImagePlane=new T[width*height*nchannels];
    
        // check whether the type is float point
        bool IsFloat=false;
        if(typeid(T)==typeid(double) || typeid(T)==typeid(float) || typeid(T)==typeid(long double))
            IsFloat=true;
        
        const unsigned char* plinebuffer;
        plinebuffer=image.data(0,0);
        for(int i=0;i<height;i++)
        {        
            //plinebuffer=image.scanLine(i);
            for(int j=0;j<width;j++)
            {
                            
    pImagePlane[(i*width+j)*3]=plinebuffer[i*width+j+2*rgb_leng];//RGB b
                    pImagePlane[(i*width+j)*3+1]=plinebuffer[i*width+j+rgb_leng];//RGB g
                    pImagePlane[(i*width+j)*3+2]=plinebuffer[i*width+j];//RGB r
                
            }
        }
    }

    上述为正确的顺序,若改为如下代码

                    pImagePlane[(i*width+j)*3]=plinebuffer[i*width+j];//RGB r 

                    pImagePlane[(i*width+j)*3+1]=plinebuffer[i*width+j+rgb_leng];//RGB g

               pImagePlane[(i*width+j)*3+2]=plinebuffer[i*width+j+2*rgb_leng];//RGB b

    实验效果如下图

    右图为原始图片,明显左图的蓝色部分取代了原始图片的红色应该是BGR缺写成了RGB 

  • 相关阅读:
    封装格式---FLV---文件格式解析
    高并发服务器---基础----IO模式和IO多路复用
    nginx---如何实现轻量级和高并发
    nginx---基础介绍
    H.264---SPS和PPS
    机器学习---算法---朴素贝叶斯
    机器学习---算法---Adaboost
    流媒体传输协议---STUN---基础
    H.264---指数哥伦布编码
    【linux】vim编辑器快捷键使用方法
  • 原文地址:https://www.cnblogs.com/sheshouyanhun/p/3270415.html
Copyright © 2011-2022 走看看