在openmv对图像提取roi,这里用到了提取像素位的函数。
在collections.h中定义了相关的结构体和功能函数声明。
// bitmap //
typedef struct bitmap
{
size_t size;
char *data;
}
__attribute__((aligned(8)))bitmap_t;
void bitmap_alloc(bitmap_t *ptr, size_t size);
void bitmap_free(bitmap_t *ptr);
void bitmap_clear(bitmap_t *ptr);
void bitmap_bit_set(bitmap_t *ptr, size_t index);
bool bitmap_bit_get(bitmap_t *ptr, size_t index);
- void bitmap_alloc(bitmap_t *ptr, size_t size);
为bitmap申请内存单元。如何通过bit数来申请内存单元?
#define CHAR_BITS (sizeof(char) * 8) //计算一个字节所需要的的bit数
#define CHAR_MASK (CHAR_BITS - 1) //
#define CHAR_SHIFT IM_LOG2(CHAR_MASK) //求解log2 计算偏移量。
// bitmap //
void bitmap_alloc(bitmap_t *ptr, size_t size)
{
ptr->size = size;
ptr->data = (char *) fb_alloc0(((size + CHAR_MASK) >> CHAR_SHIFT) * sizeof(char));
}