fix morph on non-uchar images
This commit is contained in:
parent
de796417cb
commit
610f7aa0eb
@ -1,3 +1,6 @@
|
|||||||
|
28/6/13 started 7.34.1
|
||||||
|
- fix morphological operators on non-uchar images
|
||||||
|
|
||||||
7/6/13 started 7.34.0
|
7/6/13 started 7.34.0
|
||||||
- version bump
|
- version bump
|
||||||
- oops, VImage.PIL_mode_from_vips() failed for CMYK, thanks Alessandro
|
- oops, VImage.PIL_mode_from_vips() failed for CMYK, thanks Alessandro
|
||||||
|
3
TODO
3
TODO
@ -1,3 +1,6 @@
|
|||||||
|
- 3-way dilate on a float image seems to be broken
|
||||||
|
|
||||||
|
|
||||||
- object construction is threadsafe, but class construction is not
|
- object construction is threadsafe, but class construction is not
|
||||||
|
|
||||||
https://github.com/jcupitt/libvips/issues/64
|
https://github.com/jcupitt/libvips/issues/64
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# also update the version number in the m4 macros below
|
# also update the version number in the m4 macros below
|
||||||
|
|
||||||
AC_INIT([vips], [7.34.0], [vipsip@jiscmail.ac.uk])
|
AC_INIT([vips], [7.34.1], [vipsip@jiscmail.ac.uk])
|
||||||
# required for gobject-introspection
|
# required for gobject-introspection
|
||||||
AC_PREREQ(2.62)
|
AC_PREREQ(2.62)
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ AC_CONFIG_MACRO_DIR([m4])
|
|||||||
# user-visible library versioning
|
# user-visible library versioning
|
||||||
m4_define([vips_major_version], [7])
|
m4_define([vips_major_version], [7])
|
||||||
m4_define([vips_minor_version], [34])
|
m4_define([vips_minor_version], [34])
|
||||||
m4_define([vips_micro_version], [0])
|
m4_define([vips_micro_version], [1])
|
||||||
m4_define([vips_version],
|
m4_define([vips_version],
|
||||||
[vips_major_version.vips_minor_version.vips_micro_version])
|
[vips_major_version.vips_minor_version.vips_micro_version])
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ VIPS_VERSION_STRING=$VIPS_VERSION-`date`
|
|||||||
# binary interface changes not backwards compatible?: reset age to 0
|
# binary interface changes not backwards compatible?: reset age to 0
|
||||||
|
|
||||||
LIBRARY_CURRENT=34
|
LIBRARY_CURRENT=34
|
||||||
LIBRARY_REVISION=3
|
LIBRARY_REVISION=4
|
||||||
LIBRARY_AGE=3
|
LIBRARY_AGE=3
|
||||||
|
|
||||||
# patched into include/vips/version.h
|
# patched into include/vips/version.h
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
* 7/11/10
|
* 7/11/10
|
||||||
* - gtk-doc
|
* - gtk-doc
|
||||||
* - do (!=0) to make uchar, if we're not given uchar
|
* - do (!=0) to make uchar, if we're not given uchar
|
||||||
|
* 28/6/13
|
||||||
|
* - oops, fix !=0 code
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -714,11 +716,12 @@ morphology( IMAGE *in, IMAGE *out, INTMASK *mask, MorphOp op )
|
|||||||
/* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output
|
/* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output
|
||||||
* would be 1x1.
|
* would be 1x1.
|
||||||
*/
|
*/
|
||||||
if( im_cp_desc( out, in ) )
|
if( im_cp_desc( morph->out, morph->in ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
out->Xsize -= mask->xsize - 1;
|
morph->out->Xsize -= morph->mask->xsize - 1;
|
||||||
out->Ysize -= mask->ysize - 1;
|
morph->out->Ysize -= morph->mask->ysize - 1;
|
||||||
if( out->Xsize <= 0 || out->Ysize <= 0 ) {
|
if( morph->out->Xsize <= 0 ||
|
||||||
|
morph->out->Ysize <= 0 ) {
|
||||||
im_error( "morph", "%s", _( "image too small for mask" ) );
|
im_error( "morph", "%s", _( "image too small for mask" ) );
|
||||||
return( -1 );
|
return( -1 );
|
||||||
}
|
}
|
||||||
@ -730,7 +733,7 @@ morphology( IMAGE *in, IMAGE *out, INTMASK *mask, MorphOp op )
|
|||||||
printf( "morph_vector_gen: %d passes\n", morph->n_pass );
|
printf( "morph_vector_gen: %d passes\n", morph->n_pass );
|
||||||
#endif /*DEBUG*/
|
#endif /*DEBUG*/
|
||||||
}
|
}
|
||||||
else if( op == DILATE )
|
else if( morph->op == DILATE )
|
||||||
generate = dilate_gen;
|
generate = dilate_gen;
|
||||||
else
|
else
|
||||||
generate = erode_gen;
|
generate = erode_gen;
|
||||||
@ -738,13 +741,13 @@ morphology( IMAGE *in, IMAGE *out, INTMASK *mask, MorphOp op )
|
|||||||
/* Set demand hints. FATSTRIP is good for us, as THINSTRIP will cause
|
/* Set demand hints. FATSTRIP is good for us, as THINSTRIP will cause
|
||||||
* too many recalculations on overlaps.
|
* too many recalculations on overlaps.
|
||||||
*/
|
*/
|
||||||
if( im_demand_hint( out, IM_FATSTRIP, in, NULL ) ||
|
if( im_demand_hint( morph->out, IM_FATSTRIP, morph->in, NULL ) ||
|
||||||
im_generate( out,
|
im_generate( morph->out,
|
||||||
morph_start, generate, morph_stop, in, morph ) )
|
morph_start, generate, morph_stop, morph->in, morph ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
|
||||||
out->Xoffset = -mask->xsize / 2;
|
morph->out->Xoffset = -morph->mask->xsize / 2;
|
||||||
out->Yoffset = -mask->ysize / 2;
|
morph->out->Yoffset = -morph->mask->ysize / 2;
|
||||||
|
|
||||||
return( 0 );
|
return( 0 );
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user