图像处理中MFC中unhandle exception 0xc0000005:access violation出错原因

本文章是针对VC++处理图像的相关问题

本人建了一个多文档的MFC,自己编写了一个消息响应函数,当点击菜单的一个自添加的选项后,进行一些计算并显示结果。

//其中自己定义了一个CImg类,里面定义了bmp图像的相关操作,比如读取一幅位图,获得相应位置的RGB像素值、灰度值等

//CImg m_bmp;

//以下为逐步遍历获得图像的每个位置的灰度值

(这是我修改后的正确程序,注意我标红色的部分)

int nheight=m_bmp.GetHeight();
 int nwidth=m_bmp.GetWidthPixel();
 if(m_bmp.IsValidate())
 {
   for(int i=0;i<nheight;i++)
   { for(int j=0;j<nwidth;j++)
    {
     if(m_bmp.GetGray(j,i)...//刚开始的代码这一句是if(m_bmp.GetGray(i,j)....

 

编译的时候没有问题当点击选项后,过一会就自动终止了程序的运行。消息响应计算函数的部分代码如下:

后来编译发现弹出这个错误unhandle exception 0xc0000005 in XXX.exe:access violation

在网上搜了一下说是指针溢出或指向了非定义的非法空间,我回头看了自己的整个程序,特别是指针分配空间那一部分,再加上搜集一些关于位图操作的资料,

发现确实是因为指针指向有问题。

 

在这里对于广大初学VC++图像处理的同学提醒一下:

对于自定义的位图类中定义的一些像素存取的方法,比如GetGray,GetPixel,SetPixel等要求的参数x,y分别为像素的横纵坐标,而横坐标对应图像的列索引j,纵坐标对应图像的行索引i,因此在逐行遍历图像的程序段中调用方式应为SetPixel(j,,...).

所以上面的代码i,j的顺序要注意

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值