0

如果我想在 C 中创建和处理二进制图像,应该为图像像素设置什么数据类型?由于二进制图像像素只有两个值,我假设每个像素只需要一个位,因此我必须使用逐位 C 函数,这是在 C 中进行二进制图像处理的正确(最有效)方法吗?

如果是这种情况,我该如何为图像分配空间?malloc如果我没记错的话,只会以字节为单位分配空间。

澄清一下:我有一个 32 位浮点图像(大小已知),我应用了一个阈值,并希望将阈值结果保存为二进制文件,以便我可以标记单独的组件。

4

1 回答 1

2

每个像素使用单个位是最节省内存但时间效率最低的,因为访问像素需要按位操作。如果你想这样做,你将不得不,即将malloc((numPixels + 7)/8)分配大小四舍五入到最接近的字节。

将图像存储为chars 可能会更好地平衡内存和空间考虑。例如,这是 OpenCV 中阈值图像的内部表示。

于 2013-08-12T23:41:57.137 回答