一个小问题::

slhkzyl 2010-05-02 09:10:03
for(i=0;i<dwHeight;i++)
for(j=0;j<dwWidth;j++)
{
n=(int)*(m_pDIBData+i*w+j);//3
hist[n]++;
}

上面这段程序是获取位图灰度分布。其中n,hist[300]都是为int
编译在3那行有:rror C2297: '*' : illegal, right operand has type 'long [300]' 这个错误,
不能理解这是什么错误?
...全文
158 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
slhkzyl 2010-05-04
  • 打赏
  • 举报
回复
谢谢大家了,··
slhkzyl 2010-05-04
  • 打赏
  • 举报
回复
问题解决了,是我自己犯得错误,变量弄错了,
yaozhiyong110 2010-05-03
  • 打赏
  • 举报
回复
n=(int)(*(m_pDIBData+i*w+j)); 估计是优先级的关系
括号最后加全了
slhkzyl 2010-05-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hilevel 的回复:]

n=(int)*(m_pDIBData+i*w+j)
我想这行代码的本意是计算m_pDIBData+i*w+j的值,再转换成int型吧
那就直接把int后面那个‘*’去掉就行啦
[/Quote]
不加*,那个就表示其地址值而不是像素值,貌似
slhkzyl 2010-05-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ronghaoyue 的回复:]

n=(int)*(m_pDIBData+i*w+j);
这句没看懂,要干什么呢。抄程序抄错了?
n=(int)(*m_pDIBData+i*w+j);
这样可能更靠谱。
多贴些代码才能看出来。
[/Quote]
应该没错,*(m_pDIBData+i*w+j)这个就是第i行j列的像素值,这个是byte类型,所以我把他强制类型转换
slhkzyl 2010-05-02
  • 打赏
  • 举报
回复
n=(int)*(m_pDIBData+i*w+j);//3
hist[n]++;
我解释下哦:
我不是要取得一幅位图里每个灰度占的数目么
所以hist[n]表示灰度n的个数;m_pDIBData是位图数据的首地址,
我通过循环扫描每个像素,来统计
ronghaoyue 2010-05-02
  • 打赏
  • 举报
回复
n=(int)*(m_pDIBData+i*w+j);
这句没看懂,要干什么呢。抄程序抄错了?
n=(int)(*m_pDIBData+i*w+j);
这样可能更靠谱。
多贴些代码才能看出来。
hilevel 2010-05-02
  • 打赏
  • 举报
回复
n=(int)*(m_pDIBData+i*w+j)
我想这行代码的本意是计算m_pDIBData+i*w+j的值,再转换成int型吧
那就直接把int后面那个‘*’去掉就行啦
slhkzyl 2010-05-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yincheng01 的回复:]

http://blog.csdn.net/xcntime/archive/2009/04/06/4051386.aspx
[/Quote]
不懂啊··,稍微看了下貌似没什么联系嘛
slhkzyl 2010-05-02
  • 打赏
  • 举报
回复
有人米?????、自己顶一个
尹成 2010-05-02
  • 打赏
  • 举报
回复
http://blog.csdn.net/xcntime/archive/2009/04/06/4051386.aspx

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧