微调 一些改动

  1. 初始化值:
    View中指针赋
    yBmp.GetBmp()=NULL;
    gray = NULL;
    2.需要修改MyBitmap类中的成员函数的返回形式:nsigned char *&GetBmp();
    3.修改了图片的显示方式:以对话框形式出现,因此增加一个图片显示对话框类
    4.增加创建窗口函数:
voidCMyTestView::CreateDlg(CString name,BYTE *bmp,int type)
{
    MyProcess myProcess;
    BmpDlg*bmpdlg =newBmpDlg();
    bmpdlg->Init(NULL,myBmp.GetBmpWidth(),myBmp.GetHeight());
    bmpdlg->Create(IDD_HISTOGRAM,this);
    name+=myBmp.GetBmpName();
    bmpdlg->SetWindowText(name);
    if(type==0) myProcess.ShowArrayToDevice(&bmpdlg->dcMemory,0,0,bmp,myBmp.GetWidth(),myBmp.GetHeight(),0);
    elseif(type==1) myProcess.ShowArrayToDevice(&bmpdlg->dcMemory,0,0,bmp,myBmp.GetBmpWidth(),myBmp.GetHeight());
    bmpdlg->ShowWindow(SW_SHOW);
}

5.增加变量控制BmpORGray是对彩色图像处理还是对灰度图像处理:
例:

if(BmpORGray==1)
{
        BYTE *temp_gray =new BYTE [myBmp.GetBmpWidth()*myBmp.GetHeight()];
        memcpy(temp_gray,gray,myBmp.GetBmpWidth()*myBmp.GetHeight()*sizeof(BYTE));
        myProcess.PointEqua(temp_gray,myBmp.GetBmpWidth(),myBmp.GetHeight(),1);
        reateDlg("灰度图 动态压缩",temp_gray,1);
}
if(BmpORGray==0)
{
        BYTE *temp_bmp =new BYTE [myBmp.GetWidth()*myBmp.GetHeight()];
        memcpy(temp_bmp,myBmp.GetBmp(),myBmp.GetWidth()*myBmp.GetHeight()*sizeof(BYTE));
        myProcess.PointEqua(myBmp.GetBmp(),myBmp.GetWidth(),myBmp.GetHeight());
        reateDlg("彩色图 动态压缩",temp_bmp);
}

6.修改MyProcess的显示图像函数,增加重载函数,用于显示处理后的彩色图像:

void MyProcess::ShowArrayToDevice(CDC *dc,int x,int y,unsignedchar*array,LONG width,LONG height,int type)
{
    for(int j =0; j < height; j++)
    for(int i =0; i < width; i++)
    {
        if(type==1)dc->SetPixel(x + i, y + height - j, RGB(array[j*width+i],array[j*width+i],array[j*width+i]));
        elseif(type==0)
        {
        //  b = array[j*width + i];
        //  g = array[j*width + i + 1];
        //  r = array[j*width + i + 2];
        dc->SetPixel(x+i/3,y+height-j,RGB(array[j*width+i+2],array[j*width+i+1],array[j*width+i]));
            i+=2;
        }
    }
}

7.增加判断彩色图像和灰度图像是否为空:

if(gray==NULL){MessageBox("请先转换成灰度图像!!!");return;}
if(myBmp.GetBmp()==NULL)
{   
    MessageBox("请先打开一张BMP格式位图!!!");
    return;
}

8.修改直方图类,增加彩色图像直方图画法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值