forked from tTh/FloatImg
doc about fimg2text + small patches
This commit is contained in:
parent
5ac050fa10
commit
004f24689b
@ -995,17 +995,75 @@ ne devrait pas être trop difficile. Des volontaires ?
|
|||||||
\textsl{D'ailleurs, pourquoi $N$ logiciels indépendants alors q'un
|
\textsl{D'ailleurs, pourquoi $N$ logiciels indépendants alors q'un
|
||||||
seul devrait être nécessaire ?}
|
seul devrait être nécessaire ?}
|
||||||
|
|
||||||
|
% -------------------------
|
||||||
|
|
||||||
|
\subsection{fimg2text}
|
||||||
|
|
||||||
|
Voici donc quelque chose qui retourne vers la bonne vieille
|
||||||
|
tradition Unix\index{Unix} et permet de traiter des images
|
||||||
|
flottantes avec des outils classiques comme l'injustement
|
||||||
|
méconnu \texttt{Awk}\index{Awk}.
|
||||||
|
Dans le comportement par défaut (le seul actuellement) cet outil
|
||||||
|
sort, pour chaque pixel, cinq valeurs~:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Les coordonnées entières $x,y$ du pixel
|
||||||
|
\item Les valeurs flottantes des composantes \textsc{rgb}
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
On peut même espérer qu'un jour, il soit possible de faire
|
||||||
|
la transformation inverse. Quelle joie de générer des images
|
||||||
|
flottantes avec un programme écrit en \textit{gw-basic} :)
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
tth@fubar:~/Devel/FloatImg/doc$ fimg2text -h
|
||||||
|
usage:
|
||||||
|
fimg2text [options] foo.fimg > bar.csv
|
||||||
|
options:
|
||||||
|
-v increase verbosity
|
||||||
|
-n 3.14 normalize picture
|
||||||
|
-s N steps on x & y
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
Vous voulez un petit exemple ?
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
tth@fubar:~/Devel/FloatImg/doc$ mkfimg -t drand48 quux.fimg 4 2
|
||||||
|
tth@fubar:~/Devel/FloatImg/doc$ fimg2text -s 1 quux.fimg
|
||||||
|
0 0 142.518127 84.036987 20.688946
|
||||||
|
1 0 164.273315 68.397079 138.501587
|
||||||
|
2 0 45.887970 25.905518 93.683243
|
||||||
|
3 0 53.292942 222.000000 111.711548
|
||||||
|
0 1 82.289795 113.054855 180.530014
|
||||||
|
1 1 42.051765 114.543625 4.249123
|
||||||
|
2 1 71.826775 96.219109 63.222294
|
||||||
|
3 1 160.535675 136.104919 204.020691
|
||||||
|
tth@fubar:~/Devel/FloatImg/doc$
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
Et maintenant, vous voulez un gros exemple ?
|
||||||
|
|
||||||
|
|
||||||
|
% -------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\subsection{fimg2gray}\index{fimg2gray}\label{fimg2gray}
|
\subsection{fimg2gray}\index{fimg2gray}\label{fimg2gray}
|
||||||
|
|
||||||
Nous avons vu dans ce document que chaque image flottante pouvait
|
Nous avons vu dans ce document que chaque image flottante pouvait
|
||||||
avoir plusieurs plans de réalité. Il ne faut en négliger aucun.
|
avoir plusieurs plans de réalité. Il ne faut en négliger aucun,
|
||||||
|
voire même tenter de les faire se rencontrer, se combiner et
|
||||||
|
s'influencer mutuellement.
|
||||||
|
|
||||||
Il faut quand même deviner que pour passer de l'espace RGB\index{RGB}
|
Il faut quand même deviner que pour passer de l'espace RGB\index{RGB}
|
||||||
à une abstraction linéaire mono-dimensionnelle, il existe une foultitude
|
à une abstraction linéaire mono-dimensionnelle, il existe une foultitude
|
||||||
de méthodes, toutes plus légitimes que les autres.
|
de méthodes, toutes plus légitimes que les autres.
|
||||||
\index{procrastination}
|
\index{procrastination}
|
||||||
Et face à l'incertitude du choix, j'ai reporté l'écriture de ce
|
Et face à l'incertitude du choix, j'ai reporté l'écriture de ce
|
||||||
logiciel aux calendes grecques, voire même plus tard.
|
logiciel aux calendes grecques, voire même plus tard,
|
||||||
|
après la grande pandémie\dots
|
||||||
|
|
||||||
|
% -------------------------
|
||||||
|
|
||||||
\subsection{cumulfimgs}\index{cumulfimgs}\label{cumulfimgs}
|
\subsection{cumulfimgs}\index{cumulfimgs}\label{cumulfimgs}
|
||||||
|
|
||||||
|
@ -90,6 +90,11 @@ fprintf(stderr, ">>> %25s ( '%s' '%s' %d )\n", __func__,
|
|||||||
srcname, dstname, notused);
|
srcname, dstname, notused);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (steps < 1) {
|
||||||
|
fprintf(stderr, "%s: steps MUST be > 0\n", __func__);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
foo = fimg_fileinfos(srcname, infos);
|
foo = fimg_fileinfos(srcname, infos);
|
||||||
if (foo) {
|
if (foo) {
|
||||||
fprintf(stderr, "'%s' get dims -> %d\n", srcname, foo);
|
fprintf(stderr, "'%s' get dims -> %d\n", srcname, foo);
|
||||||
@ -142,11 +147,13 @@ exit(0);
|
|||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int foo, opt;
|
int foo, opt;
|
||||||
int steps = 16;
|
int steps = 1;
|
||||||
float norm_val = 222.0; /* < 0 : don't normalize */
|
float norm_val = 222.0; /* < 0 : don't normalize */
|
||||||
|
char separator = ' ';
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "hn:s:v")) != -1) {
|
while ((opt = getopt(argc, argv, "f:hn:s:v")) != -1) {
|
||||||
switch(opt) {
|
switch(opt) {
|
||||||
|
case 'f': separator = optarg[0]; break;
|
||||||
case 'v': verbosity++; break;
|
case 'v': verbosity++; break;
|
||||||
case 'h': help(1); exit(1);
|
case 'h': help(1); exit(1);
|
||||||
case 's': steps = atoi(optarg); break;
|
case 's': steps = atoi(optarg); break;
|
||||||
|
Loading…
Reference in New Issue
Block a user