forked from tTh/FloatImg
		
	added "qsortrgb" effect
This commit is contained in:
		
							parent
							
								
									bbee507851
								
							
						
					
					
						commit
						ceb806d19c
					
				| @ -5,7 +5,7 @@ DEPS = ../floatimg.h Makefile | |||||||
| OBJS = fimg-png.o fimg-tiff.o misc-plots.o filtrage.o utils.o	\
 | OBJS = fimg-png.o fimg-tiff.o misc-plots.o filtrage.o utils.o	\
 | ||||||
| 	fimg-libpnm.o rampes.o sfx0.o geometry.o rotate.o	\
 | 	fimg-libpnm.o rampes.o sfx0.o geometry.o rotate.o	\
 | ||||||
| 	equalize.o fimg-fits.o saturation.o histogram.o		\
 | 	equalize.o fimg-fits.o saturation.o histogram.o		\
 | ||||||
| 	hsv.o classif.o contour2x2.o | 	hsv.o classif.o contour2x2.o qsortrgb.o | ||||||
| 
 | 
 | ||||||
| #---------------------------------------------------------------
 | #---------------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
| @ -64,6 +64,10 @@ rampes.o:		rampes.c $(DEPS) | |||||||
| classif.o:		classif.c $(DEPS) | classif.o:		classif.c $(DEPS) | ||||||
| 	gcc $(COPT) -c $< | 	gcc $(COPT) -c $< | ||||||
| 
 | 
 | ||||||
|  | qsortrgb.o:		qsortrgb.c $(DEPS) | ||||||
|  | 	gcc $(COPT) -c $< | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| hsv.o:		hsv.c $(DEPS) | hsv.o:		hsv.c $(DEPS) | ||||||
| 	gcc $(COPT) -c $< | 	gcc $(COPT) -c $< | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										41
									
								
								funcs/qsortrgb.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								funcs/qsortrgb.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | |||||||
|  | /*
 | ||||||
|  |  *		qsort_rgb.c | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #include   <stdio.h> | ||||||
|  | #include   <stdlib.h> | ||||||
|  | #include   <string.h> | ||||||
|  | #include   <math.h> | ||||||
|  | 
 | ||||||
|  | #include   "../floatimg.h" | ||||||
|  | 
 | ||||||
|  | int		verbosity; | ||||||
|  | 
 | ||||||
|  | /* --------------------------------------------------------------------- */ | ||||||
|  | /* nouveau 7 octobre 2020, juste avant sonoptic de la pluie craignos	 */ | ||||||
|  | 
 | ||||||
|  | static int compare(const void *p1, const void *p2) | ||||||
|  | { | ||||||
|  | return		( *(float *)p1 < *(float *)p2 ); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int fimg_qsort_rgb(FloatImg *psrc, FloatImg *pdst, int notused) | ||||||
|  | { | ||||||
|  | int		foo, szimg; | ||||||
|  | 
 | ||||||
|  | #if DEBUG_LEVEL | ||||||
|  | fprintf(stderr, ">>> %s ( %p %p %d )\n", __func__, psrc, pdst, notused); | ||||||
|  |  #endif | ||||||
|  | 
 | ||||||
|  | foo = fimg_copy_data(psrc, pdst); | ||||||
|  | 
 | ||||||
|  | szimg = pdst->width * pdst->height; | ||||||
|  | fprintf(stderr, "%s : %d pixels\n", __func__, szimg); | ||||||
|  | 
 | ||||||
|  | qsort(pdst->R, szimg, sizeof(float), compare); | ||||||
|  | qsort(pdst->G, szimg, sizeof(float), compare); | ||||||
|  | qsort(pdst->B, szimg, sizeof(float), compare); | ||||||
|  | 
 | ||||||
|  | return 0; | ||||||
|  | } | ||||||
|  | /* --------------------------------------------------------------------- */ | ||||||
							
								
								
									
										48
									
								
								funcs/t.c
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								funcs/t.c
									
									
									
									
									
								
							| @ -14,6 +14,48 @@ int		verbosity; | |||||||
| 
 | 
 | ||||||
| float		global_fvalue; | float		global_fvalue; | ||||||
| 
 | 
 | ||||||
|  | /* --------------------------------------------------------------------- */ | ||||||
|  | /*
 | ||||||
|  |  *	nouveau 7 octobre 2020 pendant sonoptic | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | int fimg_qsort_rgb(FloatImg *psrc, FloatImg *pdst, int notused); | ||||||
|  | 
 | ||||||
|  | int essai_qsort_rgb(char *infile) | ||||||
|  | { | ||||||
|  | FloatImg	src, dst; | ||||||
|  | int		foo; | ||||||
|  | 
 | ||||||
|  | if (NULL != infile) { | ||||||
|  | 	fprintf(stderr, "%s : loading %s\n", __func__, infile); | ||||||
|  | 	foo = fimg_create_from_dump(infile, &src); | ||||||
|  | 	if (foo) { | ||||||
|  | 		fprintf(stderr, "%s: error loading '%s'\n", __func__, infile); | ||||||
|  | 		return foo; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | else	{ | ||||||
|  | 	fprintf(stderr, "%s : NOT INPUT FILE, FUBAR\n", __func__); | ||||||
|  | 	abort(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | fimg_clone(&src, &dst, 1); | ||||||
|  | 
 | ||||||
|  | foo = fimg_qsort_rgb(&src, &dst, 0); | ||||||
|  | if (foo) { | ||||||
|  | 	fprintf(stderr, "%s: err %d in qsort_rgb\n", __func__, foo); | ||||||
|  | 	return foo; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | foo = fimg_save_as_pnm(&dst, "out.pnm", 0); | ||||||
|  | if (foo) { | ||||||
|  | 	fprintf(stderr, "%s : err %d saving result\n", __func__, foo); | ||||||
|  | 	return foo; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /* --------------------------------------------------------------------- */ | /* --------------------------------------------------------------------- */ | ||||||
| /*
 | /*
 | ||||||
|  *	nouveau 5 octobre 2020 pendant sonoptic |  *	nouveau 5 octobre 2020 pendant sonoptic | ||||||
| @ -511,7 +553,7 @@ return 0; | |||||||
| } | } | ||||||
| /* --------------------------------------------------------------------- */ | /* --------------------------------------------------------------------- */ | ||||||
| enum nCmd { Equalize=1, Rotate, Sfx0, F3x3, MIRE, Wfits, Wpng, Wtiff, | enum nCmd { Equalize=1, Rotate, Sfx0, F3x3, MIRE, Wfits, Wpng, Wtiff, | ||||||
| 			Histo, Hsv, Classif, Ctr2x2  }; | 			Histo, Hsv, Classif, Ctr2x2, Qsortrgb  }; | ||||||
| typedef struct { | typedef struct { | ||||||
| 	char	*name; | 	char	*name; | ||||||
| 	int	Cmd; | 	int	Cmd; | ||||||
| @ -530,6 +572,7 @@ Command commands[] = { | |||||||
| 	{ "hsv",	Hsv		}, | 	{ "hsv",	Hsv		}, | ||||||
| 	{ "classif",	Classif		}, | 	{ "classif",	Classif		}, | ||||||
| 	{ "ctr2x2",	Ctr2x2		}, | 	{ "ctr2x2",	Ctr2x2		}, | ||||||
|  | 	{ "qsortrgb",	Qsortrgb	}, | ||||||
| 	{ NULL,		0		} | 	{ NULL,		0		} | ||||||
| 	} ; | 	} ; | ||||||
| 
 | 
 | ||||||
| @ -634,6 +677,9 @@ switch(opt) { | |||||||
| 	case Ctr2x2: | 	case Ctr2x2: | ||||||
| 		foo = essai_contour_2x2(filename); | 		foo = essai_contour_2x2(filename); | ||||||
| 		break; | 		break; | ||||||
|  | 	case Qsortrgb: | ||||||
|  | 		foo = essai_qsort_rgb(filename); | ||||||
|  | 		break; | ||||||
| 	default: | 	default: | ||||||
| 		fprintf(stderr, "%s : bad command\n", command); | 		fprintf(stderr, "%s : bad command\n", command); | ||||||
| 		exit(1); | 		exit(1); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user