parent
8f65f414dc
commit
d1e9999e1c
@ -0,0 +1,56 @@ |
||||
/*
|
||||
* fimg-2gray.c |
||||
*/ |
||||
|
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
#include <unistd.h> |
||||
#include "string.h" |
||||
|
||||
#include "../floatimg.h" |
||||
|
||||
extern int verbosity; /* must be declared around main() */ |
||||
|
||||
/* --------------------------------------------------------------------- */ |
||||
/*
|
||||
* floating img MUST be allocated. |
||||
*/ |
||||
int fimg_mk_gray_from(FloatImg *src, FloatImg*dst, int k) |
||||
{ |
||||
float kr, kg, kb, kdiv; |
||||
int nbb, foo; |
||||
|
||||
kr = kg = kb = 1.0; /* canonic random values */ |
||||
kdiv = kr + kg + kb; |
||||
|
||||
/* we must check the validity of our parameters */ |
||||
if (FIMG_TYPE_RGB != src->type) { |
||||
fprintf(stderr, "%s : bad src type %d on %p\n", __func__,
|
||||
src->type, src); |
||||
return -8; |
||||
} |
||||
|
||||
if (FIMG_TYPE_GRAY != dst->type) { |
||||
fprintf(stderr, "%s : bad dst type %d on %p\n", __func__,
|
||||
dst->type, dst); |
||||
return -9; |
||||
} |
||||
|
||||
/* entering the main processing loop */ |
||||
nbb = src->width * src->height; |
||||
|
||||
for (foo=0; foo<nbb; foo++) { |
||||
|
||||
dst->R[foo] = ( (src->R[foo] * kr) + |
||||
(src->G[foo] * kg) + |
||||
(src->B[foo] * kb) ) / |
||||
kdiv; |
||||
} |
||||
|
||||
return -1; |
||||
} |
||||
/* --------------------------------------------------------------------- */ |
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in new issue