Browse Source

random patchys...

master
tonton Th 2 years ago
parent
commit
dd9ac7c948
  1. 1
      .gitignore
  2. 12
      doc/the_floatimg_hack.tex
  3. 2
      floatimg.h
  4. 2
      install.sh
  5. 2
      lib/fimg-2gray.c
  6. 3
      lib/fimg-compare.c
  7. 3
      tools/fimg2pnm.c
  8. 32
      v4l2/README.md
  9. 6
      v4l2/README.txt
  10. 12
      v4l2/essai.sh
  11. 41
      v4l2/grabvidseq.c
  12. 2
      v4l2/v4l2_pr_structs.h

1
.gitignore vendored

@ -38,6 +38,7 @@ v4l2/capture @@ -38,6 +38,7 @@ v4l2/capture
v4l2/grabvidseq
v4l2/*.o
v4l2/*.ppm
v4l2/*.png
v4l2/video-infos
v4l2/nc-camcontrol

12
doc/the_floatimg_hack.tex

@ -233,8 +233,8 @@ par défaut du make. @@ -233,8 +233,8 @@ par défaut du make.
Pour le moment, la procédure d'installation est un peu rude,
pour ne pas dire clairement sommaire.
Si le résultat de l'étape compilation vous semble correct,
vous pouvez copier les deux fichiers \texttt{floatimg.h} et \texttt{libfloatimg.a}
dans un emplacement approprié, par exemple
vous pouvez copier les deux fichiers \texttt{floatimg.h} et
\texttt{libfloatimg.a} dans un emplacement approprié, par exemple
\texttt{/usr/local/include} et \texttt{/usr/local/lib}.
Le script \texttt{install.sh}, à la racine du projet, est censé
@ -353,6 +353,14 @@ documentés dans ce document, et les autres sont dangereux à @@ -353,6 +353,14 @@ documentés dans ce document, et les autres sont dangereux à
toucher. Les types d'images actuellement gérés sont les trois grands
classiques : gray, rgb et rgba. et expliquées quelques lignes plus haut.
Comme vous allez le voir plus loin, il y a plein de fonctions qui
prennent en argument deux images: une source et une destination.
\begin{lstlisting}
int fimg_images_compatible(FloatImg *a, FloatImg *b);
\end{lstlisting}
C'est bien beau d'être enfin résident en mémoire centrale, mais
pouvoir aussi exister à long terme en étant stocké dans la matrice
est tout aussi pertinent. Il y a deux opérations qui supportent le

2
floatimg.h

@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
* floatimg.h
*/
#define FIMG_VERSION 97
#define FIMG_VERSION 98
/*
* in memory descriptor

2
install.sh

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash -v
cp libfloatimg.a /usr/local/lib
cp floatimg.h /usr/local/include

2
lib/fimg-2gray.c

@ -13,7 +13,7 @@ extern int verbosity; /* must be declared around main() */ @@ -13,7 +13,7 @@ extern int verbosity; /* must be declared around main() */
/* --------------------------------------------------------------------- */
/*
* floating imgs MUST be allocated before calling this func.
* floating resultat img MUST be allocated before calling this func.
*/
int fimg_mk_gray_from(FloatImg *src, FloatImg *dst, int k)
{

3
lib/fimg-compare.c

@ -13,6 +13,9 @@ @@ -13,6 +13,9 @@
extern int verbosity; /* must be declared around main() */
/* ---------------------------------------------------------------- */
/*
* return 0 if images are compatibles
*/
int fimg_images_compatible(FloatImg *a, FloatImg *b)
{
#if DEBUG_LEVEL > 1

3
tools/fimg2pnm.c

@ -77,6 +77,9 @@ if (flag) { @@ -77,6 +77,9 @@ if (flag) {
}
puts("usage :");
puts("\tfimg2pnm [flags] infile.fimg outfile.pnm");
puts("flags :");
puts("\t-g\tconvert to gray");
puts("\t-v\tenhance your verbosity");
}
/* --------------------------------------------------------------------- */
int main(int argc, char *argv[])

32
v4l2/README.md

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
# Images en virgule flottante, video 4 linux
## grabvidseq
```
tth@lubitel:~/Devel/FloatImg/v4l2$ ./grabvidseq -h
options :
-d /dev/? select video device
-g convert to gray
-n NNN how many frames ?
-O ./ set Output dir
-o bla.xxx set output filename
-p NN.N period in seconds
-r 90 rotate picture
-s WxH size of capture
-c mode contrast enhancement
-u try upscaling...
-v increase verbosity
```
## video-infos
```
Options :
-e N examine that, please
-d select the video device
-K set the K parameter
-l list video devices
-T bla add a title
-v increase verbosity
```

6
v4l2/README.txt

@ -2,10 +2,6 @@ @@ -2,10 +2,6 @@
capture video
-------------
------------------------------------------------------------------------
<paulk-leonov> tth: en faisant de la revue de patch sur V4L2, j'apprends
@ -13,3 +9,5 @@ @@ -13,3 +9,5 @@
le premier concerne le champ flags de la structure de l'ioctl enum_fmt
et le second le champ flag de la structure de g_fmt.
------------------------------------------------------------------------

12
v4l2/essai.sh

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
#!/bin/bash
# -----------------------------------------------------
TMPF="tmp.fimg"
CAM="/dev/video0"
# -----------------------------------------------------
./grabvidseq -d $CAM -n 10000 -vv -p 0 -r 90
# -----------------------------------------------------

41
v4l2/grabvidseq.c

@ -100,27 +100,28 @@ int r, fd = -1; @@ -100,27 +100,28 @@ int r, fd = -1;
unsigned int i, n_buffers;
char *dev_name = "/dev/video0";
FILE *fout;
// XXX FILE *fout;
struct buffer *buffers;
int foo, bar;
double period = 10.0; /* delai entre les captures */
int nbre_capt = 1; /* nombre de captures */
int foo;
double period = 10.0; /* delai entre les captures */
int nbre_capt = 1; /* nombre de captures */
int opt;
int width = 640;
int height = 480;
double t_final, maxvalue;
int to_gray = 0;
int upscaling = 0;
int contrast = 0;
char *dest_dir = "."; /* no trailing slash */
int contrast = CONTRAST_NONE;
int rotfactor = 0; /* only 0 or 90 here */
char *dest_dir = "."; /* no trailing slash */
char *outfile = "out.pnm";
#if SAVE_AS_CUMUL
FloatImg cumul;
FloatImg cumul, tmpfimg, *to_save;
#endif
while ((opt = getopt(argc, argv, "c:d:ghn:o:O:p:s:uv")) != -1) {
while ((opt = getopt(argc, argv, "c:d:ghn:o:O:p:r:s:uv")) != -1) {
switch(opt) {
case 'c': contrast = fimg_id_contraste(optarg);
if (contrast < 0) {
@ -143,10 +144,15 @@ while ((opt = getopt(argc, argv, "c:d:ghn:o:O:p:s:uv")) != -1) { @@ -143,10 +144,15 @@ while ((opt = getopt(argc, argv, "c:d:ghn:o:O:p:s:uv")) != -1) {
}
period *= 1e6;
break;
case 'r': rotfactor = atoi(optarg); break;
case 's': parse_WxH(optarg, &width, &height);
break;
case 'u': upscaling = 1; break;
case 'v': verbosity++; break;
default:
fprintf(stderr, "option '%c' is wtf\n", opt);
exit(1);
}
}
@ -155,6 +161,7 @@ if (verbosity > 1) { @@ -155,6 +161,7 @@ if (verbosity > 1) {
fprintf(stderr, "grabing %d picz\n", nbre_capt);
fprintf(stderr, "period is %.3f milliseconds\n", period/1e3);
fprintf(stderr, "framesize is %dx%d\n", width, height);
fprintf(stderr, "destdir is '%s'\n", dest_dir);
if (upscaling) fprintf(stderr, "upscaling is on\n");
}
@ -233,6 +240,8 @@ else { @@ -233,6 +240,8 @@ else {
fimg_clear(&cumul);
cumul.fval = 255.0;
cumul.count = 0;
to_save = &cumul;
#endif
@ -327,6 +336,7 @@ if (to_gray) { @@ -327,6 +336,7 @@ if (to_gray) {
foo = fimg_to_gray(&cumul);
}
#if SAVE_AS_CUMUL
// save cumul to file
if (verbosity) fprintf(stderr, "saving cumul to '%s'\n", outfile);
@ -357,6 +367,18 @@ switch (contrast) { @@ -357,6 +367,18 @@ switch (contrast) {
break;
}
/* XXX warning, new from coronahome 26 mars 2020 */
if (90 == rotfactor) {
memset(&tmpfimg, 0, sizeof(FloatImg));
foo = fimg_rotate_90(&cumul, &tmpfimg, 0);
if (verbosity > 1) {
fprintf(stderr, "dump rot90 %p\n", &tmpfimg);
foo = fimg_save_as_png(&tmpfimg, "rot90.png", 0);
}
to_save = &tmpfimg;
}
foo = format_from_extension(outfile);
switch (foo) {
case FILE_TYPE_FIMG:
@ -373,6 +395,9 @@ switch (foo) { @@ -373,6 +395,9 @@ switch (foo) {
break;
}
// free buffers
fimg_destroy(&cumul);
#endif

2
v4l2/v4l2_pr_structs.h

@ -16,7 +16,7 @@ char *str_ctrl_type(int type); @@ -16,7 +16,7 @@ char *str_ctrl_type(int type);
char *str_buf_type(int type);
char *str_fourcc(uint32_t fcc); /* NOT REENTRANT */
void pr_ctrl_id(uint32_t id);
void pr_ctrl_id(uint32_t id); /* bit dissector */
/* --------------------------------------------------------------------- */

Loading…
Cancel
Save