+ rgb decomp
This commit is contained in:
parent
8c30ea844f
commit
d6877097d0
@ -3,3 +3,14 @@
|
|||||||
|
|
||||||
But du jeu : traiter la séquence d'image complète d'une vidéo live,
|
But du jeu : traiter la séquence d'image complète d'une vidéo live,
|
||||||
sans devoir attendre 107 ans que le job soit fait.
|
sans devoir attendre 107 ans que le job soit fait.
|
||||||
|
|
||||||
|
## Current status
|
||||||
|
|
||||||
|
- [rgb_decomp.c](rgb_decomp.c)
|
||||||
|
|
||||||
|
## Film at 11.
|
||||||
|
|
||||||
|
See you soon.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
87
Contribs/rgb_decomp.c
Normal file
87
Contribs/rgb_decomp.c
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
|
||||||
|
#include <tthimage.h>
|
||||||
|
|
||||||
|
/* -------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
/* -------------------------------------------------------- */
|
||||||
|
|
||||||
|
int rgb_process_by_filename(char *inf, char *outf)
|
||||||
|
{
|
||||||
|
Image_Desc *src, *dst;
|
||||||
|
int foo;
|
||||||
|
int x, y, larg, offs;
|
||||||
|
int r, g, b;
|
||||||
|
|
||||||
|
if ( (src=Image_TGA_alloc_load(inf)) == NULL )
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s: err load %s\n", __func__, inf);
|
||||||
|
exit(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("source '%s' %dx%d\n", inf, src->width, src->height);
|
||||||
|
|
||||||
|
if ( (dst=Image_clone(src, 0)) == NULL )
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s: no mem for image cloning\n", __func__);
|
||||||
|
exit(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
Image_clear(dst, 160, 60, 60);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* calcul de la zone à traiter
|
||||||
|
*/
|
||||||
|
larg = src->width / 3;
|
||||||
|
offs = (src->width - larg) / 2;
|
||||||
|
printf("largeur %d offset %d\n", larg, offs);
|
||||||
|
|
||||||
|
|
||||||
|
for (y=0; y<src->height; y++) {
|
||||||
|
for (x=0; x<larg; x++) {
|
||||||
|
|
||||||
|
Image_getRGB(src, x+offs, y, &r, &g, &b);
|
||||||
|
|
||||||
|
Image_plotRGB(dst, x, y, r, r, r);
|
||||||
|
Image_plotRGB(dst, x+offs, y, g, g, g);
|
||||||
|
Image_plotRGB(dst, x+(2*offs), y, b, b, b);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Image_egalise_cos010(dst, dst, 0);
|
||||||
|
|
||||||
|
foo = Image_TGA_save(outf, dst, 0);
|
||||||
|
if (foo) {
|
||||||
|
fprintf(stderr, "%s: error %d saving %s\n", __func__, foo, outf);
|
||||||
|
exit(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------- */
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int foo;
|
||||||
|
|
||||||
|
if (3 != argc)
|
||||||
|
{
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
foo = rgb_process_by_filename(argv[1], argv[2]);
|
||||||
|
if (foo) {
|
||||||
|
fprintf(stderr, "process by filename -> %d\n", foo);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------- */
|
Loading…
Reference in New Issue
Block a user