Compare commits

..

2 Commits

Author SHA1 Message Date
tth
116cb56e13 fimgfx little doc 2019-11-29 20:35:23 +01:00
tth
8a68cc24c6 fine tuning fimgfx with a script 2019-11-29 19:55:52 +01:00
5 changed files with 54 additions and 15 deletions

4
.gitignore vendored
View File

@ -27,6 +27,10 @@ doc/*.ind
funcs/t funcs/t
scripts/*.fimg
scripts/*.pnm
scripts/*.gif
v4l2/t v4l2/t
v4l2/capture v4l2/capture
v4l2/grabvidseq v4l2/grabvidseq

View File

@ -314,6 +314,14 @@ dans l'upscaling.} effectuées.
\vspace{1em} \vspace{1em}
L'autre façon de procéder est d'explorer notre image à la
recherche de la valeur maximale.
La fonction \texttt{float fimg\_get\_maxvalue(\&fimg)} est
faite pour ça. C'est la méthode utilisée par l'outil qui
sert à faire les modifications de contraste (page \pageref{fimgfx}.
\vspace{1em}
La prochaine étape consistera à trouver une façon de faire La prochaine étape consistera à trouver une façon de faire
une égalisation\index{égalisation} par histogramme\index{histogramme} une égalisation\index{égalisation} par histogramme\index{histogramme}
qui respecte, dans toute sa futilité, le concept\index{concept} qui respecte, dans toute sa futilité, le concept\index{concept}
@ -324,6 +332,7 @@ de pixel flottant.
Une bonne partie de ces fonctions est indéterministe. Ce qui Une bonne partie de ces fonctions est indéterministe. Ce qui
veut dire, en langage de tous les soirs, que ça risque de ne veut dire, en langage de tous les soirs, que ça risque de ne
pas être la même chose dans l'avenir. pas être la même chose dans l'avenir.
\vspace{1em} \vspace{1em}
On y trouve pêle-mêle de l'import/export de fichiers, de l'analyse On y trouve pêle-mêle de l'import/export de fichiers, de l'analyse
@ -518,13 +527,11 @@ de ces images ?
\begin{verbatim} \begin{verbatim}
#!/bin/bash #!/bin/bash
ACCU="quux.fimg" ACCU="quux.fimg"
TMPF="tmp.fimg" TMPF="tmp.fimg"
DIMS="320 240" DIMS="320 240"
mkfimg $ACCU $DIMS mkfimg $ACCU $DIMS
for i in {0..1000} for i in {0..1000}
do do
mkfimg -t drand48 ${TMPF} ${DIMS} mkfimg -t drand48 ${TMPF} ${DIMS}
@ -532,13 +539,15 @@ do
fimgops $ACCU $TMPF add $ACCU fimgops $ACCU $TMPF add $ACCU
fimg2pnm -v -g $ACCU $fname fimg2pnm -v -g $ACCU $fname
done done
convert -delay 10 xx*.pnm foo.gif convert -delay 10 xx*.pnm foo.gif
\end{verbatim} \end{verbatim}
Voilà, si les choses se passent mal, vous allez découvrir Voilà, si les choses se passent mal, vous allez découvrir
que votre drand n'est pas si drand que ça. Séquence angoisse. que votre \texttt{drand48} n'est pas si drand que ça. Séquence angoisse.
\subsection{Scripts}\index{scripts}\label{scripts}
:wq
% ------------------------------------------------------------------- % -------------------------------------------------------------------
\section{Video for Linux}\index{v4l2} \section{Video for Linux}\index{v4l2}

View File

@ -4,7 +4,7 @@ cp libfloatimg.a /usr/local/lib
cp floatimg.h /usr/local/include cp floatimg.h /usr/local/include
cp tools/mkfimg tools/fimg2pnm tools/fimgops \ cp tools/mkfimg tools/fimg2pnm tools/fimgops \
tools/png2fimg tools/fimgstats \ tools/png2fimg tools/fimgstats tools/fimgfx \
/usr/local/bin /usr/local/bin
cp v4l2/grabvidseq v4l2/video-infos \ cp v4l2/grabvidseq v4l2/video-infos \

27
scripts/contrast-test.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/bash
GRAB="quux.fimg"
COS01="cos01.fimg"
SQRT="sqrt.fimg"
POW2="pow2.fimg"
f2p ()
{
echo ========== $1
fimg2pnm -v $1 $(basename $1 .fimg).pnm
}
grabvidseq -v -n 777 -p 0.07 -o $GRAB
f2p $GRAB
fimgfx -v pow2 $GRAB $POW2
f2p $POW2
fimgfx -v sqrt $GRAB $SQRT
f2p $SQRT
fimgfx -v cos01 $GRAB $COS01
f2p $COS01
convert -delay 10 *.pnm foo.gif

View File

@ -66,7 +66,7 @@ FloatImg src, dest;
int foo; int foo;
double maxval; double maxval;
#if 1 #if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( '%s' %d '%s' )\n", __func__, fprintf(stderr, ">>> %s ( '%s' %d '%s' )\n", __func__,
sf, act, df); sf, act, df);
#endif #endif
@ -125,7 +125,7 @@ while ((opt = getopt(argc, argv, "hk:v")) != -1) {
} }
} }
#if 1 #if DEBUG_LEVEL
fprintf(stderr, "argc %d optind %d\n", argc, optind); fprintf(stderr, "argc %d optind %d\n", argc, optind);
for (foo=0; foo<argc; foo++) for (foo=0; foo<argc; foo++)
fprintf(stderr, "%3d %c %s\n", foo, foo==optind?'*':' ', argv[foo]); fprintf(stderr, "%3d %c %s\n", foo, foo==optind?'*':' ', argv[foo]);
@ -144,9 +144,9 @@ if (action < 0) {
} }
if (verbosity) { if (verbosity) {
fprintf(stderr, "global fvalue %f\n", global_fvalue); fprintf(stderr, " global fvalue %f\n", global_fvalue);
fprintf(stderr, "action %d\n", action); fprintf(stderr, " action %d\n", action);
fprintf(stderr, "verbosity %d\n", verbosity); fprintf(stderr, " verbosity %d\n", verbosity);
} }
if ((nba=fx_list[action].nbarg)) { if ((nba=fx_list[action].nbarg)) {
@ -155,13 +155,12 @@ if ((nba=fx_list[action].nbarg)) {
srcname = argv[optind+1]; srcname = argv[optind+1];
dstname = argv[optind+2]; dstname = argv[optind+2];
fprintf(stderr, "%s ==> %s\n", srcname, dstname); if (verbosity) fprintf(stderr, "%s ==> %s\n", srcname, dstname);
foo = do_an_effect(srcname, action, dstname); foo = do_an_effect(srcname, action, dstname);
fprintf(stderr, "do an effect -> %d\n", foo); if (foo) {
fprintf(stderr, "do an effect -> %d\n", foo);
}
fprintf(stderr, "\n%s [done]\n", argv[0]);
return 0; return 0;
} }