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
|
||||
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}
|
||||
|
||||
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}
|
||||
à une abstraction linéaire mono-dimensionnelle, il existe une foultitude
|
||||
de méthodes, toutes plus légitimes que les autres.
|
||||
\index{procrastination}
|
||||
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}
|
||||
|
||||
|
@ -90,6 +90,11 @@ fprintf(stderr, ">>> %25s ( '%s' '%s' %d )\n", __func__,
|
||||
srcname, dstname, notused);
|
||||
#endif
|
||||
|
||||
if (steps < 1) {
|
||||
fprintf(stderr, "%s: steps MUST be > 0\n", __func__);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
foo = fimg_fileinfos(srcname, infos);
|
||||
if (foo) {
|
||||
fprintf(stderr, "'%s' get dims -> %d\n", srcname, foo);
|
||||
@ -142,11 +147,13 @@ exit(0);
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int foo, opt;
|
||||
int steps = 16;
|
||||
int steps = 1;
|
||||
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) {
|
||||
case 'f': separator = optarg[0]; break;
|
||||
case 'v': verbosity++; break;
|
||||
case 'h': help(1); exit(1);
|
||||
case 's': steps = atoi(optarg); break;
|
||||
|
Loading…
Reference in New Issue
Block a user