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	\
 | ||||
| 	fimg-libpnm.o rampes.o sfx0.o geometry.o rotate.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) | ||||
| 	gcc $(COPT) -c $< | ||||
| 
 | ||||
| qsortrgb.o:		qsortrgb.c $(DEPS) | ||||
| 	gcc $(COPT) -c $< | ||||
| 
 | ||||
| 
 | ||||
| hsv.o:		hsv.c $(DEPS) | ||||
| 	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; | ||||
| 
 | ||||
| /* --------------------------------------------------------------------- */ | ||||
| /*
 | ||||
|  *	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 | ||||
| @ -511,7 +553,7 @@ return 0; | ||||
| } | ||||
| /* --------------------------------------------------------------------- */ | ||||
| enum nCmd { Equalize=1, Rotate, Sfx0, F3x3, MIRE, Wfits, Wpng, Wtiff, | ||||
| 			Histo, Hsv, Classif, Ctr2x2  }; | ||||
| 			Histo, Hsv, Classif, Ctr2x2, Qsortrgb  }; | ||||
| typedef struct { | ||||
| 	char	*name; | ||||
| 	int	Cmd; | ||||
| @ -530,6 +572,7 @@ Command commands[] = { | ||||
| 	{ "hsv",	Hsv		}, | ||||
| 	{ "classif",	Classif		}, | ||||
| 	{ "ctr2x2",	Ctr2x2		}, | ||||
| 	{ "qsortrgb",	Qsortrgb	}, | ||||
| 	{ NULL,		0		} | ||||
| 	} ; | ||||
| 
 | ||||
| @ -634,6 +677,9 @@ switch(opt) { | ||||
| 	case Ctr2x2: | ||||
| 		foo = essai_contour_2x2(filename); | ||||
| 		break; | ||||
| 	case Qsortrgb: | ||||
| 		foo = essai_qsort_rgb(filename); | ||||
| 		break; | ||||
| 	default: | ||||
| 		fprintf(stderr, "%s : bad command\n", command); | ||||
| 		exit(1); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user