用VC编一个程序进行图像处理,获取在一定行范围内指定列的白像素点的个数之和,比如从5行到第10行的第1列的白像素点的个数之和。我现在处理的是2213*151的一幅图像,因为2213不能被4整除,首先转化为2216,然后读取指定行列的像素。但是我打开系统自带的画图对照我程序读取的结果,总是感觉不对。是不是因为我读取的时候是按每行2216列,而画图显示出来的是按每行2213列的缘故呢?

解决方案 »

  1.   

    LZ的关键点没错,但把边界对齐的原理用错了地方!BMP中四字节对齐不是指一行的像素的数目对齐为4的倍数!!!!!(你的处理犯了这个错误)!!而是指一行像素的颜色数据所占据的内存为4的倍数。比如你一行有2213个像素,如果是24(=3bytes)位图像的话,那么该行的长度应该为:(2213 * 3 + 4 - 1) / 4 * 4 = 6640字节才对。