Compare commits

..

No commits in common. "d23a35849a9fd02366c292b0a84d11aeae363219" and "2c1687f82b4d74e27315670ed39687a382460f96" have entirely different histories.

9 changed files with 22 additions and 70 deletions

View File

@ -3,7 +3,7 @@
Avec toutes ces fonctions disponibles et `grabvidseq`, nous
savons faire des images **floues**. L'étape suivante, les plus
pervers d'entre vous le savent déja, est celle de la création
de **films flous** dans le domaine spatio-temporel.
de **films flous** dans le domaine spacio-temporel.
À l'heure actuelle, il y a plusieurs programmes distincts. Le premier
(fonderie) fait une moyenne mobile sur N images consécutives,

View File

@ -21,38 +21,6 @@
*/
extern int verbosity;
/* -------------------------------------------------------------- */
/*
* nouveau Sun Jul 16 07:37:22 UTC 2023
*/
int poke_sup_rb_g(FloatImg *src, FloatImg *dst)
{
int idx, nbpix, foo;
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p %p )\n", __func__, src, dst);
#endif
if ( (foo=fimg_images_not_compatible(src, dst)) )
{
fprintf(stderr, "%s: no compat %d\n", __func__, foo);
return foo;
}
nbpix = src->width * src->height;
fprintf(stderr, "%s work on %d pixels\n", __func__, nbpix);
for (idx=0; idx<nbpix; idx++) {
dst->R[idx] = src->R[idx];
dst->B[idx] = src->B[idx];
if (dst->R[idx] > dst->B[idx])
dst->G[idx] = dst->R[idx];
else
dst->G[idx] = dst->B[idx];
}
return 0;
}
/* -------------------------------------------------------------- */
/* nouveau 14 mai 2022 rue Ernest Renan */

View File

@ -7,7 +7,6 @@ int graylevel2popcolors(FloatImg *src, FloatImg *dst, int k);
int incrustation_vignette(FloatImg *src, FloatImg *dst, int k);
int poke_sup_rb_g(FloatImg *src, FloatImg *dst);
int trinitron(FloatImg *pimg, int notused);

View File

@ -40,7 +40,7 @@ double debut, fin;
foo = fimg_create_from_dump(fIname, &image);
if (foo) {
fprintf(stderr, "%s: err %d create from dump\n", __func__, foo);
fprintf(stderr, "err %d create image\n", foo);
exit(1);
}
@ -73,6 +73,8 @@ return 0;
foo = essayer_single("capture/???42.fimg", "/tmp/x8/", STK);
fprintf(stderr, "essayer single -> %d\n", foo);
*/
int essayer_single(char *globpattern, char *destdir, int chain)
{
@ -159,14 +161,14 @@ puts("\t-s\tdo single test");
exit(0);
}
/* ----------------------------------------------------------- */
int experiment(char *fname)
int experiment(void)
{
int foo;
FloatImg image, dest;
fprintf(stderr, "----- EXPERIMENT on '%s' -----\n", fname);
fprintf(stderr, "--------- EXPERIMENT ------------\n");
foo = fimg_create_from_dump(fname, &image);
foo = fimg_create_from_dump("mire.fimg", &image);
if (foo) {
fprintf(stderr, "%s: err %d on create_from_dump\n",
__func__, foo);
@ -175,8 +177,8 @@ if (foo) {
foo = fimg_clone(&image, &dest, 0);
foo = poke_sup_rb_g(&image, &dest);
fprintf(stderr, "poke sup rb g --> %d\n", foo);
foo = graylevel2popcolors(&image, &dest, 0);
fprintf(stderr, "POP COLOR- -> %d\n", foo);
fimg_export_picture(&dest, "foo.png", 0);
@ -228,7 +230,7 @@ if (foo) {
}
if (do_xper) {
experiment(infile);
experiment();
return 0;
}
if (do_single) {

View File

@ -53,8 +53,6 @@
\section*{Une image flottante ?}
\textsl{Back in a far past part of history.}
\textsl{Mais de quoi parle-t-on exactement ?}
% XXX XXX XXX\vspace{1em}
@ -81,12 +79,7 @@ IRC de \textsl{libera.chat}.
\textbf{Attention !} ce document commence par une bonne rafale
de technique parfois \textsl{hardue}\footnote{hard + ardue = private
joke Usenet}, avec des pointeurs dedans, mais vous êtes déja
au courant.
Le pointeur, c'est bien, c'est comme le doigt sur les écrans
de zombiephones, ça sert juste à dire «~C'est là !~», c'est
donc gravement utile, mais parfois, le doigt glisse.
Et là, tout peut arriver.
joke Usenet}, avec des pointeurs dedans.
Vous avez parfaitement le droit de sauter directement à
la page \pageref{outils} pour quelque chose de plus concret.
@ -517,7 +510,7 @@ Si la valeur retournée est différente de 0, c'est que quelque
chose s'est probablement mal passé.
Certains messages sont parfois explicites. Mais parfois non.
Quand aux valeurs retournées en cas d'erreur, c'est le désordre
intégral\footnote{Un vrai désastre, même...}.
intégral.
% _________
@ -1403,7 +1396,7 @@ le premier pouvant salement brotcher une image, et le second capable de
mélanger harmonieusement deux images, la balance est équilibrée.
Il s'agit donc d'un petit programme écrit en Bash\index{bash}, un langage
dont la connaissance est, pour moi, indispensable à qui veut faire des
dont la connaissance est, pour moi, indispendable à qui veut faire des
images kitchies\index{kitchy}. Mais ne vous inquiétez pas, c'est en
fait assez simple à comprendre. Et comprendre, c'est apprendre.
@ -1632,12 +1625,10 @@ devez mettre ce bout de XML\index{XML} dans le fichier
\end{lstlisting}
C'est juste un hack rapide, qui ne fonctionne pas très bien avec
d'autres commande de IM, comme \texttt{identify}\index{identify},
qui a tendance à
d'autres commande de IM, comme identify, qui a tendance à
raconter un peu n'importe quoi, puisqu'elle se base sur le
résultat de la conversion.
Je compte donc sur le bouquin de \textsl{Brunus}\index{Brunus}
pour avancer\dots
Je compte donc sur le bouquin de \textsl{Brunus} pour avancer\dots
\subsection{Gimp}\index{Gimp}
@ -1671,7 +1662,7 @@ Bon courage pour toutes les explorer, voire même juste les comprendre.
Il y a d'autres logiciels pour lesquels écrire une fonction d'importation
serait bien~: \textsl{Geeqie}, un visualiseur d'image fort pratique, ou
\textsl{Krita} qui semble avoir les faveurs de
dessinateurs de talent.
dessinateurs de talent\footnote{Oui, David, c'est à toi que je pense.}.
Ce qui nous conduit à une question importante~: quels sont les logiciels
qui gèrent le chargement d'image par un système de
\textsl{plugin}\index{plugin},

11
essai.c
View File

@ -18,8 +18,6 @@ int verbosity;
void fait_un_dessin(FloatImg *dessin)
{
// fprintf(stderr, "je dessine dans %p\n", dessin);
fimg_draw_something(dessin);
}
@ -28,7 +26,6 @@ void help(void)
{
puts("Options :");
puts("\t-d WxH\timage size");
puts("\t-v\tincrease verbosity");
exit(0);
}
/* --------------------------------------------------------------------- */
@ -60,7 +57,7 @@ fimg_drand48(&fimgB, 100.0);
foo = fimg_dump_to_file(&fimgB, "B.fimg", 0);
fimg_timer_set(0);
#define NBP 5
#define NBP 500
for (foo=0; foo<NBP; foo++) {
if (verbosity) {
printf("%5d / %5d\n", foo, NBP);
@ -70,9 +67,9 @@ for (foo=0; foo<NBP; foo++) {
// fimg_mul(&fimgA, &fimgB, &fimgA);
}
tb = fimg_timer_get(0);
fprintf(stderr, "%s = %.2f seconds, %.2f s/p\n", __func__, tb, tb/(double)NBP);
foo = fimg_save_as_pnm(&fimgA, "out.pnm", 0);
foo = fimg_dump_to_file(&fimgA, "out.fimg", 0);
fprintf(stderr, "%s = %f seconds\n", __func__, tb);
foo = fimg_save_as_pnm(&fimgA, "drand48.pnm", 0);
foo = fimg_dump_to_file(&fimgA, "drand48.fimg", 0);
fimg_destroy(&fimgA);
fimg_destroy(&fimgB);

View File

@ -110,9 +110,6 @@ for (y=0; y<hd; y++) {
return 0;
}
/* --------------------------------------------------------------------- */
/*
* this function can be optimized with direct pixel copy
*/
int fimg_extractor(FloatImg *in, FloatImg *out, FimgArea51 *rect)
{
int xs, ys, xd, yd;

View File

@ -19,7 +19,7 @@ do
# only take the good spot
fimg=$(printf "%s/%05d.fimg" ${OUTD} ${idx})
${EXTR} -o ${fimg} ${TMPG} 800,600,560,240
${EXTR} -o ${fimg} ${TMPG} 800,600,560,240 ${fimg}
# display ${fimg} ; exit

View File

@ -18,9 +18,7 @@ int extractor(char *srcname, char *dstname, FimgArea51 *rect)
FloatImg src, dst;
int foo;
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %s %s %p )\n", __func__, srcname, dstname, rect);
#endif
if (verbosity) {
print_rectangle((char *)__func__, rect);