- Timestamp:
- Aug 21, 2008, 12:00:23 AM (14 years ago)
- Location:
- libpipi/trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
libpipi/trunk/pipi/context.c
r2746 r2747 305 305 ctx->images[ctx->nimages - 1] = dst; 306 306 } 307 else if(!strcmp(cmd, "threshold")) 308 { 309 pipi_image_t *src, *dst; 310 char const *arg; 311 va_list ap; 312 double val; 313 314 if(ctx->nimages < 1) 315 return -1; 316 va_start(ap, cmd); 317 arg = va_arg(ap, char const *); 318 va_end(ap); 319 val = atof(arg); 320 src = ctx->images[ctx->nimages - 1]; 321 dst = pipi_threshold(src, val); 322 if(dst == NULL) 323 return -1; 324 pipi_free(src); 325 ctx->images[ctx->nimages - 1] = dst; 326 } 307 327 else if(!strcmp(cmd, "mean")) 308 328 { -
libpipi/trunk/pipi/filter/color.c
r2725 r2747 244 244 } 245 245 246 pipi_image_t *pipi_threshold(pipi_image_t *src, double val) 247 { 248 pipi_image_t *dst; 249 pipi_pixels_t *srcp, *dstp; 250 float *srcdata, *dstdata; 251 int x, y, w, h, gray; 252 253 w = src->w; 254 h = src->h; 255 256 gray = (src->last_modified == PIPI_PIXELS_Y_F); 257 258 srcp = gray ? pipi_getpixels(src, PIPI_PIXELS_Y_F) 259 : pipi_getpixels(src, PIPI_PIXELS_RGBA_F); 260 srcdata = (float *)srcp->pixels; 261 262 dst = pipi_new(w, h); 263 dstp = gray ? pipi_getpixels(dst, PIPI_PIXELS_Y_F) 264 : pipi_getpixels(dst, PIPI_PIXELS_RGBA_F); 265 dstdata = (float *)dstp->pixels; 266 267 for(y = 0; y < h; y++) 268 { 269 for(x = 0; x < w; x++) 270 { 271 if(gray) 272 { 273 dstdata[y * w + x] = srcdata[y * w + x] < val ? 0. : 1.; 274 } 275 else 276 { 277 int d = 4 * (y * w + x); 278 279 dstdata[d] = srcdata[d] < val ? 0. : 1.; 280 dstdata[d + 1] = srcdata[d + 1] < val ? 0. : 1.; 281 dstdata[d + 2] = srcdata[d + 2] < val ? 0. : 1.; 282 dstdata[d + 3] = srcdata[d + 3] < val ? 0. : 1.; 283 } 284 } 285 } 286 287 return dst; 288 } 289 -
libpipi/trunk/pipi/pipi.h
r2746 r2747 127 127 extern pipi_image_t *pipi_autocontrast(pipi_image_t *); 128 128 extern pipi_image_t *pipi_invert(pipi_image_t *); 129 extern pipi_image_t *pipi_threshold(pipi_image_t *, double); 129 130 extern pipi_image_t *pipi_median(pipi_image_t *, int); 130 131 extern pipi_image_t *pipi_median_ext(pipi_image_t *, int, int); -
libpipi/trunk/src/pipi.c
r2746 r2747 113 113 return EXIT_FAILURE; 114 114 } 115 else if(!strcmp(argv[0], "--threshold")) 116 { 117 if(argv[1] == NULL) 118 return EXIT_FAILURE; 119 if(pipi_command(ctx, "threshold", argv[1]) != 0) 120 return EXIT_FAILURE; 121 argv++; 122 } 115 123 else if(!strcmp(argv[0], "--dilate")) 116 124 {
Note: See TracChangeset
for help on using the changeset viewer.