Browse Source

random patchys...

tonton Th 4 months ago
parent
commit
dd9ac7c948
12 changed files with 100 additions and 18 deletions
  1. 1
    0
      .gitignore
  2. 10
    2
      doc/the_floatimg_hack.tex
  3. 1
    1
      floatimg.h
  4. 1
    1
      install.sh
  5. 1
    1
      lib/fimg-2gray.c
  6. 3
    0
      lib/fimg-compare.c
  7. 3
    0
      tools/fimg2pnm.c
  8. 32
    0
      v4l2/README.md
  9. 2
    4
      v4l2/README.txt
  10. 12
    0
      v4l2/essai.sh
  11. 33
    8
      v4l2/grabvidseq.c
  12. 1
    1
      v4l2/v4l2_pr_structs.h

+ 1
- 0
.gitignore View File

@@ -38,6 +38,7 @@ v4l2/capture
38 38
 v4l2/grabvidseq
39 39
 v4l2/*.o
40 40
 v4l2/*.ppm
41
+v4l2/*.png
41 42
 v4l2/video-infos
42 43
 v4l2/nc-camcontrol
43 44
 

+ 10
- 2
doc/the_floatimg_hack.tex View File

@@ -233,8 +233,8 @@ par défaut du make.
233 233
 Pour le moment, la procédure d'installation est un peu rude,
234 234
 pour ne pas dire clairement sommaire.
235 235
 Si le résultat de l'étape compilation vous semble correct,
236
-vous pouvez copier les deux fichiers \texttt{floatimg.h} et \texttt{libfloatimg.a}
237
-dans un emplacement approprié, par exemple
236
+vous pouvez copier les deux fichiers \texttt{floatimg.h} et
237
+\texttt{libfloatimg.a} dans un emplacement approprié, par exemple
238 238
 \texttt{/usr/local/include} et \texttt{/usr/local/lib}.
239 239
 
240 240
 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 353
 toucher. Les types d'images actuellement gérés sont les trois grands
354 354
 classiques : gray, rgb et rgba.  et expliquées quelques lignes plus haut.
355 355
 
356
+Comme vous allez le voir plus loin, il y a plein de fonctions qui
357
+prennent en argument deux images: une source et une destination.
358
+
359
+\begin{lstlisting}
360
+int fimg_images_compatible(FloatImg *a, FloatImg *b);
361
+\end{lstlisting}
362
+
363
+
356 364
 C'est bien beau d'être enfin résident en mémoire centrale, mais
357 365
 pouvoir aussi exister à long terme en étant stocké dans la matrice
358 366
 est tout aussi pertinent. Il y a deux opérations qui supportent le

+ 1
- 1
floatimg.h View File

@@ -2,7 +2,7 @@
2 2
  *	floatimg.h
3 3
  */
4 4
 
5
-#define		FIMG_VERSION	97
5
+#define		FIMG_VERSION	98
6 6
 
7 7
 /*
8 8
  *	in memory descriptor

+ 1
- 1
install.sh View File

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

+ 1
- 1
lib/fimg-2gray.c View File

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

+ 3
- 0
lib/fimg-compare.c View File

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

+ 3
- 0
tools/fimg2pnm.c View File

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

+ 32
- 0
v4l2/README.md View File

@@ -0,0 +1,32 @@
1
+# Images en virgule flottante, video 4 linux
2
+
3
+## grabvidseq
4
+
5
+```
6
+tth@lubitel:~/Devel/FloatImg/v4l2$ ./grabvidseq -h
7
+options :
8
+        -d /dev/?       select video device
9
+        -g              convert to gray
10
+        -n NNN          how many frames ?
11
+        -O ./           set Output dir
12
+        -o bla.xxx      set output filename
13
+        -p NN.N         period in seconds
14
+        -r 90           rotate picture
15
+        -s WxH          size of capture
16
+        -c mode         contrast enhancement
17
+        -u              try upscaling...
18
+        -v              increase verbosity
19
+```
20
+
21
+## video-infos
22
+
23
+```
24
+Options :
25
+        -e N            examine that, please
26
+        -d              select the video device
27
+        -K              set the K parameter
28
+        -l              list video devices
29
+        -T bla          add a title
30
+        -v              increase verbosity
31
+```
32
+

+ 2
- 4
v4l2/README.txt View File

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

+ 12
- 0
v4l2/essai.sh View File

@@ -0,0 +1,12 @@
1
+#!/bin/bash
2
+
3
+#  -----------------------------------------------------
4
+
5
+TMPF="tmp.fimg"
6
+CAM="/dev/video0"
7
+
8
+#  -----------------------------------------------------
9
+
10
+./grabvidseq -d $CAM -n 10000 -vv -p 0 -r 90
11
+
12
+#  -----------------------------------------------------

+ 33
- 8
v4l2/grabvidseq.c View File

@@ -100,27 +100,28 @@ int                             r, fd = -1;
100 100
 unsigned int                    i, n_buffers;
101 101
 char                            *dev_name = "/dev/video0";
102 102
 
103
-FILE                            *fout;
103
+// XXX FILE                            *fout;
104 104
 struct buffer                   *buffers;
105 105
 
106
-int		foo, bar;
107
-double		period = 10.0;		/* delai entre les captures */
108
-int		nbre_capt = 1;		/* nombre de captures */
106
+int		foo;
107
+double		period = 10.0;			/* delai entre les captures */
108
+int		nbre_capt = 1;			/* nombre de captures */
109 109
 int		opt;
110 110
 int		width = 640;
111 111
 int		height = 480;
112 112
 double		t_final, maxvalue;
113 113
 int		to_gray = 0;
114 114
 int		upscaling = 0;
115
-int		contrast = 0;
116
-char		*dest_dir = ".";	/* no trailing slash */
115
+int		contrast = CONTRAST_NONE;
116
+int		rotfactor = 0;			/* only 0 or 90 here */
117
+char		*dest_dir = ".";		/* no trailing slash */
117 118
 char		*outfile = "out.pnm";
118 119
 
119 120
 #if SAVE_AS_CUMUL
120
-FloatImg	cumul;
121
+FloatImg	cumul, tmpfimg, *to_save;
121 122
 #endif
122 123
 
123
-while ((opt = getopt(argc, argv, "c:d:ghn:o:O:p:s:uv")) != -1) {
124
+while ((opt = getopt(argc, argv, "c:d:ghn:o:O:p:r:s:uv")) != -1) {
124 125
 	switch(opt) {
125 126
 		case 'c':	contrast = fimg_id_contraste(optarg);
126 127
 				if (contrast < 0) {
@@ -143,10 +144,15 @@ while ((opt = getopt(argc, argv, "c:d:ghn:o:O:p:s:uv")) != -1) {
143 144
 					}
144 145
 				period *= 1e6;
145 146
 				break;
147
+		case 'r':	rotfactor = atoi(optarg);	break;
146 148
 		case 's':	parse_WxH(optarg, &width, &height);
147 149
 				break;
148 150
 		case 'u':	upscaling = 1;			break;
149 151
 		case 'v':	verbosity++;			break;
152
+
153
+		default:
154
+			fprintf(stderr, "option '%c' is wtf\n", opt);
155
+			exit(1);
150 156
 		}
151 157
 	}
152 158
 
@@ -155,6 +161,7 @@ if (verbosity > 1) {
155 161
 	fprintf(stderr, "grabing %d picz\n", nbre_capt);
156 162
 	fprintf(stderr, "period is %.3f milliseconds\n", period/1e3);
157 163
 	fprintf(stderr, "framesize is %dx%d\n", width, height);
164
+	fprintf(stderr, "destdir is '%s'\n", dest_dir);
158 165
 	if (upscaling) fprintf(stderr, "upscaling is on\n");
159 166
 	}
160 167
 
@@ -233,6 +240,8 @@ else	{
233 240
 fimg_clear(&cumul);
234 241
 cumul.fval = 255.0;
235 242
 cumul.count = 0;
243
+
244
+to_save = &cumul;
236 245
 #endif
237 246
 
238 247
 
@@ -327,6 +336,7 @@ if (to_gray) {
327 336
 	foo = fimg_to_gray(&cumul);
328 337
 	}
329 338
 
339
+
330 340
 #if SAVE_AS_CUMUL
331 341
 	// save cumul to file
332 342
 if (verbosity) fprintf(stderr, "saving cumul to '%s'\n", outfile);
@@ -357,6 +367,18 @@ switch (contrast) {
357 367
 		break;
358 368
 	}
359 369
 
370
+/* XXX warning, new from coronahome 26 mars 2020 */
371
+if (90 == rotfactor) {
372
+	memset(&tmpfimg, 0, sizeof(FloatImg));
373
+	foo = fimg_rotate_90(&cumul, &tmpfimg, 0);
374
+	if (verbosity > 1) {
375
+		fprintf(stderr, "dump rot90 %p\n", &tmpfimg);
376
+		foo = fimg_save_as_png(&tmpfimg, "rot90.png", 0);
377
+		}
378
+	to_save = &tmpfimg;
379
+	}
380
+
381
+
360 382
 foo = format_from_extension(outfile);
361 383
 switch (foo) {
362 384
 	case FILE_TYPE_FIMG:
@@ -373,6 +395,9 @@ switch (foo) {
373 395
 		break;
374 396
 	}
375 397
 	// free buffers
398
+
399
+
400
+
376 401
 fimg_destroy(&cumul);
377 402
 #endif
378 403
 

+ 1
- 1
v4l2/v4l2_pr_structs.h View File

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

Loading…
Cancel
Save