对bmp文件进行图像分割,应该怎么办?

c语言对bmp位图文件进行分割,横坐标方向实际250mm,分成6份,约41.6,纵坐标250-500,按照41.6整数倍分割,如果多出一部分不足41.6可以并入上一部分,也可以再次分割作下一部分。

https://www.docin.com/p-1033926574.html

  1. 首先,图像里不说mm这种单位,说的是pixel,也就是像素单位。
  2. 其次,像素单位是一个一个的,因此不存在你需要的41.6这么一说,你只能整数分割。 除非你把图片插值变大,插值成为10倍,才存在416的分割。
  3. BMP数据是以一个R一个G一个B像素数据为单位,重复这样的单位储存的,一次分割十分容易。只需要把你想要的像素块取出来就行。

假如你说的mm单位就是一个pixel的话,那么你的问题变为,250x250大小的图片,分割为6x6份。

uint8_t* data = new uint8_t[250 * 250 * 3];    // 每个像素有RGB三个数据
uint8_t  output[6 * 6][41* 41 *3 ];   //用于储存你分割的数据

//在这,用你的图片数据填充data;

for( int row = 0; row < 250; row++) {
    for(int col = 0; col < 250  * 3; col +=3) {
                output[row / 41 * col / 41][(row % 41) * 41 + (col % 41)] = data [row * 250 + col];
                output[row / 41 * col / 41][(row % 41) * 41 + (col % 41) +1] = data [row * 250 + col +1];
                output[row / 41 * col / 41][(row % 41) * 41 + (col % 41) +2] = data [row * 250 + col +2];
    }
}

//将output逐个保存为BMP就行

直接手敲的代码,这里只提供思路,若有编译或者逻辑缺陷,自己修改