使用C语言编写二值化判断图片中的人数的代码
时间: 2023-06-19 19:08:29 浏览: 97
以下是使用C语言编写的简单二值化判断图片中的人数的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <stdint.h>
#define THRESHOLD 128
// 图片尺寸
#define WIDTH 640
#define HEIGHT 480
// 二值化处理函数
void binarize(uint8_t *image, uint8_t threshold) {
for (int i = 0; i < WIDTH * HEIGHT; i++) {
if (image[i] > threshold) {
image[i] = 255;
} else {
image[i] = 0;
}
}
}
int main() {
// 读取图片数据
FILE *fp = fopen("input.bmp", "rb");
if (!fp) {
printf("Failed to open input file!\n");
return 1;
}
uint8_t header[54];
fread(header, sizeof(uint8_t), 54, fp);
uint8_t image[WIDTH * HEIGHT];
fread(image, sizeof(uint8_t), WIDTH * HEIGHT, fp);
fclose(fp);
// 二值化处理
binarize(image, THRESHOLD);
// 统计人数
int count = 0;
int flag = 0;
for (int i = 0; i < HEIGHT - 1; i++) {
for (int j = 0; j < WIDTH - 1; j++) {
int index = i * WIDTH + j;
if (image[index] == 0 && image[index + 1] == 255) {
if (flag == 0) {
count++;
flag = 1;
}
} else if (image[index] == 255 && image[index + 1] == 0) {
flag = 0;
}
}
}
// 输出结果
printf("Number of people: %d\n", count);
return 0;
}
```
该代码首先从文件中读取输入图片数据,并进行简单的二值化处理。然后通过遍历二值化后的图片数据,统计其中连续的黑色像素点的数量,从而得出人数的估计。
阅读全文