Compare commits
	
		
			3 Commits
		
	
	
		
			2c1687f82b
			...
			d23a35849a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					d23a35849a | ||
| 
						 | 
					82ffe1c2cc | ||
| 
						 | 
					0a482a7316 | 
@ -3,7 +3,7 @@
 | 
				
			|||||||
Avec toutes ces fonctions disponibles et `grabvidseq`, nous
 | 
					Avec toutes ces fonctions disponibles et `grabvidseq`, nous
 | 
				
			||||||
savons faire des images **floues**. L'étape suivante, les plus
 | 
					savons faire des images **floues**. L'étape suivante, les plus
 | 
				
			||||||
pervers d'entre vous le savent déja, est celle de la création
 | 
					pervers d'entre vous le savent déja, est celle de la création
 | 
				
			||||||
de **films flous** dans le domaine spacio-temporel. 
 | 
					de **films flous** dans le domaine spatio-temporel. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
À l'heure actuelle, il y a plusieurs programmes distincts. Le premier
 | 
					À l'heure actuelle, il y a plusieurs programmes distincts. Le premier
 | 
				
			||||||
(fonderie) fait une moyenne mobile sur N images consécutives,
 | 
					(fonderie) fait une moyenne mobile sur N images consécutives,
 | 
				
			||||||
 | 
				
			|||||||
@ -21,6 +21,38 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
extern	int		verbosity;
 | 
					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 */
 | 
					/* nouveau 14 mai 2022 rue Ernest Renan */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -7,6 +7,7 @@ int graylevel2popcolors(FloatImg *src, FloatImg *dst, int k);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int incrustation_vignette(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);
 | 
					int trinitron(FloatImg *pimg, int notused);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										16
									
								
								Fonderie/t.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								Fonderie/t.c
									
									
									
									
									
								
							@ -40,7 +40,7 @@ double		debut, fin;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
foo = fimg_create_from_dump(fIname, &image);
 | 
					foo = fimg_create_from_dump(fIname, &image);
 | 
				
			||||||
if (foo) {
 | 
					if (foo) {
 | 
				
			||||||
	fprintf(stderr, "err %d create image\n", foo);
 | 
						fprintf(stderr, "%s: err %d create from dump\n", __func__, foo);
 | 
				
			||||||
	exit(1);
 | 
						exit(1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -73,8 +73,6 @@ return 0;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
foo = essayer_single("capture/???42.fimg", "/tmp/x8/", STK);
 | 
					foo = essayer_single("capture/???42.fimg", "/tmp/x8/", STK);
 | 
				
			||||||
fprintf(stderr, "essayer single -> %d\n", foo);
 | 
					fprintf(stderr, "essayer single -> %d\n", foo);
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
int essayer_single(char *globpattern, char *destdir, int chain)
 | 
					int essayer_single(char *globpattern, char *destdir, int chain)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -161,14 +159,14 @@ puts("\t-s\tdo single test");
 | 
				
			|||||||
exit(0);
 | 
					exit(0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/* ----------------------------------------------------------- */
 | 
					/* ----------------------------------------------------------- */
 | 
				
			||||||
int experiment(void)
 | 
					int experiment(char *fname)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
int		foo;
 | 
					int		foo;
 | 
				
			||||||
FloatImg	image, dest;
 | 
					FloatImg	image, dest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fprintf(stderr, "--------- EXPERIMENT ------------\n");
 | 
					fprintf(stderr, "----- EXPERIMENT on '%s' -----\n", fname);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
foo = fimg_create_from_dump("mire.fimg", &image);
 | 
					foo = fimg_create_from_dump(fname, &image);
 | 
				
			||||||
if (foo) {
 | 
					if (foo) {
 | 
				
			||||||
	fprintf(stderr, "%s: err %d on create_from_dump\n",
 | 
						fprintf(stderr, "%s: err %d on create_from_dump\n",
 | 
				
			||||||
			__func__, foo);
 | 
								__func__, foo);
 | 
				
			||||||
@ -177,8 +175,8 @@ if (foo) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
foo = fimg_clone(&image, &dest, 0);
 | 
					foo = fimg_clone(&image, &dest, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
foo = graylevel2popcolors(&image, &dest, 0);
 | 
					foo = poke_sup_rb_g(&image, &dest);
 | 
				
			||||||
fprintf(stderr, "POP COLOR- -> %d\n", foo);
 | 
					fprintf(stderr, "poke sup rb g --> %d\n", foo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fimg_export_picture(&dest, "foo.png", 0);
 | 
					fimg_export_picture(&dest, "foo.png", 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -230,7 +228,7 @@ if (foo) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (do_xper) {
 | 
					if (do_xper) {
 | 
				
			||||||
	experiment();
 | 
						experiment(infile);
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
if (do_single) {
 | 
					if (do_single) {
 | 
				
			||||||
 | 
				
			|||||||
@ -53,6 +53,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
\section*{Une image flottante ?}
 | 
					\section*{Une image flottante ?}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					\textsl{Back in a far past part of history.}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\textsl{Mais de quoi parle-t-on exactement ?}
 | 
					\textsl{Mais de quoi parle-t-on exactement ?}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
% XXX XXX XXX\vspace{1em}
 | 
					% XXX XXX XXX\vspace{1em}
 | 
				
			||||||
@ -79,7 +81,12 @@ IRC de \textsl{libera.chat}.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
\textbf{Attention !} ce document commence par une bonne rafale
 | 
					\textbf{Attention !} ce document commence par une bonne rafale
 | 
				
			||||||
de technique parfois \textsl{hardue}\footnote{hard + ardue = private
 | 
					de technique parfois \textsl{hardue}\footnote{hard + ardue = private
 | 
				
			||||||
joke Usenet}, avec des pointeurs dedans.
 | 
					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.
 | 
				
			||||||
Vous avez parfaitement le droit de sauter directement à
 | 
					Vous avez parfaitement le droit de sauter directement à
 | 
				
			||||||
la page \pageref{outils} pour quelque chose de plus concret.
 | 
					la page \pageref{outils} pour quelque chose de plus concret.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -510,7 +517,7 @@ Si la valeur retournée est différente de 0, c'est que quelque
 | 
				
			|||||||
chose s'est probablement mal passé.
 | 
					chose s'est probablement mal passé.
 | 
				
			||||||
Certains messages sont parfois  explicites. Mais parfois non.
 | 
					Certains messages sont parfois  explicites. Mais parfois non.
 | 
				
			||||||
Quand aux valeurs retournées en cas d'erreur, c'est le désordre
 | 
					Quand aux valeurs retournées en cas d'erreur, c'est le désordre
 | 
				
			||||||
intégral.
 | 
					intégral\footnote{Un vrai désastre, même...}.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
% 	_________
 | 
					% 	_________
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1396,7 +1403,7 @@ le premier pouvant salement brotcher une image, et le second capable de
 | 
				
			|||||||
mélanger harmonieusement deux images, la balance est équilibrée.
 | 
					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
 | 
					Il s'agit donc d'un petit programme écrit en Bash\index{bash}, un langage
 | 
				
			||||||
dont la connaissance est, pour moi, indispendable à qui veut faire des
 | 
					dont la connaissance est, pour moi, indispensable à qui veut faire des
 | 
				
			||||||
images kitchies\index{kitchy}. Mais ne vous inquiétez pas, c'est en
 | 
					images kitchies\index{kitchy}. Mais ne vous inquiétez pas, c'est en
 | 
				
			||||||
fait assez simple à comprendre. Et comprendre, c'est apprendre.
 | 
					fait assez simple à comprendre. Et comprendre, c'est apprendre.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1625,10 +1632,12 @@ devez mettre ce bout de XML\index{XML} dans le fichier
 | 
				
			|||||||
\end{lstlisting}
 | 
					\end{lstlisting}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
C'est juste un hack rapide, qui ne fonctionne pas très bien avec
 | 
					C'est juste un hack rapide, qui ne fonctionne pas très bien avec
 | 
				
			||||||
d'autres commande de IM, comme identify, qui a tendance à
 | 
					d'autres commande de IM, comme \texttt{identify}\index{identify},
 | 
				
			||||||
 | 
					qui a tendance à
 | 
				
			||||||
raconter un peu n'importe quoi, puisqu'elle se base sur le
 | 
					raconter un peu n'importe quoi, puisqu'elle se base sur le
 | 
				
			||||||
résultat de la conversion.
 | 
					résultat de la conversion.
 | 
				
			||||||
Je compte donc sur le bouquin de \textsl{Brunus} pour avancer\dots
 | 
					Je compte donc sur le bouquin de \textsl{Brunus}\index{Brunus}
 | 
				
			||||||
 | 
					pour avancer\dots
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\subsection{Gimp}\index{Gimp}
 | 
					\subsection{Gimp}\index{Gimp}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1662,7 +1671,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
 | 
					Il y a d'autres logiciels pour lesquels écrire une fonction d'importation
 | 
				
			||||||
serait bien~: \textsl{Geeqie}, un visualiseur d'image fort pratique, ou
 | 
					serait bien~: \textsl{Geeqie}, un visualiseur d'image fort pratique, ou
 | 
				
			||||||
\textsl{Krita} qui semble avoir les faveurs de
 | 
					\textsl{Krita} qui semble avoir les faveurs de
 | 
				
			||||||
dessinateurs de talent\footnote{Oui, David, c'est à toi que je pense.}.
 | 
					dessinateurs de talent.
 | 
				
			||||||
Ce qui nous conduit à une question importante~: quels sont les logiciels 
 | 
					Ce qui nous conduit à une question importante~: quels sont les logiciels 
 | 
				
			||||||
qui gèrent le chargement d'image par un système de
 | 
					qui gèrent le chargement d'image par un système de
 | 
				
			||||||
\textsl{plugin}\index{plugin},
 | 
					\textsl{plugin}\index{plugin},
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										13
									
								
								essai.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								essai.c
									
									
									
									
									
								
							@ -18,6 +18,8 @@ int		verbosity;
 | 
				
			|||||||
void fait_un_dessin(FloatImg *dessin)
 | 
					void fait_un_dessin(FloatImg *dessin)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// fprintf(stderr, "je dessine dans %p\n", dessin);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fimg_draw_something(dessin);
 | 
					fimg_draw_something(dessin);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -26,6 +28,7 @@ void help(void)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
puts("Options :");
 | 
					puts("Options :");
 | 
				
			||||||
puts("\t-d WxH\timage size");
 | 
					puts("\t-d WxH\timage size");
 | 
				
			||||||
 | 
					puts("\t-v\tincrease verbosity");
 | 
				
			||||||
exit(0);
 | 
					exit(0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/* --------------------------------------------------------------------- */
 | 
					/* --------------------------------------------------------------------- */
 | 
				
			||||||
@ -57,19 +60,19 @@ fimg_drand48(&fimgB, 100.0);
 | 
				
			|||||||
foo = fimg_dump_to_file(&fimgB, "B.fimg", 0);
 | 
					foo = fimg_dump_to_file(&fimgB, "B.fimg", 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fimg_timer_set(0);
 | 
					fimg_timer_set(0);
 | 
				
			||||||
#define NBP 500
 | 
					#define NBP 5
 | 
				
			||||||
for (foo=0; foo<NBP; foo++) {
 | 
					for (foo=0; foo<NBP; foo++) {
 | 
				
			||||||
	if (verbosity) {
 | 
						if (verbosity) {
 | 
				
			||||||
		printf("%5d / %5d\n", foo, NBP);
 | 
							printf("%5d     / %5d\n", foo, NBP);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	fait_un_dessin(&fimgB);
 | 
						fait_un_dessin(&fimgB);
 | 
				
			||||||
	fimg_add_3(&fimgA, &fimgB, &fimgA);
 | 
						fimg_add_3(&fimgA, &fimgB, &fimgA);
 | 
				
			||||||
	// fimg_mul(&fimgA, &fimgB, &fimgA);
 | 
						// fimg_mul(&fimgA, &fimgB, &fimgA);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
tb = fimg_timer_get(0);
 | 
					tb = fimg_timer_get(0);
 | 
				
			||||||
fprintf(stderr, "%s = %f seconds\n", __func__, tb);
 | 
					fprintf(stderr, "%s = %.2f seconds, %.2f s/p\n", __func__, tb, tb/(double)NBP);
 | 
				
			||||||
foo = fimg_save_as_pnm(&fimgA, "drand48.pnm", 0);
 | 
					foo = fimg_save_as_pnm(&fimgA, "out.pnm", 0);
 | 
				
			||||||
foo = fimg_dump_to_file(&fimgA, "drand48.fimg", 0);
 | 
					foo = fimg_dump_to_file(&fimgA, "out.fimg", 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fimg_destroy(&fimgA);
 | 
					fimg_destroy(&fimgA);
 | 
				
			||||||
fimg_destroy(&fimgB);
 | 
					fimg_destroy(&fimgB);
 | 
				
			||||||
 | 
				
			|||||||
@ -110,6 +110,9 @@ for (y=0; y<hd; y++) {
 | 
				
			|||||||
return 0;
 | 
					return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/* --------------------------------------------------------------------- */
 | 
					/* --------------------------------------------------------------------- */
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *	this function can be optimized with direct pixel copy
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
int fimg_extractor(FloatImg *in, FloatImg *out, FimgArea51 *rect)
 | 
					int fimg_extractor(FloatImg *in, FloatImg *out, FimgArea51 *rect)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
int		xs, ys, xd, yd;
 | 
					int		xs, ys, xd, yd;
 | 
				
			||||||
 | 
				
			|||||||
@ -19,7 +19,7 @@ do
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	# only take the good spot
 | 
						# only take the good spot
 | 
				
			||||||
	fimg=$(printf "%s/%05d.fimg" ${OUTD} ${idx})
 | 
						fimg=$(printf "%s/%05d.fimg" ${OUTD} ${idx})
 | 
				
			||||||
	${EXTR}  -o ${fimg} ${TMPG} 800,600,560,240 ${fimg}
 | 
						${EXTR}  -o ${fimg} ${TMPG} 800,600,560,240
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	# display ${fimg} ;  exit
 | 
						# display ${fimg} ;  exit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -18,7 +18,9 @@ int extractor(char *srcname, char *dstname, FimgArea51 *rect)
 | 
				
			|||||||
FloatImg	src, dst;
 | 
					FloatImg	src, dst;
 | 
				
			||||||
int		foo;
 | 
					int		foo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if DEBUG_LEVEL
 | 
				
			||||||
fprintf(stderr, ">>> %s ( %s  %s  %p )\n", __func__, srcname, dstname, rect);
 | 
					fprintf(stderr, ">>> %s ( %s  %s  %p )\n", __func__, srcname, dstname, rect);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (verbosity) {
 | 
					if (verbosity) {
 | 
				
			||||||
	print_rectangle((char *)__func__, rect);
 | 
						print_rectangle((char *)__func__, rect);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user