Qt QImage处理(灰度)

转载来自: http://www.cnblogs.com/Romi/archive/2012/12/03/2800039.html
参考代码,又在其他地方找了相关的知识点,才了解代码的含义,不一一赘述,侵删

    QImage *image = new QImage(":/1.jpg");
    QImage *grayImage = new QImage;

    unsigned char *data=image->bits(); 

    int width=image->width();//图像宽
    int height=image->height();//图像高

    int bytePerLine=(width*image->depth()+31)/8;//图像每行字节对齐   //@2

    unsigned char* graydata=new unsigned char[bytePerLine*height];//存储处理后的数据  

    //r,g,b的顺序是反的,所以在进行赋值的时候,是反过来的   @3
    unsigned char r,g,b;

//    for (int i=0;i<height;i++)
//    {
//        for (int j=0;j<width;j++)
//        {
//				//@4
//            r = *(data+2);
//            g = *(data+1);
//            b = *data;

                //设置灰度值     @5,rgb转换灰度值是存在固定的公式的
//            graydata[i*bytePerLine+j*3]  =(r*30+g*59+b*11)/100;
//            graydata[i*bytePerLine+j*3+1]=(r*30+g*59+b*11)/100;
//            graydata[i*bytePerLine+j*3+2]=(r*30+g*59+b*11)/100;

//            data+=4;
//        }
//    }
    for (int i=0;i<height;i++)
    {
        for (int j=0;j<width;j++)
        {
            r = *(data+2);
            g = *(data+1);
            b = *data;

            graydata[i*bytePerLine+j*3]  =r;
            graydata[i*bytePerLine+j*3+1]=g;
            graydata[i*bytePerLine+j*3+2]=b;

            data+=4;
        }
    }

    grayImage=new QImage(graydata,width,height,bytePerLine,QImage::Format_RGB888);
    QLabel *label = new QLabel();
    label->setPixmap(QPixmap::fromImage(*grayImage));
    label->show();

在网上找的代码,进行处理,直接对代码进行解释和处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值