zoukankan      html  css  js  c++  java
  • Mat转CImage

    uchar *pImg=(uchar *)CI.GetBits();//得到CImage数据区地址

    ps=img.ptr<uchar>(i);

    void MatToCImage( Mat &mat, CImage &cImage)
    {
        //create new CImage
        int width    = mat.cols;
        int height   = mat.rows;
        int channels = mat.channels();
     
        cImage.Destroy(); //clear
        cImage.Create(width, height,8*channels ); //默认图像像素单通道占用1个字节
     
        //copy values
        uchar* ps;
        uchar* pimg = (uchar*)cImage.GetBits(); //A pointer to the bitmap buffer
        int step = cImage.GetPitch();
     
        for (int i = 0; i < height; ++i)
        {
            ps = (mat.ptr<uchar>(i));
            for ( int j = 0; j < width; ++j )
            {
                if ( channels == 1 ) //gray
                {
                    *(pimg + i*step + j) = ps[j];
                }
                else if ( channels == 3 ) //color
                {
                    for (int k = 0 ; k < 3; ++k )
                    {
                        *(pimg + i*step + j*3 + k ) = ps[j*3 + k];
                    }            
                }
            }    
        }
    }
                //cImage数据存到pbImage,后再转换为源灰度图pbSrc
                iPitch=cImage.GetPitch();
                iBytePerPixel=(cImage.GetBPP()+7)/8;
                if(iBytePerPixel==3)
                {
                    for(y=0;y<iHeight;y++)
                    {   //load的图像数据放到pbImage
                        pbImage=(PBYTE)(PBYTE(cImage.GetBits())+iPitch*y);//得到的是图像初始像素地址
                        for(x=0;x<iWidth;x++)
                        {
                            //pbImage转换为灰度图pbSrc
                            pbSrc[y*iWidth+x]=(pbImage[3*x]*0.15+pbImage[3*x+1]*0.55+pbImage[3*x+2]*0.3);
                        }
                    }
                }
                cImage.Destroy();

    【转载自】

    OpenCV中Mat对象转CImage - 挨踢生涯 - CSDN博客 https://blog.csdn.net/xianglifighter/article/details/38319903

  • 相关阅读:
    20170602
    使用布局规划页面
    商品的删除
    修改页面的 修改图片
    商品修改
    引入行高亮显示
    添加一个时间插件: 1.把插件放到 public目录 下 datetimepicker
    排序,搜索 代码
    搜索
    翻页代码,商品列表页;
  • 原文地址:https://www.cnblogs.com/wxl845235800/p/11237061.html
Copyright © 2011-2022 走看看