| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 945 人关注过本帖
标题:图像叠加时指针越界不知为何
只看楼主 加入收藏
cjbobbn
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-8-27
收藏
 问题点数:0 回复次数:0 
图像叠加时指针越界不知为何
我在做一个图像平滑程序,也就是采集用户指定的iFrameNum帧图像后,把这些图像对应点像素值相加再平均,原理很简单,但是执行出来却出现了“Unhandled exception in test.EXE:0xC0000005:Access Violation ”的错误,网上有人说是指针越界,我觉得也是。但就是不知如何修改,问题估计出在倒数第二个for循环内,由于要进行相加操作,lpframe指向的缓存是8位的,所以将lpbuf所指向的存放像素和的内容设置成16位的,所以该for循环有个强制类型转换“(WORD)”。(注:图像大小为768*576,3色)调试时,iFrameNum 设置成1,j能循环到107320,报错;iFrameNum 设置成2~7,j能循环到14224,报错;iFrameNum 设置成8及以上,j不能循环,报错

望各位能花几分钟时间看一下小弟的问题,谢谢

int iFrameNum = dlg.m_camerainput;//获取用户指定的平均帧数
long size=10*(1 < <20);
LPWORD lpbuf; //双字节内存指针
lpbuf=(LPWORD)GlobalAlloc(GPTR,size);//分配内存
LPBYTE lpframe[20];//创建20帧缓存帧指针
okCaptureTo(hBoard,BUFFER,0,iFrameNum);//采集iFrameNum帧
for(int i=0;i <iFrameNum;i++)
{
     lpframe[i]=(LPBYTE)okGetTargetInfo(hBoard,BUFFER,i,wid,ht,NULL);//取第iFrameNum帧首地址
}
for(int j=0;j <768*576*3;j++)//iFrameNum帧对应像素相加平均
{
     *(lpbuf+j)=(WORD)*(lpframe[0]+j);
     for(int i=1;i <iFrameNum;i++)
           *(lpbuf+j)+=(WORD)*(lpframe[i]+j);
}
for(j=0;j <768*576*3;j++)
{
     *(lpbuf+j)/=iFrameNum;
     *(lpbuf+j)=(BYTE)*(lpbuf+j);
}
搜索更多相关主题的帖子: 指针 图像 越界 叠加 
2008-08-27 16:15
快速回复:图像叠加时指针越界不知为何
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038470 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved