예제 #1
0
        FT.output_type1('neighbors'),
        FT.output_type1('dist')
    ])
    t._transformer_kwds['alias'] = 'findNearest'
# findOrthoRange
z.mem_fun('findOrthoRange')._transformer_creators.extend([
    FT.input_array1d('minBounds'),
    FT.input_array1d('maxBounds'),
    FT.output_type1('neighborsIdx'),
    FT.output_type1('neighbors')
])
# getPoints
for t in z.mem_funs('getPoints'):
    if t.arguments[0].name == 'idx':
        t._transformer_creators.append(FT.input_array1d('idx', 'nidx'))
    t._transformer_creators.append(FT.arg_output('pts'))
    t._transformer_kwds['alias'] = 'getPoints'
# getPoint
z.mem_fun('getPoint').exclude()
# get_support_vector
z.add_declaration_code('''
sdcpp::ndarray KDTree_getPoint(bp::object const &bpinst, int i) {
    cv::KDTree const &inst = bp::extract<cv::KDTree const &>(bpinst);
    sdcpp::ndarray result = sdcpp::new_ndarray1d(inst.points.cols, NPY_FLOAT, 
        (void *)inst.getPoint(i));
    bp::objects::make_nurse_and_patient(result.get_obj().ptr(), bpinst.ptr());
    return result;
}
''')
z.mem_fun('getPoint').exclude()
z.add_registration_code(
예제 #2
0
flanns.include()
if flanns[0].decl_string == '::flann::Index':
    flann_Index = flanns[0]
    cvflann_Index = flanns[1]
else:
    flann_Index = flanns[1]
    cvflann_Index = flanns[0]
flann_Index.rename('flann_Index')

sb.init_class(cvflann_Index)
for t in ('knnSearch', 'radiusSearch'):
    for z in cvflann_Index.mem_funs(t):
        z._transformer_kwds['alias'] = t
    z = cvflann_Index.mem_fun(
        lambda x: x.name == t and 'vector' in x.decl_string)
    z._transformer_creators.append(FT.arg_output('indices'))
    z._transformer_creators.append(FT.arg_output('dists'))
sb.finalize_class(cvflann_Index)

# IndexParams
sb.mb.class_('IndexParams').include()

# IndexFactory classes
for name in (
        'IndexFactory',
        'LinearIndexParams',
        'KDTreeIndexParams',
        'KMeansIndexParams',
        'CompositeIndexParams',
        'AutotunedIndexParams',
        'SavedIndexParams',
예제 #3
0
for z in (
        'namedWindow',
        'imshow',
        'imread',
        'imwrite',
        'imencode',
        'imdecode',
        'waitKey',
        'setWindowProperty',
        'getWindowProperty',
        'getTrackbarPos',
        'setTrackbarPos',
):
    sb.mb.free_fun(z).include()

sb.mb.free_fun('imencode')._transformer_creators.append(FT.arg_output('buf'))

# createTrackbar
z = sb.mb.free_fun('createTrackbar')
FT.expose_func(z,
               return_pointee=False,
               transformer_creators=[
                   FT.trackbar_callback2_func('onChange', 'userdata'),
                   FT.from_address('value')
               ])
FT.add_underscore(z)
sb.cc.write('''
def createTrackbar(trackbar_name, window_name, value, count, on_change=None, userdata=None):
    if not isinstance(value, _CT.c_int):
        value = _CT.c_int(value)
예제 #4
0
# CvFuzzyController
# TODO: fix the rest of the member declarations
z = sb.mb.class_('CvFuzzyController')
z.include()
z.decls().exclude()

# CvFuzzyMeanShiftTracker
# TODO: fix the rest of the member declarations
z = sb.mb.class_('CvFuzzyMeanShiftTracker')
z.include()
z.decls().exclude()

# Octree
z = sb.mb.class_('Octree')
sb.init_class(z)
z.mem_fun('getPointsWithinSphere')._transformer_creators.append(FT.arg_output('points'))
sb.finalize_class(z)

# Octree::Node
z = z.class_('Node')
sb.init_class(z)
sb.finalize_class(z)
sb.expose_class_vector('cv::Octree::Node', 'vector_Octree_Node')
    
# Mesh3D
z = sb.mb.class_('Mesh3D')
sb.init_class(z)
sb.finalize_class(z)

# SpinImageModel
z = sb.mb.class_('SpinImageModel')
예제 #5
0
flanns = sb.mb.classes('Index')
flanns.include()
if flanns[0].decl_string == '::flann::Index':
    flann_Index = flanns[0]
    cvflann_Index = flanns[1]
else:
    flann_Index = flanns[1]
    cvflann_Index = flanns[0]
flann_Index.rename('flann_Index')

sb.init_class(cvflann_Index)
for t in ('knnSearch', 'radiusSearch'):
    for z in cvflann_Index.mem_funs(t):
        z._transformer_kwds['alias'] = t
    z = cvflann_Index.mem_fun(lambda x: x.name==t and 'vector' in x.decl_string)
    z._transformer_creators.append(FT.arg_output('indices'))
    z._transformer_creators.append(FT.arg_output('dists'))
sb.finalize_class(cvflann_Index)

# IndexParams
sb.mb.class_('IndexParams').include()

# IndexFactory classes
for name in (
    'IndexFactory',
    'LinearIndexParams', 'KDTreeIndexParams', 'KMeansIndexParams',
    'CompositeIndexParams', 'AutotunedIndexParams', 'SavedIndexParams', 
    ):
    z = sb.mb.class_(name)
    sb.init_class(z)
    FT.expose_func(z.mem_fun('createIndex'))
예제 #6
0
# TODO: fix the rest of the member declarations
z = sb.mb.class_('CvFuzzyController')
z.include()
z.decls().exclude()

# CvFuzzyMeanShiftTracker
# TODO: fix the rest of the member declarations
z = sb.mb.class_('CvFuzzyMeanShiftTracker')
z.include()
z.decls().exclude()

# Octree
z = sb.mb.class_('Octree')
sb.init_class(z)
z.mem_fun('getPointsWithinSphere')._transformer_creators.append(
    FT.arg_output('points'))
sb.finalize_class(z)

# Octree::Node
z = z.class_('Node')
sb.init_class(z)
sb.finalize_class(z)
sb.expose_class_vector('cv::Octree::Node', 'vector_Octree_Node')

# Mesh3D
z = sb.mb.class_('Mesh3D')
sb.init_class(z)
sb.finalize_class(z)

# SpinImageModel
z = sb.mb.class_('SpinImageModel')
예제 #7
0
# findNearest
for t in z.mem_funs('findNearest'):
    if not 'vector' in t.partial_decl_string:
        t.exclude()
    t._transformer_creators.extend([FT.input_array1d('vec'), FT.output_type1('neighborsIdx'),
        FT.output_type1('neighbors'), FT.output_type1('dist')])
    t._transformer_kwds['alias'] = 'findNearest'
# findOrthoRange
z.mem_fun('findOrthoRange')._transformer_creators.extend([
    FT.input_array1d('minBounds'), FT.input_array1d('maxBounds'),
    FT.output_type1('neighborsIdx'), FT.output_type1('neighbors')])
# getPoints
for t in z.mem_funs('getPoints'):
    if t.arguments[0].name=='idx':
        t._transformer_creators.append(FT.input_array1d('idx', 'nidx'))
    t._transformer_creators.append(FT.arg_output('pts'))
    t._transformer_kwds['alias'] = 'getPoints'
# getPoint
z.mem_fun('getPoint').exclude()
# get_support_vector
z.add_declaration_code('''
sdcpp::ndarray KDTree_getPoint(bp::object const &bpinst, int i) {
    cv::KDTree const &inst = bp::extract<cv::KDTree const &>(bpinst);
    sdcpp::ndarray result = sdcpp::new_ndarray1d(inst.points.cols, NPY_FLOAT, 
        (void *)inst.getPoint(i));
    bp::objects::make_nurse_and_patient(result.get_obj().ptr(), bpinst.ptr());
    return result;
}
''')
z.mem_fun('getPoint').exclude()
z.add_registration_code('def( "getPoint", &KDTree_getPoint, (bp::arg("ptidx")) )')
예제 #8
0
z = sb.mb.class_('KalmanFilter')
z.include()
for t in ('predict', 'correct'):
    z.mem_fun(t).call_policies = CP.return_self()

# FeatureEvaluator
z = sb.mb.class_('FeatureEvaluator')
sb.init_class(z)
sb.finalize_class(z)
sb.expose_class_Ptr('FeatureEvaluator', 'cv')

# CascadeClassifier
z = sb.mb.class_('CascadeClassifier')
sb.init_class(z)
z.mem_fun('detectMultiScale')._transformer_creators.append(
    FT.arg_output('objects'))
sb.register_ti('CvHaarClassifierCascade')
sb.expose_class_Ptr('CvHaarClassifierCascade')
# modify runAt() and setImage() -- I need them able to support old cascade
z.mem_fun('runAt').exclude()
z.mem_fun('setImage').exclude()
z.add_wrapper_code('''
    
    cv::Mat sum, tilted, sqsum;
    CvMat _sum, _sqsum, _tilted;
    
    int my_runAt( cv::Ptr<cv::FeatureEvaluator> &_feval, const cv::Point &pt )
    {
        if( !oldCascade.empty() )
            return cvRunHaarClassifierCascade(oldCascade, pt, 0);
            
예제 #9
0
# KalmanFilter
z = sb.mb.class_('KalmanFilter')
z.include()
for t in ('predict', 'correct'):
    z.mem_fun(t).call_policies = CP.return_self()

# FeatureEvaluator
z = sb.mb.class_('FeatureEvaluator')
sb.init_class(z)
sb.finalize_class(z)
sb.expose_class_Ptr('FeatureEvaluator', 'cv')

# CascadeClassifier
z = sb.mb.class_('CascadeClassifier')
sb.init_class(z)
z.mem_fun('detectMultiScale')._transformer_creators.append(FT.arg_output('objects'))
sb.register_ti('CvHaarClassifierCascade')
sb.expose_class_Ptr('CvHaarClassifierCascade')
# modify runAt() and setImage() -- I need them able to support old cascade
z.mem_fun('runAt').exclude()
z.mem_fun('setImage').exclude()
z.add_wrapper_code('''
    
    cv::Mat sum, tilted, sqsum;
    CvMat _sum, _sqsum, _tilted;
    
    int my_runAt( cv::Ptr<cv::FeatureEvaluator> &_feval, const cv::Point &pt )
    {
        if( !oldCascade.empty() )
            return cvRunHaarClassifierCascade(oldCascade, pt, 0);
            
예제 #10
0
# Basic GUI functions 
sb.cc.write('''
#-----------------------------------------------------------------------------
# C++ Interface
#-----------------------------------------------------------------------------

''')

# functions
for z in (
    'namedWindow', 'imshow', 'imread', 'imwrite', 'imencode', 'imdecode', 'waitKey',
    'setWindowProperty', 'getWindowProperty', 'getTrackbarPos', 'setTrackbarPos',
    ):
    sb.mb.free_fun(z).include()
    
sb.mb.free_fun('imencode')._transformer_creators.append(FT.arg_output('buf'))
    
# createTrackbar
z = sb.mb.free_fun('createTrackbar')
FT.expose_func(z, return_pointee=False, transformer_creators=[
    FT.trackbar_callback2_func('onChange', 'userdata'), FT.from_address('value')])
FT.add_underscore(z)
sb.cc.write('''
def createTrackbar(trackbar_name, window_name, value, count, on_change=None, userdata=None):
    if not isinstance(value, _CT.c_int):
        value = _CT.c_int(value)

    result, z = _ext._createTrackbar(trackbar_name, window_name, _CT.addressof(value), count, on_change, userdata=userdata)
    if result:
        cb_key = 'tracker-' + trackbar_name
        _windows_callbacks.setdefault(window_name,{})[cb_key] = z