C中关于图像处理的问题

xuzhitao1987 2010-08-07 08:41:32
北航谢凤英老师《VC++ 数字图像处理》中计算每行像素所占字节数时,在公式中为何加3啊?公式如下:

每行像素所占字节数,必须扩展成4的倍数
int lineByte=(m_imgWidth*nBitCount/8+3)/4*4;
...全文
104 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zaqswx 2011-05-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zmshy2128 的回复:]

楼上正解,

每行像素所占字节数必须是4的倍数,BMP图像格式规定的
[/Quote]


知道是格式规定的,但是我还是想清楚为什么。。求交流指导~
xuzhitao1987 2010-08-08
  • 打赏
  • 举报
回复
谢了2楼的。
zmshy2128 2010-08-07
  • 打赏
  • 举报
回复
楼上正解,

每行像素所占字节数必须是4的倍数,BMP图像格式规定的
yngaocn 2010-08-07
  • 打赏
  • 举报
回复
是为了补齐4的倍数。
int lineByte=(m_imgWidth*nBitCount/8+3)/4*4;

因为要补充成4的倍数,原字节数加上3个字节后,必然会多出字节,再被4整除,再乘以4,这样就把加3后多出来的字节去掉了,补充了不足4被长度的空缺。

设原长度为x,
x%4的可能值有:0,1,2,3

试想,如果不是加3,而是加4,则有可能多算4个字节,
加2,则少算一个字节。
gamemagic 2010-08-07
  • 打赏
  • 举报
回复
一个像素占3字节,即:红 绿 蓝 分量

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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