You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
714 B
40 lines
714 B
6 years ago
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
|
||
|
int main(int argc, char *argv[]) {
|
||
|
const char *filename;
|
||
|
FILE *f;
|
||
|
unsigned char buf[256], c, *p;
|
||
|
unsigned int i, mean;
|
||
|
int bit;
|
||
|
|
||
|
if (argc != 2) {
|
||
|
fprintf(stderr, "Usage: %s img.gray\n", argv[0]);
|
||
|
return -1;
|
||
|
}
|
||
|
filename = argv[1];
|
||
|
f = fopen(filename, "rb");
|
||
|
if(!f) {
|
||
|
perror(filename);
|
||
|
return -1;
|
||
|
}
|
||
|
if (fread(buf, sizeof buf, 1, f) != 1) {
|
||
|
perror(filename);
|
||
|
fclose(f);
|
||
|
return -1;
|
||
|
}
|
||
|
fclose(f);
|
||
|
mean = 0;
|
||
|
for (i = 0; i < sizeof buf; i++)
|
||
|
mean += buf[i];
|
||
|
mean /= sizeof buf;
|
||
|
p = buf;
|
||
|
for (i = 0; i < sizeof buf / 4; i++) {
|
||
|
c = 0;
|
||
|
for (bit = 3; bit >= 0; bit--)
|
||
|
c |= (*p++ > mean) << bit;
|
||
|
putchar("0123456789abcdef"[c]);
|
||
|
}
|
||
|
return 0;
|
||
|
}
|