forked from tTh/FloatImg
bla
This commit is contained in:
parent
7afe2b1b63
commit
0eff0039eb
|
@ -41,6 +41,11 @@ composante, mais c'est loin d'être le cas général.
|
|||
J'ai donc souhaité aller plus loin, et coder chaque canal de
|
||||
chaque pixel en virgule flottante sur 32bits, le type
|
||||
\texttt{float}\index{float} du langage C.
|
||||
\vspace{1em}
|
||||
|
||||
Attention, tout le code que nous allons voir ensemble est en
|
||||
perpétuelle évolution\footnote{voir page \pageref{TODO}},
|
||||
et sa fiablité reste à démontrer\index{valgrind}.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
|
||||
|
@ -50,6 +55,13 @@ chaque pixel en virgule flottante sur 32bits, le type
|
|||
% -------------------------------------------------------------------
|
||||
\section{Premier example}\index{example}\label{example}
|
||||
|
||||
\textsc{FloatImg} a débuté sous la forme de quelques fonctions
|
||||
basiques en C, gérant la structure des données d'image en mémoire
|
||||
et sur disque.
|
||||
Nous allons donc directement rentrer au cœur du problème.
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
Pour commencer par quelques chose de simple,
|
||||
nous allons créer une image RGB\index{RGB} complètement noire,
|
||||
puis l'enregistrer dans un fichier \texttt{.fimg}\index{.fimg},
|
||||
|
@ -70,7 +82,7 @@ en mémoire centrale, initialisations des valeurs de pixel à 0.0,
|
|||
et pour conclure, enregistrement dans un fichier.
|
||||
|
||||
\begin{verbatim}
|
||||
foo = fimg_create(&fimg, width, height, 3);
|
||||
foo = fimg_create(&fimg, width, height, FIMG_TYPE_RGB);
|
||||
if (foo) {
|
||||
fprintf(stderr, "create floatimg -> %d\n", foo);
|
||||
exit(1);
|
||||
|
@ -90,7 +102,7 @@ nous pouvons entrevoir, grâce au logiciel
|
|||
le résultat sous forme de chiffres divers, et/ou inutiles~:
|
||||
|
||||
\begin{verbatim}
|
||||
$ ./fimgstats quux.img
|
||||
$ ./fimgstats quux.img
|
||||
----------- numbers from 'quux.img' :
|
||||
640 480 3 0x7f3718c4f010 0x7f3718d7b010 0x7f3718ea7010
|
||||
surface 307200
|
||||
|
@ -102,24 +114,36 @@ mean values:
|
|||
max value 0.000000
|
||||
\end{verbatim}
|
||||
|
||||
Nous avons donc sous la main une mécanique qui ne demande qu'à
|
||||
faire des trucs futiles et des images qui clignotent.
|
||||
La suite vers la page \pageref{codaz}.
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
Vous trouverez dans le répertoire \texttt{tools/}\index{tools/}
|
||||
d'autres exemples de mise en œuvre des fonctions disponibles
|
||||
sous formes d'outils en ligne de commande, décrits page \pageref{outils}.
|
||||
sous formes d'outils en ligne de commande,
|
||||
décrits en page \pageref{outils}.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Installation}
|
||||
|
||||
\subsection{Prérequis}
|
||||
|
||||
Vous devez, en dehors des outils classiques (gcc, make\dots),
|
||||
Vous devez, en dehors des outils classiques (bash, gcc, make\dots),
|
||||
avoir quelques bibliothèques installées\footnote{Les \texttt{-dev}
|
||||
pour Debain et dérivées}~: libv4l2, libpnglite, libtiff, et
|
||||
probablement d'autres choses.
|
||||
probablement d'autres choses. Être familier avec l'utilisation du
|
||||
shell\index{shell} sera un plus.
|
||||
|
||||
\subsection{Compilation}
|
||||
|
||||
Un script \texttt{build.sh} permet de construire approximativement
|
||||
le bouzin. Il est loin d'être parfait.
|
||||
le bouzin. Il est loin d'être parfait\footnote{Il doit être possible
|
||||
de faire un Makefile récursif, mais\dots}.
|
||||
Dans chacun des
|
||||
répertoires à traiter, ce script devrait trouver un Makefile et un fichier
|
||||
\texttt{t.c} source de la cible par défaut du make.
|
||||
\vspace{1em}
|
||||
|
||||
Pour le moment, la procédure d'installation est un peu rude,
|
||||
|
@ -131,7 +155,7 @@ approprié, par exemple
|
|||
\texttt{/usr/local/include} et \texttt{/usr/local/lib}.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Utilisation coté codeur}
|
||||
\section{Utilisation coté codeur}\label{codaz}
|
||||
|
||||
Classiquement, il y a un fichier à inclure, \texttt{floatimg.h},
|
||||
contenant un certain nombre de
|
||||
|
@ -260,12 +284,20 @@ l'on peut assimiler à un noir absolu\index{absolu}.
|
|||
Affichage de quelques valeurs calculées à partir d'un fichier
|
||||
\texttt{.fimg}\index{.fimg}.
|
||||
|
||||
\begin{verbatim}
|
||||
usage : fimgstats [options] file.fimg
|
||||
-c make a machinable csv
|
||||
-v increase verbosity
|
||||
\end{verbatim}
|
||||
|
||||
\subsection{fimgops}\index{fimgops}\label{fimgops}
|
||||
|
||||
Operations diverses sur ou entre des images.
|
||||
|
||||
Syntaxe CLI\index{CLI} à définir.
|
||||
|
||||
\begin{verbatim}
|
||||
Usage:
|
||||
fimgops [options] A.fimg B.fimg operator D.fimg
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
\subsection{fimg2png, fimg2pnm, fimg2tiff}
|
||||
|
@ -301,6 +333,26 @@ Il reste plein de choses à faire pour que ce soit vraiment utilisable.
|
|||
\
|
||||
\end{itemize}
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Exemples pour yusers}\index{example}
|
||||
|
||||
\begin{verbatim}
|
||||
#!/bin/bash
|
||||
|
||||
ACCU="quux.fimg"
|
||||
TMPF="tmp.fimg"
|
||||
DIMS="640 480"
|
||||
|
||||
mkfimg ${ACCU} ${DIMS}
|
||||
|
||||
for i in {0..100}
|
||||
do
|
||||
fname=$( printf "f%04d.pnm" $i )
|
||||
echo $fname
|
||||
mkfimg -t drand48 ${TMPF} ${DIMS}
|
||||
done
|
||||
\end{verbatim}
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Video for Linux}\index{v4l2}
|
||||
|
||||
|
@ -334,6 +386,10 @@ options :
|
|||
-v increase verbosity
|
||||
\end{verbatim}
|
||||
|
||||
\subsection{video-infos}\index{video-infos}\label{video-infos}
|
||||
|
||||
Que contient, que peut faire mon périphérique \textsl{àlc} ?
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Et pour la suite ?}
|
||||
|
||||
|
|
Loading…
Reference in New Issue