You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
222 lines
6.6 KiB
Python
222 lines
6.6 KiB
Python
""":mod:`wand.cdefs.structures` --- MagickWand C-Structures
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. versionadded:: 0.5.0
|
|
"""
|
|
from ctypes import POINTER, Structure, c_bool, c_double, c_int, c_size_t
|
|
|
|
from wand.cdefs.wandtypes import c_magick_real_t, c_magick_size_t, c_ssize_t
|
|
|
|
__all__ = ('AffineMatrix', 'CCMaxMetrics', 'CCObjectInfo', 'CCObjectInfo70A',
|
|
'CCObjectInfo710', 'ChannelFeature', 'GeometryInfo', 'KernelInfo',
|
|
'MagickPixelPacket', 'PixelInfo', 'PointInfo', 'RectangleInfo')
|
|
|
|
|
|
class AffineMatrix(Structure):
|
|
|
|
_fields_ = [('sx', c_double),
|
|
('rx', c_double),
|
|
('ry', c_double),
|
|
('sy', c_double),
|
|
('tx', c_double),
|
|
('ty', c_double)]
|
|
|
|
|
|
class ChannelFeature(Structure):
|
|
"""
|
|
/*
|
|
Haralick texture features.
|
|
*/
|
|
typedef struct _ChannelFeatures
|
|
{
|
|
double
|
|
angular_second_moment[4],
|
|
contrast[4],
|
|
correlation[4],
|
|
variance_sum_of_squares[4],
|
|
inverse_difference_moment[4],
|
|
sum_average[4],
|
|
sum_variance[4],
|
|
sum_entropy[4],
|
|
entropy[4],
|
|
difference_variance[4],
|
|
difference_entropy[4],
|
|
measure_of_correlation_1[4],
|
|
measure_of_correlation_2[4],
|
|
maximum_correlation_coefficient[4];
|
|
} ChannelFeatures;
|
|
"""
|
|
_fields_ = [('angular_second_moment', c_double * 4),
|
|
('contrast', c_double * 4),
|
|
('correlation', c_double * 4),
|
|
('variance_sum_of_squares', c_double * 4),
|
|
('inverse_difference_moment', c_double * 4),
|
|
('sum_average', c_double * 4),
|
|
('sum_variance', c_double * 4),
|
|
('sum_entropy', c_double * 4),
|
|
('entropy', c_double * 4),
|
|
('difference_variance', c_double * 4),
|
|
('difference_entropy', c_double * 4),
|
|
('measure_of_correlation_1', c_double * 4),
|
|
('measure_of_correlation_2', c_double * 4),
|
|
('maximum_correlation_coefficient', c_double * 4)]
|
|
|
|
|
|
class GeometryInfo(Structure):
|
|
NoValue = 0x0000
|
|
XValue = 0x0001
|
|
XiValue = 0x0001
|
|
YValue = 0x0002
|
|
PsiValue = 0x0002
|
|
WidthValue = 0x0004
|
|
RhoValue = 0x0004
|
|
HeightValue = 0x0008
|
|
SigmaValue = 0x0008
|
|
ChiValue = 0x0010
|
|
XiNegative = 0x0020
|
|
XNegative = 0x0020
|
|
PsiNegative = 0x0040
|
|
YNegative = 0x0040
|
|
ChiNegative = 0x0080
|
|
PercentValue = 0x1000
|
|
AspectValue = 0x2000
|
|
NormalizeValue = 0x2000
|
|
LessValue = 0x4000
|
|
GreaterValue = 0x8000
|
|
MinimumValue = 0x10000
|
|
CorrelateNormalizeValue = 0x10000
|
|
AreaValue = 0x20000
|
|
DecimalValue = 0x40000
|
|
SeparatorValue = 0x80000
|
|
AspectRatioValue = 0x100000
|
|
AllValues = 0x7fffffff
|
|
_fields_ = [('rho', c_double),
|
|
('sigma', c_double),
|
|
('xi', c_double),
|
|
('psi', c_double),
|
|
('chi', c_double)]
|
|
|
|
|
|
class KernelInfo(Structure):
|
|
pass
|
|
|
|
|
|
KernelInfo._fields_ = [('type', c_int),
|
|
('width', c_size_t),
|
|
('height', c_size_t),
|
|
('x', c_ssize_t),
|
|
('y', c_ssize_t),
|
|
('values', POINTER(c_double)),
|
|
('minimum', c_double),
|
|
('maximum', c_double),
|
|
('negative_range', c_double),
|
|
('positive_range', c_double),
|
|
('angle', c_double),
|
|
('next', POINTER(KernelInfo)),
|
|
('signature', c_size_t)]
|
|
|
|
|
|
class MagickPixelPacket(Structure):
|
|
|
|
_fields_ = [('storage_class', c_int),
|
|
('colorspace', c_int),
|
|
('matte', c_int),
|
|
('fuzz', c_double),
|
|
('depth', c_size_t),
|
|
('red', c_magick_real_t),
|
|
('green', c_magick_real_t),
|
|
('blue', c_magick_real_t),
|
|
('opacity', c_magick_real_t),
|
|
('index', c_magick_real_t)]
|
|
|
|
|
|
class OffsetInfo(Structure):
|
|
|
|
_fields_ = [('x', c_double),
|
|
('y', c_double)]
|
|
|
|
|
|
class PixelInfo(Structure):
|
|
|
|
_fields_ = [('storage_class', c_int),
|
|
('colorspace', c_int),
|
|
('alpha_trait', c_int),
|
|
('fuzz', c_double),
|
|
('depth', c_size_t),
|
|
('count', c_magick_size_t),
|
|
('red', c_magick_real_t),
|
|
('green', c_magick_real_t),
|
|
('blue', c_magick_real_t),
|
|
('black', c_magick_real_t),
|
|
('alpha', c_magick_real_t),
|
|
('index', c_magick_real_t)]
|
|
|
|
|
|
class PointInfo(Structure):
|
|
|
|
_fields_ = [('x', c_double),
|
|
('y', c_double)]
|
|
|
|
|
|
class RectangleInfo(Structure):
|
|
|
|
_fields_ = [('width', c_size_t),
|
|
('height', c_size_t),
|
|
('x', c_ssize_t),
|
|
('y', c_ssize_t)]
|
|
|
|
|
|
class CCObjectInfo(Structure):
|
|
_fields_ = [('_id', c_ssize_t),
|
|
('bounding_box', RectangleInfo),
|
|
('color', PixelInfo),
|
|
('centroid', PointInfo),
|
|
('area', c_double),
|
|
('census', c_double)]
|
|
|
|
|
|
CCMaxMetrics = 16
|
|
|
|
|
|
class CCObjectInfo70A(Structure):
|
|
CCMaxMetrics = CCMaxMetrics
|
|
_fields_ = [('_id', c_ssize_t),
|
|
('bounding_box', RectangleInfo),
|
|
('color', PixelInfo),
|
|
('centroid', PointInfo),
|
|
('area', c_double),
|
|
('census', c_double),
|
|
('merge', c_bool),
|
|
('metric', c_double * CCMaxMetrics)]
|
|
|
|
|
|
class CCObjectInfo710(Structure):
|
|
CCMaxMetrics = CCMaxMetrics
|
|
_fields_ = [('_id', c_ssize_t),
|
|
('bounding_box', RectangleInfo),
|
|
('color', PixelInfo),
|
|
('centroid', PointInfo),
|
|
('area', c_double),
|
|
('census', c_double),
|
|
('merge', c_bool),
|
|
('metric', c_double * CCMaxMetrics),
|
|
('key', c_ssize_t)]
|
|
|
|
|
|
# All this will change with IM7, so let's not implement this just yet.
|
|
#
|
|
# class ImageChannelStatistics(Structure):
|
|
# _fields_ = [('maximum', c_double),
|
|
# ('minimum', c_double),
|
|
# ('mean', c_double),
|
|
# ('standard_deviation', c_double),
|
|
# ('variance', c_double),
|
|
# ('kurtosis', c_double),
|
|
# ('skewness', c_double)]
|
|
#
|
|
# class ImageStatistics(Structure):
|
|
# _fields_ = [('red', ImageChannelStatistics),
|
|
# ('green', ImageChannelStatistics),
|
|
# ('blue', ImageChannelStatistics),
|
|
# ('opacity', ImageChannelStatistics)]
|