/* Generated by Cython 0.29.14 */
# define PY_SSIZE_T_CLEAN
# include "Python.h"
# ifndef Py_PYTHON_H
# error Python headers needed to compile C extensions, please install development version of Python.
# elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
# error Cython requires Python 2.6+ or Python 3.3+.
# else
# define CYTHON_ABI "0_29_14"
# define CYTHON_HEX_VERSION 0x001D0EF0
# define CYTHON_FUTURE_DIVISION 0
# include <stddef.h>
# ifndef offsetof
# define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
# endif
# if !defined(WIN32) && !defined(MS_WINDOWS)
# ifndef __stdcall
# define __stdcall
# endif
# ifndef __cdecl
# define __cdecl
# endif
# ifndef __fastcall
# define __fastcall
# endif
# endif
# ifndef DL_IMPORT
# define DL_IMPORT(t) t
# endif
# ifndef DL_EXPORT
# define DL_EXPORT(t) t
# endif
# define __PYX_COMMA ,
# ifndef HAVE_LONG_LONG
# if PY_VERSION_HEX >= 0x02070000
# define HAVE_LONG_LONG
# endif
# endif
# ifndef PY_LONG_LONG
# define PY_LONG_LONG LONG_LONG
# endif
# ifndef Py_HUGE_VAL
# define Py_HUGE_VAL HUGE_VAL
# endif
# ifdef PYPY_VERSION
# define CYTHON_COMPILING_IN_PYPY 1
# define CYTHON_COMPILING_IN_PYSTON 0
# define CYTHON_COMPILING_IN_CPYTHON 0
# undef CYTHON_USE_TYPE_SLOTS
# define CYTHON_USE_TYPE_SLOTS 0
# undef CYTHON_USE_PYTYPE_LOOKUP
# define CYTHON_USE_PYTYPE_LOOKUP 0
# if PY_VERSION_HEX < 0x03050000
# undef CYTHON_USE_ASYNC_SLOTS
# define CYTHON_USE_ASYNC_SLOTS 0
# elif !defined(CYTHON_USE_ASYNC_SLOTS)
# define CYTHON_USE_ASYNC_SLOTS 1
# endif
# undef CYTHON_USE_PYLIST_INTERNALS
# define CYTHON_USE_PYLIST_INTERNALS 0
# undef CYTHON_USE_UNICODE_INTERNALS
# define CYTHON_USE_UNICODE_INTERNALS 0
# undef CYTHON_USE_UNICODE_WRITER
# define CYTHON_USE_UNICODE_WRITER 0
# undef CYTHON_USE_PYLONG_INTERNALS
# define CYTHON_USE_PYLONG_INTERNALS 0
# undef CYTHON_AVOID_BORROWED_REFS
# define CYTHON_AVOID_BORROWED_REFS 1
# undef CYTHON_ASSUME_SAFE_MACROS
# define CYTHON_ASSUME_SAFE_MACROS 0
# undef CYTHON_UNPACK_METHODS
# define CYTHON_UNPACK_METHODS 0
# undef CYTHON_FAST_THREAD_STATE
# define CYTHON_FAST_THREAD_STATE 0
# undef CYTHON_FAST_PYCALL
# define CYTHON_FAST_PYCALL 0
# undef CYTHON_PEP489_MULTI_PHASE_INIT
# define CYTHON_PEP489_MULTI_PHASE_INIT 0
# undef CYTHON_USE_TP_FINALIZE
# define CYTHON_USE_TP_FINALIZE 0
# undef CYTHON_USE_DICT_VERSIONS
# define CYTHON_USE_DICT_VERSIONS 0
# undef CYTHON_USE_EXC_INFO_STACK
# define CYTHON_USE_EXC_INFO_STACK 0
# elif defined(PYSTON_VERSION)
# define CYTHON_COMPILING_IN_PYPY 0
# define CYTHON_COMPILING_IN_PYSTON 1
# define CYTHON_COMPILING_IN_CPYTHON 0
# ifndef CYTHON_USE_TYPE_SLOTS
# define CYTHON_USE_TYPE_SLOTS 1
# endif
# undef CYTHON_USE_PYTYPE_LOOKUP
# define CYTHON_USE_PYTYPE_LOOKUP 0
# undef CYTHON_USE_ASYNC_SLOTS
# define CYTHON_USE_ASYNC_SLOTS 0
# undef CYTHON_USE_PYLIST_INTERNALS
# define CYTHON_USE_PYLIST_INTERNALS 0
# ifndef CYTHON_USE_UNICODE_INTERNALS
# define CYTHON_USE_UNICODE_INTERNALS 1
# endif
# undef CYTHON_USE_UNICODE_WRITER
# define CYTHON_USE_UNICODE_WRITER 0
# undef CYTHON_USE_PYLONG_INTERNALS
# define CYTHON_USE_PYLONG_INTERNALS 0
# ifndef CYTHON_AVOID_BORROWED_REFS
# define CYTHON_AVOID_BORROWED_REFS 0
# endif
# ifndef CYTHON_ASSUME_SAFE_MACROS
# define CYTHON_ASSUME_SAFE_MACROS 1
# endif
# ifndef CYTHON_UNPACK_METHODS
# define CYTHON_UNPACK_METHODS 1
# endif
# undef CYTHON_FAST_THREAD_STATE
# define CYTHON_FAST_THREAD_STATE 0
# undef CYTHON_FAST_PYCALL
# define CYTHON_FAST_PYCALL 0
# undef CYTHON_PEP489_MULTI_PHASE_INIT
# define CYTHON_PEP489_MULTI_PHASE_INIT 0
# undef CYTHON_USE_TP_FINALIZE
# define CYTHON_USE_TP_FINALIZE 0
# undef CYTHON_USE_DICT_VERSIONS
# define CYTHON_USE_DICT_VERSIONS 0
# undef CYTHON_USE_EXC_INFO_STACK
# define CYTHON_USE_EXC_INFO_STACK 0
# else
# define CYTHON_COMPILING_IN_PYPY 0
# define CYTHON_COMPILING_IN_PYSTON 0
# define CYTHON_COMPILING_IN_CPYTHON 1
# ifndef CYTHON_USE_TYPE_SLOTS
# define CYTHON_USE_TYPE_SLOTS 1
# endif
# if PY_VERSION_HEX < 0x02070000
# undef CYTHON_USE_PYTYPE_LOOKUP
# define CYTHON_USE_PYTYPE_LOOKUP 0
# elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
# define CYTHON_USE_PYTYPE_LOOKUP 1
# endif
# if PY_MAJOR_VERSION < 3
# undef CYTHON_USE_ASYNC_SLOTS
# define CYTHON_USE_ASYNC_SLOTS 0
# elif !defined(CYTHON_USE_ASYNC_SLOTS)
# define CYTHON_USE_ASYNC_SLOTS 1
# endif
# if PY_VERSION_HEX < 0x02070000
# undef CYTHON_USE_PYLONG_INTERNALS
# define CYTHON_USE_PYLONG_INTERNALS 0
# elif !defined(CYTHON_USE_PYLONG_INTERNALS)
# define CYTHON_USE_PYLONG_INTERNALS 1
# endif
# ifndef CYTHON_USE_PYLIST_INTERNALS
# define CYTHON_USE_PYLIST_INTERNALS 1
# endif
# ifndef CYTHON_USE_UNICODE_INTERNALS
# define CYTHON_USE_UNICODE_INTERNALS 1
# endif
# if PY_VERSION_HEX < 0x030300F0
# undef CYTHON_USE_UNICODE_WRITER
# define CYTHON_USE_UNICODE_WRITER 0
# elif !defined(CYTHON_USE_UNICODE_WRITER)
# define CYTHON_USE_UNICODE_WRITER 1
# endif
# ifndef CYTHON_AVOID_BORROWED_REFS
# define CYTHON_AVOID_BORROWED_REFS 0
# endif
# ifndef CYTHON_ASSUME_SAFE_MACROS
# define CYTHON_ASSUME_SAFE_MACROS 1
# endif
# ifndef CYTHON_UNPACK_METHODS
# define CYTHON_UNPACK_METHODS 1
# endif
# ifndef CYTHON_FAST_THREAD_STATE
# define CYTHON_FAST_THREAD_STATE 1
# endif
# ifndef CYTHON_FAST_PYCALL
# define CYTHON_FAST_PYCALL 1
# endif
# ifndef CYTHON_PEP489_MULTI_PHASE_INIT
# define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
# endif
# ifndef CYTHON_USE_TP_FINALIZE
# define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
# endif
# ifndef CYTHON_USE_DICT_VERSIONS
# define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
# endif
# ifndef CYTHON_USE_EXC_INFO_STACK
# define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
# endif
# endif
# if !defined(CYTHON_FAST_PYCCALL)
# define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
# endif
# if CYTHON_USE_PYLONG_INTERNALS
# include "longintrepr.h"
# undef SHIFT
# undef BASE
# undef MASK
# ifdef SIZEOF_VOID_P
enum { __pyx_check_sizeof_voidp = 1 / ( int ) ( SIZEOF_VOID_P = = sizeof ( void * ) ) } ;
# endif
# endif
# ifndef __has_attribute
# define __has_attribute(x) 0
# endif
# ifndef __has_cpp_attribute
# define __has_cpp_attribute(x) 0
# endif
# ifndef CYTHON_RESTRICT
# if defined(__GNUC__)
# define CYTHON_RESTRICT __restrict__
# elif defined(_MSC_VER) && _MSC_VER >= 1400
# define CYTHON_RESTRICT __restrict
# elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
# define CYTHON_RESTRICT restrict
# else
# define CYTHON_RESTRICT
# endif
# endif
# ifndef CYTHON_UNUSED
# if defined(__GNUC__)
# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
# define CYTHON_UNUSED __attribute__ ((__unused__))
# else
# define CYTHON_UNUSED
# endif
# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
# define CYTHON_UNUSED __attribute__ ((__unused__))
# else
# define CYTHON_UNUSED
# endif
# endif
# ifndef CYTHON_MAYBE_UNUSED_VAR
# if defined(__cplusplus)
template < class T > void CYTHON_MAYBE_UNUSED_VAR ( const T & ) { }
# else
# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
# endif
# endif
# ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
# define CYTHON_NCP_UNUSED
# else
# define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
# endif
# define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
# ifdef _MSC_VER
# ifndef _MSC_STDINT_H_
# if _MSC_VER < 1300
typedef unsigned char uint8_t ;
typedef unsigned int uint32_t ;
# else
typedef unsigned __int8 uint8_t ;
typedef unsigned __int32 uint32_t ;
# endif
# endif
# else
# include <stdint.h>
# endif
# ifndef CYTHON_FALLTHROUGH
# if defined(__cplusplus) && __cplusplus >= 201103L
# if __has_cpp_attribute(fallthrough)
# define CYTHON_FALLTHROUGH [[fallthrough]]
# elif __has_cpp_attribute(clang::fallthrough)
# define CYTHON_FALLTHROUGH [[clang::fallthrough]]
# elif __has_cpp_attribute(gnu::fallthrough)
# define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
# endif
# endif
# ifndef CYTHON_FALLTHROUGH
# if __has_attribute(fallthrough)
# define CYTHON_FALLTHROUGH __attribute__((fallthrough))
# else
# define CYTHON_FALLTHROUGH
# endif
# endif
# if defined(__clang__ ) && defined(__apple_build_version__)
# if __apple_build_version__ < 7000000
# undef CYTHON_FALLTHROUGH
# define CYTHON_FALLTHROUGH
# endif
# endif
# endif
# ifndef CYTHON_INLINE
# if defined(__clang__)
# define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
# elif defined(__GNUC__)
# define CYTHON_INLINE __inline__
# elif defined(_MSC_VER)
# define CYTHON_INLINE __inline
# elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
# define CYTHON_INLINE inline
# else
# define CYTHON_INLINE
# endif
# endif
# if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
# define Py_OptimizeFlag 0
# endif
# define __PYX_BUILD_PY_SSIZE_T "n"
# define CYTHON_FORMAT_SSIZE_T "z"
# if PY_MAJOR_VERSION < 3
# define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
# define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
PyCode_New ( a + k , l , s , f , code , c , n , v , fv , cell , fn , name , fline , lnos )
# define __Pyx_DefaultClassType PyClass_Type
# else
# define __Pyx_BUILTIN_MODULE_NAME "builtins"
# if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
# define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
PyCode_New ( a , 0 , k , l , s , f , code , c , n , v , fv , cell , fn , name , fline , lnos )
# else
# define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
PyCode_New ( a , k , l , s , f , code , c , n , v , fv , cell , fn , name , fline , lnos )
# endif
# define __Pyx_DefaultClassType PyType_Type
# endif
# ifndef Py_TPFLAGS_CHECKTYPES
# define Py_TPFLAGS_CHECKTYPES 0
# endif
# ifndef Py_TPFLAGS_HAVE_INDEX
# define Py_TPFLAGS_HAVE_INDEX 0
# endif
# ifndef Py_TPFLAGS_HAVE_NEWBUFFER
# define Py_TPFLAGS_HAVE_NEWBUFFER 0
# endif
# ifndef Py_TPFLAGS_HAVE_FINALIZE
# define Py_TPFLAGS_HAVE_FINALIZE 0
# endif
# ifndef METH_STACKLESS
# define METH_STACKLESS 0
# endif
# if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
# ifndef METH_FASTCALL
# define METH_FASTCALL 0x80
# endif
typedef PyObject * ( * __Pyx_PyCFunctionFast ) ( PyObject * self , PyObject * const * args , Py_ssize_t nargs ) ;
typedef PyObject * ( * __Pyx_PyCFunctionFastWithKeywords ) ( PyObject * self , PyObject * const * args ,
Py_ssize_t nargs , PyObject * kwnames ) ;
# else
# define __Pyx_PyCFunctionFast _PyCFunctionFast
# define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
# endif
# if CYTHON_FAST_PYCCALL
# define __Pyx_PyFastCFunction_Check(func)\
( ( PyCFunction_Check ( func ) & & ( METH_FASTCALL = = ( PyCFunction_GET_FLAGS ( func ) & ~ ( METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS ) ) ) ) )
# else
# define __Pyx_PyFastCFunction_Check(func) 0
# endif
# if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
# define PyObject_Malloc(s) PyMem_Malloc(s)
# define PyObject_Free(p) PyMem_Free(p)
# define PyObject_Realloc(p) PyMem_Realloc(p)
# endif
# if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
# define PyMem_RawMalloc(n) PyMem_Malloc(n)
# define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
# define PyMem_RawFree(p) PyMem_Free(p)
# endif
# if CYTHON_COMPILING_IN_PYSTON
# define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
# define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
# else
# define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
# define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
# endif
# if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
# define __Pyx_PyThreadState_Current PyThreadState_GET()
# elif PY_VERSION_HEX >= 0x03060000
# define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
# elif PY_VERSION_HEX >= 0x03000000
# define __Pyx_PyThreadState_Current PyThreadState_GET()
# else
# define __Pyx_PyThreadState_Current _PyThreadState_Current
# endif
# if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
# include "pythread.h"
# define Py_tss_NEEDS_INIT 0
typedef int Py_tss_t ;
static CYTHON_INLINE int PyThread_tss_create ( Py_tss_t * key ) {
* key = PyThread_create_key ( ) ;
return 0 ;
}
static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc ( void ) {
Py_tss_t * key = ( Py_tss_t * ) PyObject_Malloc ( sizeof ( Py_tss_t ) ) ;
* key = Py_tss_NEEDS_INIT ;
return key ;
}
static CYTHON_INLINE void PyThread_tss_free ( Py_tss_t * key ) {
PyObject_Free ( key ) ;
}
static CYTHON_INLINE int PyThread_tss_is_created ( Py_tss_t * key ) {
return * key ! = Py_tss_NEEDS_INIT ;
}
static CYTHON_INLINE void PyThread_tss_delete ( Py_tss_t * key ) {
PyThread_delete_key ( * key ) ;
* key = Py_tss_NEEDS_INIT ;
}
static CYTHON_INLINE int PyThread_tss_set ( Py_tss_t * key , void * value ) {
return PyThread_set_key_value ( * key , value ) ;
}
static CYTHON_INLINE void * PyThread_tss_get ( Py_tss_t * key ) {
return PyThread_get_key_value ( * key ) ;
}
# endif
# if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
# define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
# else
# define __Pyx_PyDict_NewPresized(n) PyDict_New()
# endif
# if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
# define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
# define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
# else
# define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
# define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
# endif
# if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
# define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
# else
# define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name)
# endif
# if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
# define CYTHON_PEP393_ENABLED 1
# define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
0 : _PyUnicode_Ready ( ( PyObject * ) ( op ) ) )
# define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
# define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
# define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
# define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u)
# define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
# define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
# define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
# define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
# else
# define CYTHON_PEP393_ENABLED 0
# define PyUnicode_1BYTE_KIND 1
# define PyUnicode_2BYTE_KIND 2
# define PyUnicode_4BYTE_KIND 4
# define __Pyx_PyUnicode_READY(op) (0)
# define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
# define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
# define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
# define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE))
# define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
# define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
# define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
# define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u))
# endif
# if CYTHON_COMPILING_IN_PYPY
# define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
# define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
# else
# define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
# define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
PyNumber_Add ( a , b ) : __Pyx_PyUnicode_Concat ( a , b ) )
# endif
# if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
# define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
# endif
# if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
# define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
# endif
# if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
# define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
# endif
# define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
# define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
# if PY_MAJOR_VERSION >= 3
# define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
# else
# define __Pyx_PyString_Format(a, b) PyString_Format(a, b)
# endif
# if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
# define PyObject_ASCII(o) PyObject_Repr(o)
# endif
# if PY_MAJOR_VERSION >= 3
# define PyBaseString_Type PyUnicode_Type
# define PyStringObject PyUnicodeObject
# define PyString_Type PyUnicode_Type
# define PyString_Check PyUnicode_Check
# define PyString_CheckExact PyUnicode_CheckExact
# define PyObject_Unicode PyObject_Str
# endif
# if PY_MAJOR_VERSION >= 3
# define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
# define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
# else
# define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
# define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
# endif
# ifndef PySet_CheckExact
# define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)
# endif
# if CYTHON_ASSUME_SAFE_MACROS
# define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq)
# else
# define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq)
# endif
# if PY_MAJOR_VERSION >= 3
# define PyIntObject PyLongObject
# define PyInt_Type PyLong_Type
# define PyInt_Check(op) PyLong_Check(op)
# define PyInt_CheckExact(op) PyLong_CheckExact(op)
# define PyInt_FromString PyLong_FromString
# define PyInt_FromUnicode PyLong_FromUnicode
# define PyInt_FromLong PyLong_FromLong
# define PyInt_FromSize_t PyLong_FromSize_t
# define PyInt_FromSsize_t PyLong_FromSsize_t
# define PyInt_AsLong PyLong_AsLong
# define PyInt_AS_LONG PyLong_AS_LONG
# define PyInt_AsSsize_t PyLong_AsSsize_t
# define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
# define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
# define PyNumber_Int PyNumber_Long
# endif
# if PY_MAJOR_VERSION >= 3
# define PyBoolObject PyLongObject
# endif
# if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
# ifndef PyUnicode_InternFromString
# define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
# endif
# endif
# if PY_VERSION_HEX < 0x030200A4
typedef long Py_hash_t ;
# define __Pyx_PyInt_FromHash_t PyInt_FromLong
# define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t
# else
# define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
# define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t
# endif
# if PY_MAJOR_VERSION >= 3
# define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func))
# else
# define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
# endif
# if CYTHON_USE_ASYNC_SLOTS
# if PY_VERSION_HEX >= 0x030500B1
# define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
# define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
# else
# define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
# endif
# else
# define __Pyx_PyType_AsAsync(obj) NULL
# endif
# ifndef __Pyx_PyAsyncMethodsStruct
typedef struct {
unaryfunc am_await ;
unaryfunc am_aiter ;
unaryfunc am_anext ;
} __Pyx_PyAsyncMethodsStruct ;
# endif
# if defined(WIN32) || defined(MS_WINDOWS)
# define _USE_MATH_DEFINES
# endif
# include <math.h>
# ifdef NAN
# define __PYX_NAN() ((float) NAN)
# else
static CYTHON_INLINE float __PYX_NAN ( ) {
float value ;
memset ( & value , 0xFF , sizeof ( value ) ) ;
return value ;
}
# endif
# if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
# define __Pyx_truncl trunc
# else
# define __Pyx_truncl truncl
# endif
# define __PYX_ERR(f_index, lineno, Ln_error) \
{ \
__pyx_filename = __pyx_f [ f_index ] ; __pyx_lineno = lineno ; __pyx_clineno = __LINE__ ; goto Ln_error ; \
}
# ifndef __PYX_EXTERN_C
# ifdef __cplusplus
# define __PYX_EXTERN_C extern "C"
# else
# define __PYX_EXTERN_C extern
# endif
# endif
# define __PYX_HAVE__detect
# define __PYX_HAVE_API__detect
/* Early includes */
# ifdef _OPENMP
# include <omp.h>
# endif /* _OPENMP */
# if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
# define CYTHON_WITHOUT_ASSERTIONS
# endif
typedef struct { PyObject * * p ; const char * s ; const Py_ssize_t n ; const char * encoding ;
const char is_unicode ; const char is_str ; const char intern ; } __Pyx_StringTabEntry ;
# define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
# define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
# define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
# define __PYX_DEFAULT_STRING_ENCODING ""
# define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
# define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
# define __Pyx_uchar_cast(c) ((unsigned char)c)
# define __Pyx_long_cast(x) ((long)x)
# define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
( sizeof ( type ) < sizeof ( Py_ssize_t ) ) | | \
( sizeof ( type ) > sizeof ( Py_ssize_t ) & & \
likely ( v < ( type ) PY_SSIZE_T_MAX | | \
v = = ( type ) PY_SSIZE_T_MAX ) & & \
( ! is_signed | | likely ( v > ( type ) PY_SSIZE_T_MIN | | \
v = = ( type ) PY_SSIZE_T_MIN ) ) ) | | \
( sizeof ( type ) = = sizeof ( Py_ssize_t ) & & \
( is_signed | | likely ( v < ( type ) PY_SSIZE_T_MAX | | \
v = = ( type ) PY_SSIZE_T_MAX ) ) ) )
static CYTHON_INLINE int __Pyx_is_valid_index ( Py_ssize_t i , Py_ssize_t limit ) {
return ( size_t ) i < ( size_t ) limit ;
}
# if defined (__cplusplus) && __cplusplus >= 201103L
# include <cstdlib>
# define __Pyx_sst_abs(value) std::abs(value)
# elif SIZEOF_INT >= SIZEOF_SIZE_T
# define __Pyx_sst_abs(value) abs(value)
# elif SIZEOF_LONG >= SIZEOF_SIZE_T
# define __Pyx_sst_abs(value) labs(value)
# elif defined (_MSC_VER)
# define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
# elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
# define __Pyx_sst_abs(value) llabs(value)
# elif defined (__GNUC__)
# define __Pyx_sst_abs(value) __builtin_llabs(value)
# else
# define __Pyx_sst_abs(value) ((value<0) ? -value : value)
# endif
static CYTHON_INLINE const char * __Pyx_PyObject_AsString ( PyObject * ) ;
static CYTHON_INLINE const char * __Pyx_PyObject_AsStringAndSize ( PyObject * , Py_ssize_t * length ) ;
# define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
# define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
# define __Pyx_PyBytes_FromString PyBytes_FromString
# define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
static CYTHON_INLINE PyObject * __Pyx_PyUnicode_FromString ( const char * ) ;
# if PY_MAJOR_VERSION < 3
# define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
# define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
# else
# define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
# define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
# endif
# define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s))
# define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s))
# define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s))
# define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s))
# define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s))
# define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s))
# define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s))
# define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s))
# define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))
# define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s))
# define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s))
# define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
# define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
# define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
# define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
# define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen ( const Py_UNICODE * u ) {
const Py_UNICODE * u_end = u ;
while ( * u_end + + ) ;
return ( size_t ) ( u_end - u - 1 ) ;
}
# define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
# define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
# define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
# define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
# define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong ( long b ) ;
static CYTHON_INLINE int __Pyx_PyObject_IsTrue ( PyObject * ) ;
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref ( PyObject * ) ;
static CYTHON_INLINE PyObject * __Pyx_PyNumber_IntOrLong ( PyObject * x ) ;
# define __Pyx_PySequence_Tuple(obj)\
( likely ( PyTuple_CheckExact ( obj ) ) ? __Pyx_NewRef ( obj ) : PySequence_Tuple ( obj ) )
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t ( PyObject * ) ;
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t ( size_t ) ;
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t ( PyObject * ) ;
# if CYTHON_ASSUME_SAFE_MACROS
# define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
# else
# define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
# endif
# define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
# if PY_MAJOR_VERSION >= 3
# define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
# else
# define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
# endif
# define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
# if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
static int __Pyx_sys_getdefaultencoding_not_ascii ;
static int __Pyx_init_sys_getdefaultencoding_params ( void ) {
PyObject * sys ;
PyObject * default_encoding = NULL ;
PyObject * ascii_chars_u = NULL ;
PyObject * ascii_chars_b = NULL ;
const char * default_encoding_c ;
sys = PyImport_ImportModule ( " sys " ) ;
if ( ! sys ) goto bad ;
default_encoding = PyObject_CallMethod ( sys , ( char * ) " getdefaultencoding " , NULL ) ;
Py_DECREF ( sys ) ;
if ( ! default_encoding ) goto bad ;
default_encoding_c = PyBytes_AsString ( default_encoding ) ;
if ( ! default_encoding_c ) goto bad ;
if ( strcmp ( default_encoding_c , " ascii " ) = = 0 ) {
__Pyx_sys_getdefaultencoding_not_ascii = 0 ;
} else {
char ascii_chars [ 128 ] ;
int c ;
for ( c = 0 ; c < 128 ; c + + ) {
ascii_chars [ c ] = c ;
}
__Pyx_sys_getdefaultencoding_not_ascii = 1 ;
ascii_chars_u = PyUnicode_DecodeASCII ( ascii_chars , 128 , NULL ) ;
if ( ! ascii_chars_u ) goto bad ;
ascii_chars_b = PyUnicode_AsEncodedString ( ascii_chars_u , default_encoding_c , NULL ) ;
if ( ! ascii_chars_b | | ! PyBytes_Check ( ascii_chars_b ) | | memcmp ( ascii_chars , PyBytes_AS_STRING ( ascii_chars_b ) , 128 ) ! = 0 ) {
PyErr_Format (
PyExc_ValueError ,
" This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii. " ,
default_encoding_c ) ;
goto bad ;
}
Py_DECREF ( ascii_chars_u ) ;
Py_DECREF ( ascii_chars_b ) ;
}
Py_DECREF ( default_encoding ) ;
return 0 ;
bad :
Py_XDECREF ( default_encoding ) ;
Py_XDECREF ( ascii_chars_u ) ;
Py_XDECREF ( ascii_chars_b ) ;
return - 1 ;
}
# endif
# if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
# define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
# else
# define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
# if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
static char * __PYX_DEFAULT_STRING_ENCODING ;
static int __Pyx_init_sys_getdefaultencoding_params ( void ) {
PyObject * sys ;
PyObject * default_encoding = NULL ;
char * default_encoding_c ;
sys = PyImport_ImportModule ( " sys " ) ;
if ( ! sys ) goto bad ;
default_encoding = PyObject_CallMethod ( sys , ( char * ) ( const char * ) " getdefaultencoding " , NULL ) ;
Py_DECREF ( sys ) ;
if ( ! default_encoding ) goto bad ;
default_encoding_c = PyBytes_AsString ( default_encoding ) ;
if ( ! default_encoding_c ) goto bad ;
__PYX_DEFAULT_STRING_ENCODING = ( char * ) malloc ( strlen ( default_encoding_c ) + 1 ) ;
if ( ! __PYX_DEFAULT_STRING_ENCODING ) goto bad ;
strcpy ( __PYX_DEFAULT_STRING_ENCODING , default_encoding_c ) ;
Py_DECREF ( default_encoding ) ;
return 0 ;
bad :
Py_XDECREF ( default_encoding ) ;
return - 1 ;
}
# endif
# endif
/* Test for GCC > 2.95 */
# if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
# define likely(x) __builtin_expect(!!(x), 1)
# define unlikely(x) __builtin_expect(!!(x), 0)
# else /* !__GNUC__ or GCC < 2.95 */
# define likely(x) (x)
# define unlikely(x) (x)
# endif /* __GNUC__ */
static CYTHON_INLINE void __Pyx_pretend_to_initialize ( void * ptr ) { ( void ) ptr ; }
static PyObject * __pyx_m = NULL ;
static PyObject * __pyx_d ;
static PyObject * __pyx_b ;
static PyObject * __pyx_cython_runtime = NULL ;
static PyObject * __pyx_empty_tuple ;
static PyObject * __pyx_empty_bytes ;
static PyObject * __pyx_empty_unicode ;
static int __pyx_lineno ;
static int __pyx_clineno = 0 ;
static const char * __pyx_cfilenm = __FILE__ ;
static const char * __pyx_filename ;
static const char * __pyx_f [ ] = {
" detect.py " ,
} ;
/*--- Type declarations ---*/
/* --- Runtime support code (head) --- */
/* Refnanny.proto */
# ifndef CYTHON_REFNANNY
# define CYTHON_REFNANNY 0
# endif
# if CYTHON_REFNANNY
typedef struct {
void ( * INCREF ) ( void * , PyObject * , int ) ;
void ( * DECREF ) ( void * , PyObject * , int ) ;
void ( * GOTREF ) ( void * , PyObject * , int ) ;
void ( * GIVEREF ) ( void * , PyObject * , int ) ;
void * ( * SetupContext ) ( const char * , int , const char * ) ;
void ( * FinishContext ) ( void * * ) ;
} __Pyx_RefNannyAPIStruct ;
static __Pyx_RefNannyAPIStruct * __Pyx_RefNanny = NULL ;
static __Pyx_RefNannyAPIStruct * __Pyx_RefNannyImportAPI ( const char * modname ) ;
# define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
# ifdef WITH_THREAD
# define __Pyx_RefNannySetupContext(name, acquire_gil)\
if ( acquire_gil ) { \
PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure ( ) ; \
__pyx_refnanny = __Pyx_RefNanny - > SetupContext ( ( name ) , __LINE__ , __FILE__ ) ; \
PyGILState_Release ( __pyx_gilstate_save ) ; \
} else { \
__pyx_refnanny = __Pyx_RefNanny - > SetupContext ( ( name ) , __LINE__ , __FILE__ ) ; \
}
# else
# define __Pyx_RefNannySetupContext(name, acquire_gil)\
__pyx_refnanny = __Pyx_RefNanny - > SetupContext ( ( name ) , __LINE__ , __FILE__ )
# endif
# define __Pyx_RefNannyFinishContext()\
__Pyx_RefNanny - > FinishContext ( & __pyx_refnanny )
# define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
# define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
# define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
# define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
# define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
# define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
# define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
# define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
# else
# define __Pyx_RefNannyDeclarations
# define __Pyx_RefNannySetupContext(name, acquire_gil)
# define __Pyx_RefNannyFinishContext()
# define __Pyx_INCREF(r) Py_INCREF(r)
# define __Pyx_DECREF(r) Py_DECREF(r)
# define __Pyx_GOTREF(r)
# define __Pyx_GIVEREF(r)
# define __Pyx_XINCREF(r) Py_XINCREF(r)
# define __Pyx_XDECREF(r) Py_XDECREF(r)
# define __Pyx_XGOTREF(r)
# define __Pyx_XGIVEREF(r)
# endif
# define __Pyx_XDECREF_SET(r, v) do {\
PyObject * tmp = ( PyObject * ) r ; \
r = v ; __Pyx_XDECREF ( tmp ) ; \
} while ( 0 )
# define __Pyx_DECREF_SET(r, v) do {\
PyObject * tmp = ( PyObject * ) r ; \
r = v ; __Pyx_DECREF ( tmp ) ; \
} while ( 0 )
# define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
# define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
/* PyObjectGetAttrStr.proto */
# if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject * __Pyx_PyObject_GetAttrStr ( PyObject * obj , PyObject * attr_name ) ;
# else
# define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
# endif
/* GetBuiltinName.proto */
static PyObject * __Pyx_GetBuiltinName ( PyObject * name ) ;
/* RaiseArgTupleInvalid.proto */
static void __Pyx_RaiseArgtupleInvalid ( const char * func_name , int exact ,
Py_ssize_t num_min , Py_ssize_t num_max , Py_ssize_t num_found ) ;
/* RaiseDoubleKeywords.proto */
static void __Pyx_RaiseDoubleKeywordsError ( const char * func_name , PyObject * kw_name ) ;
/* ParseKeywords.proto */
static int __Pyx_ParseOptionalKeywords ( PyObject * kwds , PyObject * * argnames [ ] , \
PyObject * kwds2 , PyObject * values [ ] , Py_ssize_t num_pos_args , \
const char * function_name ) ;
/* GetItemInt.proto */
# define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
( __Pyx_fits_Py_ssize_t ( i , type , is_signed ) ? \
__Pyx_GetItemInt_Fast ( o , ( Py_ssize_t ) i , is_list , wraparound , boundscheck ) : \
( is_list ? ( PyErr_SetString ( PyExc_IndexError , " list index out of range " ) , ( PyObject * ) NULL ) : \
__Pyx_GetItemInt_Generic ( o , to_py_func ( i ) ) ) )
# define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
( __Pyx_fits_Py_ssize_t ( i , type , is_signed ) ? \
__Pyx_GetItemInt_List_Fast ( o , ( Py_ssize_t ) i , wraparound , boundscheck ) : \
( PyErr_SetString ( PyExc_IndexError , " list index out of range " ) , ( PyObject * ) NULL ) )
static CYTHON_INLINE PyObject * __Pyx_GetItemInt_List_Fast ( PyObject * o , Py_ssize_t i ,
int wraparound , int boundscheck ) ;
# define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
( __Pyx_fits_Py_ssize_t ( i , type , is_signed ) ? \
__Pyx_GetItemInt_Tuple_Fast ( o , ( Py_ssize_t ) i , wraparound , boundscheck ) : \
( PyErr_SetString ( PyExc_IndexError , " tuple index out of range " ) , ( PyObject * ) NULL ) )
static CYTHON_INLINE PyObject * __Pyx_GetItemInt_Tuple_Fast ( PyObject * o , Py_ssize_t i ,
int wraparound , int boundscheck ) ;
static PyObject * __Pyx_GetItemInt_Generic ( PyObject * o , PyObject * j ) ;
static CYTHON_INLINE PyObject * __Pyx_GetItemInt_Fast ( PyObject * o , Py_ssize_t i ,
int is_list , int wraparound , int boundscheck ) ;
/* PyCFunctionFastCall.proto */
# if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall ( PyObject * func , PyObject * * args , Py_ssize_t nargs ) ;
# else
# define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL)
# endif
/* PyFunctionFastCall.proto */
# if CYTHON_FAST_PYCALL
# define __Pyx_PyFunction_FastCall(func, args, nargs)\
__Pyx_PyFunction_FastCallDict ( ( func ) , ( args ) , ( nargs ) , NULL )
# if 1 || PY_VERSION_HEX < 0x030600B1
static PyObject * __Pyx_PyFunction_FastCallDict ( PyObject * func , PyObject * * args , Py_ssize_t nargs , PyObject * kwargs ) ;
# else
# define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
# endif
# define __Pyx_BUILD_ASSERT_EXPR(cond)\
( sizeof ( char [ 1 - 2 * ! ( cond ) ] ) - 1 )
# ifndef Py_MEMBER_SIZE
# define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
# endif
static size_t __pyx_pyframe_localsplus_offset = 0 ;
# include "frameobject.h"
# define __Pxy_PyFrame_Initialize_Offsets()\
( ( void ) __Pyx_BUILD_ASSERT_EXPR ( sizeof ( PyFrameObject ) = = offsetof ( PyFrameObject , f_localsplus ) + Py_MEMBER_SIZE ( PyFrameObject , f_localsplus ) ) , \
( void ) ( __pyx_pyframe_localsplus_offset = ( ( size_t ) PyFrame_Type . tp_basicsize ) - Py_MEMBER_SIZE ( PyFrameObject , f_localsplus ) ) )
# define __Pyx_PyFrame_GetLocalsplus(frame)\
( assert ( __pyx_pyframe_localsplus_offset ) , ( PyObject * * ) ( ( ( char * ) ( frame ) ) + __pyx_pyframe_localsplus_offset ) )
# endif
/* PyObjectCall.proto */
# if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject * __Pyx_PyObject_Call ( PyObject * func , PyObject * arg , PyObject * kw ) ;
# else
# define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
# endif
/* PyObjectCallMethO.proto */
# if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject * __Pyx_PyObject_CallMethO ( PyObject * func , PyObject * arg ) ;
# endif
/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject * __Pyx_PyObject_CallOneArg ( PyObject * func , PyObject * arg ) ;
/* py_abs.proto */
# if CYTHON_USE_PYLONG_INTERNALS
static PyObject * __Pyx_PyLong_AbsNeg ( PyObject * num ) ;
# define __Pyx_PyNumber_Absolute(x)\
( ( likely ( PyLong_CheckExact ( x ) ) ) ? \
( likely ( Py_SIZE ( x ) > = 0 ) ? ( Py_INCREF ( x ) , ( x ) ) : __Pyx_PyLong_AbsNeg ( x ) ) : \
PyNumber_Absolute ( x ) )
# else
# define __Pyx_PyNumber_Absolute(x) PyNumber_Absolute(x)
# endif
/* IncludeStringH.proto */
# include <string.h>
/* BytesEquals.proto */
static CYTHON_INLINE int __Pyx_PyBytes_Equals ( PyObject * s1 , PyObject * s2 , int equals ) ;
/* UnicodeEquals.proto */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals ( PyObject * s1 , PyObject * s2 , int equals ) ;
/* StrEquals.proto */
# if PY_MAJOR_VERSION >= 3
# define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
# else
# define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
# endif
/* PyObjectCallNoArg.proto */
# if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject * __Pyx_PyObject_CallNoArg ( PyObject * func ) ;
# else
# define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
# endif
/* PyDictVersioning.proto */
# if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
# define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1)
# define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
# define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
( version_var ) = __PYX_GET_DICT_VERSION ( dict ) ; \
( cache_var ) = ( value ) ;
# define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
static PY_UINT64_T __pyx_dict_version = 0 ; \
static PyObject * __pyx_dict_cached_value = NULL ; \
if ( likely ( __PYX_GET_DICT_VERSION ( DICT ) = = __pyx_dict_version ) ) { \
( VAR ) = __pyx_dict_cached_value ; \
} else { \
( VAR ) = __pyx_dict_cached_value = ( LOOKUP ) ; \
__pyx_dict_version = __PYX_GET_DICT_VERSION ( DICT ) ; \
} \
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version ( PyObject * obj ) ;
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version ( PyObject * obj ) ;
static CYTHON_INLINE int __Pyx_object_dict_version_matches ( PyObject * obj , PY_UINT64_T tp_dict_version , PY_UINT64_T obj_dict_version ) ;
# else
# define __PYX_GET_DICT_VERSION(dict) (0)
# define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
# define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
# endif
/* GetModuleGlobalName.proto */
# if CYTHON_USE_DICT_VERSIONS
# define __Pyx_GetModuleGlobalName(var, name) {\
static PY_UINT64_T __pyx_dict_version = 0 ; \
static PyObject * __pyx_dict_cached_value = NULL ; \
( var ) = ( likely ( __pyx_dict_version = = __PYX_GET_DICT_VERSION ( __pyx_d ) ) ) ? \
( likely ( __pyx_dict_cached_value ) ? __Pyx_NewRef ( __pyx_dict_cached_value ) : __Pyx_GetBuiltinName ( name ) ) : \
__Pyx__GetModuleGlobalName ( name , & __pyx_dict_version , & __pyx_dict_cached_value ) ; \
}
# define __Pyx_GetModuleGlobalNameUncached(var, name) {\
PY_UINT64_T __pyx_dict_version ; \
PyObject * __pyx_dict_cached_value ; \
( var ) = __Pyx__GetModuleGlobalName ( name , & __pyx_dict_version , & __pyx_dict_cached_value ) ; \
}
static PyObject * __Pyx__GetModuleGlobalName ( PyObject * name , PY_UINT64_T * dict_version , PyObject * * dict_cached_value ) ;
# else
# define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
# define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
static CYTHON_INLINE PyObject * __Pyx__GetModuleGlobalName ( PyObject * name ) ;
# endif
/* PyObjectCall2Args.proto */
static CYTHON_UNUSED PyObject * __Pyx_PyObject_Call2Args ( PyObject * function , PyObject * arg1 , PyObject * arg2 ) ;
/* RaiseTooManyValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError ( Py_ssize_t expected ) ;
/* RaiseNeedMoreValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError ( Py_ssize_t index ) ;
/* IterFinish.proto */
static CYTHON_INLINE int __Pyx_IterFinish ( void ) ;
/* UnpackItemEndCheck.proto */
static int __Pyx_IternextUnpackEndCheck ( PyObject * retval , Py_ssize_t expected ) ;
/* pow2.proto */
# define __Pyx_PyNumber_Power2(a, b) PyNumber_Power(a, b, Py_None)
/* None.proto */
static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError ( const char * varname ) ;
/* PyIntBinop.proto */
# if !CYTHON_COMPILING_IN_PYPY
static PyObject * __Pyx_PyInt_AddObjC ( PyObject * op1 , PyObject * op2 , long intval , int inplace , int zerodivision_check ) ;
# else
# define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\
( inplace ? PyNumber_InPlaceAdd ( op1 , op2 ) : PyNumber_Add ( op1 , op2 ) )
# endif
/* PyFloatBinop.proto */
# if !CYTHON_COMPILING_IN_PYPY
static PyObject * __Pyx_PyFloat_EqObjC ( PyObject * op1 , PyObject * op2 , double floatval , int inplace , int zerodivision_check ) ;
# else
# define __Pyx_PyFloat_EqObjC(op1, op2, floatval, inplace, zerodivision_check)\
( PyObject_RichCompare ( op1 , op2 , Py_EQ ) )
# endif
/* SliceObject.proto */
static CYTHON_INLINE PyObject * __Pyx_PyObject_GetSlice (
PyObject * obj , Py_ssize_t cstart , Py_ssize_t cstop ,
PyObject * * py_start , PyObject * * py_stop , PyObject * * py_slice ,
int has_cstart , int has_cstop , int wraparound ) ;
/* PyIntBinop.proto */
# if !CYTHON_COMPILING_IN_PYPY
static PyObject * __Pyx_PyInt_SubtractCObj ( PyObject * op1 , PyObject * op2 , long intval , int inplace , int zerodivision_check ) ;
# else
# define __Pyx_PyInt_SubtractCObj(op1, op2, intval, inplace, zerodivision_check)\
( inplace ? PyNumber_InPlaceSubtract ( op1 , op2 ) : PyNumber_Subtract ( op1 , op2 ) )
# endif
/* PyIntBinop.proto */
# if !CYTHON_COMPILING_IN_PYPY
static PyObject * __Pyx_PyInt_SubtractObjC ( PyObject * op1 , PyObject * op2 , long intval , int inplace , int zerodivision_check ) ;
# else
# define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace, zerodivision_check)\
( inplace ? PyNumber_InPlaceSubtract ( op1 , op2 ) : PyNumber_Subtract ( op1 , op2 ) )
# endif
/* ListAppend.proto */
# if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE int __Pyx_PyList_Append ( PyObject * list , PyObject * x ) {
PyListObject * L = ( PyListObject * ) list ;
Py_ssize_t len = Py_SIZE ( list ) ;
if ( likely ( L - > allocated > len ) & likely ( len > ( L - > allocated > > 1 ) ) ) {
Py_INCREF ( x ) ;
PyList_SET_ITEM ( list , len , x ) ;
Py_SIZE ( list ) = len + 1 ;
return 0 ;
}
return PyList_Append ( list , x ) ;
}
# else
# define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
# endif
/* Import.proto */
static PyObject * __Pyx_Import ( PyObject * name , PyObject * from_list , int level ) ;
/* ImportFrom.proto */
static PyObject * __Pyx_ImportFrom ( PyObject * module , PyObject * name ) ;
/* FetchCommonType.proto */
static PyTypeObject * __Pyx_FetchCommonType ( PyTypeObject * type ) ;
/* CythonFunction.proto */
# define __Pyx_CyFunction_USED 1
# define __Pyx_CYFUNCTION_STATICMETHOD 0x01
# define __Pyx_CYFUNCTION_CLASSMETHOD 0x02
# define __Pyx_CYFUNCTION_CCLASS 0x04
# define __Pyx_CyFunction_GetClosure(f)\
( ( ( __pyx_CyFunctionObject * ) ( f ) ) - > func_closure )
# define __Pyx_CyFunction_GetClassObj(f)\
( ( ( __pyx_CyFunctionObject * ) ( f ) ) - > func_classobj )
# define __Pyx_CyFunction_Defaults(type, f)\
( ( type * ) ( ( ( __pyx_CyFunctionObject * ) ( f ) ) - > defaults ) )
# define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
( ( __pyx_CyFunctionObject * ) ( f ) ) - > defaults_getter = ( g )
typedef struct {
PyCFunctionObject func ;
# if PY_VERSION_HEX < 0x030500A0
PyObject * func_weakreflist ;
# endif
PyObject * func_dict ;
PyObject * func_name ;
PyObject * func_qualname ;
PyObject * func_doc ;
PyObject * func_globals ;
PyObject * func_code ;
PyObject * func_closure ;
PyObject * func_classobj ;
void * defaults ;
int defaults_pyobjects ;
int flags ;
PyObject * defaults_tuple ;
PyObject * defaults_kwdict ;
PyObject * ( * defaults_getter ) ( PyObject * ) ;
PyObject * func_annotations ;
} __pyx_CyFunctionObject ;
static PyTypeObject * __pyx_CyFunctionType = 0 ;
# define __Pyx_CyFunction_Check(obj) (__Pyx_TypeCheck(obj, __pyx_CyFunctionType))
# define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\
__Pyx_CyFunction_New ( __pyx_CyFunctionType , ml , flags , qualname , self , module , globals , code )
static PyObject * __Pyx_CyFunction_New ( PyTypeObject * , PyMethodDef * ml ,
int flags , PyObject * qualname ,
PyObject * self ,
PyObject * module , PyObject * globals ,
PyObject * code ) ;
static CYTHON_INLINE void * __Pyx_CyFunction_InitDefaults ( PyObject * m ,
size_t size ,
int pyobjects ) ;
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple ( PyObject * m ,
PyObject * tuple ) ;
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict ( PyObject * m ,
PyObject * dict ) ;
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict ( PyObject * m ,
PyObject * dict ) ;
static int __pyx_CyFunction_init ( void ) ;
/* PyThreadStateGet.proto */
# if CYTHON_FAST_THREAD_STATE
# define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
# define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
# define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type
# else
# define __Pyx_PyThreadState_declare
# define __Pyx_PyThreadState_assign
# define __Pyx_PyErr_Occurred() PyErr_Occurred()
# endif
/* PyErrFetchRestore.proto */
# if CYTHON_FAST_THREAD_STATE
# define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
# define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
# define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
# define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
# define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx_ErrRestoreInState ( PyThreadState * tstate , PyObject * type , PyObject * value , PyObject * tb ) ;
static CYTHON_INLINE void __Pyx_ErrFetchInState ( PyThreadState * tstate , PyObject * * type , PyObject * * value , PyObject * * tb ) ;
# if CYTHON_COMPILING_IN_CPYTHON
# define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
# else
# define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
# endif
# else
# define __Pyx_PyErr_Clear() PyErr_Clear()
# define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
# define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
# define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
# define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
# define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
# define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
# define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
# endif
/* CLineInTraceback.proto */
# ifdef CYTHON_CLINE_IN_TRACEBACK
# define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
# else
static int __Pyx_CLineForTraceback ( PyThreadState * tstate , int c_line ) ;
# endif
/* CodeObjectCache.proto */
typedef struct {
PyCodeObject * code_object ;
int code_line ;
} __Pyx_CodeObjectCacheEntry ;
struct __Pyx_CodeObjectCache {
int count ;
int max_count ;
__Pyx_CodeObjectCacheEntry * entries ;
} ;
static struct __Pyx_CodeObjectCache __pyx_code_cache = { 0 , 0 , NULL } ;
static int __pyx_bisect_code_objects ( __Pyx_CodeObjectCacheEntry * entries , int count , int code_line ) ;
static PyCodeObject * __pyx_find_code_object ( int code_line ) ;
static void __pyx_insert_code_object ( int code_line , PyCodeObject * code_object ) ;
/* AddTraceback.proto */
static void __Pyx_AddTraceback ( const char * funcname , int c_line ,
int py_line , const char * filename ) ;
/* CIntToPy.proto */
static CYTHON_INLINE PyObject * __Pyx_PyInt_From_long ( long value ) ;
/* CIntFromPy.proto */
static CYTHON_INLINE long __Pyx_PyInt_As_long ( PyObject * ) ;
/* CIntFromPy.proto */
static CYTHON_INLINE int __Pyx_PyInt_As_int ( PyObject * ) ;
/* FastTypeChecks.proto */
# if CYTHON_COMPILING_IN_CPYTHON
# define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
static CYTHON_INLINE int __Pyx_IsSubtype ( PyTypeObject * a , PyTypeObject * b ) ;
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches ( PyObject * err , PyObject * type ) ;
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2 ( PyObject * err , PyObject * type1 , PyObject * type2 ) ;
# else
# define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
# define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
# define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
# endif
# define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version ( void ) ;
/* InitStrings.proto */
static int __Pyx_InitStrings ( __Pyx_StringTabEntry * t ) ;
/* Module declarations from 'detect' */
# define __Pyx_MODULE_NAME "detect"
extern int __pyx_module_is_main_detect ;
int __pyx_module_is_main_detect = 0 ;
/* Implementation of 'detect' */
static PyObject * __pyx_builtin_round ;
static const char __pyx_k_a [ ] = " a " ;
static const char __pyx_k_b [ ] = " b " ;
static const char __pyx_k_c [ ] = " c " ;
static const char __pyx_k_x [ ] = " x " ;
static const char __pyx_k_y [ ] = " y " ;
static const char __pyx_k__3 [ ] = " " ;
static const char __pyx_k_bl [ ] = " bl " ;
static const char __pyx_k_br [ ] = " br " ;
static const char __pyx_k_cv [ ] = " cv " ;
static const char __pyx_k_dA [ ] = " dA " ;
static const char __pyx_k_dB [ ] = " dB " ;
static const char __pyx_k_in [ ] = " in " ;
static const char __pyx_k_np [ ] = " np " ;
static const char __pyx_k_pi [ ] = " pi " ;
static const char __pyx_k_tl [ ] = " tl " ;
static const char __pyx_k_tr [ ] = " tr " ;
static const char __pyx_k_vx [ ] = " vx " ;
static const char __pyx_k_vy [ ] = " vy " ;
static const char __pyx_k_xx [ ] = " xx " ;
static const char __pyx_k_yy [ ] = " yy " ;
static const char __pyx_k_box [ ] = " box " ;
static const char __pyx_k_cos [ ] = " cos " ;
static const char __pyx_k_cv2 [ ] = " cv2 " ;
static const char __pyx_k_hsv [ ] = " hsv " ;
static const char __pyx_k_int [ ] = " int " ;
static const char __pyx_k_num [ ] = " num " ;
static const char __pyx_k_ptA [ ] = " ptA " ;
static const char __pyx_k_ptB [ ] = " ptB " ;
static const char __pyx_k_sin [ ] = " sin " ;
static const char __pyx_k_tmp [ ] = " tmp " ;
static const char __pyx_k_Axle [ ] = " Axle " ;
static const char __pyx_k_atan [ ] = " atan " ;
static const char __pyx_k_cnts [ ] = " cnts " ;
static const char __pyx_k_cols [ ] = " cols " ;
static const char __pyx_k_copy [ ] = " copy " ;
static const char __pyx_k_dimA [ ] = " dimA " ;
static const char __pyx_k_dimB [ ] = " dimB " ;
static const char __pyx_k_gray [ ] = " gray " ;
static const char __pyx_k_hull [ ] = " hull " ;
static const char __pyx_k_line [ ] = " line " ;
static const char __pyx_k_list [ ] = " list " ;
static const char __pyx_k_main [ ] = " __main__ " ;
static const char __pyx_k_mask [ ] = " mask " ;
static const char __pyx_k_math [ ] = " math " ;
static const char __pyx_k_mean [ ] = " mean " ;
static const char __pyx_k_name [ ] = " __name__ " ;
static const char __pyx_k_near [ ] = " near " ;
static const char __pyx_k_norm [ ] = " norm " ;
static const char __pyx_k_orig [ ] = " orig " ;
static const char __pyx_k_rows [ ] = " rows " ;
static const char __pyx_k_show [ ] = " show " ;
static const char __pyx_k_size [ ] = " size " ;
static const char __pyx_k_swap [ ] = " swap " ;
static const char __pyx_k_test [ ] = " __test__ " ;
static const char __pyx_k_time [ ] = " time " ;
static const char __pyx_k_xpos [ ] = " xpos " ;
static const char __pyx_k_ypos [ ] = " ypos " ;
static const char __pyx_k_2f_in [ ] = " {:.2f}in " ;
static const char __pyx_k_Canny [ ] = " Canny " ;
static const char __pyx_k_Penny [ ] = " Penny " ;
static const char __pyx_k_Screw [ ] = " Screw " ;
static const char __pyx_k_angle [ ] = " angle " ;
static const char __pyx_k_array [ ] = " array " ;
static const char __pyx_k_blbrX [ ] = " blbrX " ;
static const char __pyx_k_blbrY [ ] = " blbrY " ;
static const char __pyx_k_close [ ] = " close " ;
static const char __pyx_k_dtype [ ] = " dtype " ;
static const char __pyx_k_edged [ ] = " edged " ;
static const char __pyx_k_erode [ ] = " erode " ;
static const char __pyx_k_hull2 [ ] = " hull2 " ;
static const char __pyx_k_image [ ] = " image " ;
static const char __pyx_k_itemh [ ] = " itemh " ;
static const char __pyx_k_iteml [ ] = " iteml " ;
static const char __pyx_k_itemw [ ] = " itemw " ;
static const char __pyx_k_lefty [ ] = " lefty " ;
static const char __pyx_k_numpy [ ] = " numpy " ;
static const char __pyx_k_quick [ ] = " quick " ;
static const char __pyx_k_round [ ] = " round " ;
static const char __pyx_k_shape [ ] = " shape " ;
static const char __pyx_k_shead [ ] = " shead " ;
static const char __pyx_k_slope [ ] = " slope " ;
static const char __pyx_k_tlblX [ ] = " tlblX " ;
static const char __pyx_k_tlblY [ ] = " tlblY " ;
static const char __pyx_k_tltrX [ ] = " tltrX " ;
static const char __pyx_k_tltrY [ ] = " tltrY " ;
static const char __pyx_k_trbrX [ ] = " trbrX " ;
static const char __pyx_k_trbrY [ ] = " trbrY " ;
static const char __pyx_k_uint8 [ ] = " uint8 " ;
static const char __pyx_k_xpos2 [ ] = " xpos2 " ;
static const char __pyx_k_ypos2 [ ] = " ypos2 " ;
static const char __pyx_k_zeros [ ] = " zeros " ;
static const char __pyx_k_Spacer [ ] = " Spacer " ;
static const char __pyx_k_Washer [ ] = " Washer " ;
static const char __pyx_k_approx [ ] = " approx " ;
static const char __pyx_k_astype [ ] = " astype " ;
static const char __pyx_k_circle [ ] = " circle " ;
static const char __pyx_k_detect [ ] = " detect " ;
static const char __pyx_k_dilate [ ] = " dilate " ;
static const char __pyx_k_format [ ] = " format " ;
static const char __pyx_k_import [ ] = " __import__ " ;
static const char __pyx_k_imread [ ] = " imread " ;
static const char __pyx_k_imshow [ ] = " imshow " ;
static const char __pyx_k_is_cv2 [ ] = " is_cv2 " ;
static const char __pyx_k_itemhr [ ] = " itemhr " ;
static const char __pyx_k_itemwr [ ] = " itemwr " ;
static const char __pyx_k_larger [ ] = " larger " ;
static const char __pyx_k_linalg [ ] = " linalg " ;
static const char __pyx_k_output [ ] = " output " ;
static const char __pyx_k_radius [ ] = " radius " ;
static const char __pyx_k_resize [ ] = " resize " ;
static const char __pyx_k_righty [ ] = " righty " ;
static const char __pyx_k_DIST_L2 [ ] = " DIST_L2 " ;
static const char __pyx_k_Unknown [ ] = " Unknown " ;
static const char __pyx_k_defects [ ] = " defects " ;
static const char __pyx_k_epsilon [ ] = " epsilon " ;
static const char __pyx_k_fitLine [ ] = " fitLine " ;
static const char __pyx_k_imutils [ ] = " imutils " ;
static const char __pyx_k_objname [ ] = " objname " ;
static const char __pyx_k_objtype [ ] = " objtype " ;
static const char __pyx_k_putText [ ] = " putText " ;
static const char __pyx_k_smaller [ ] = " smaller " ;
static const char __pyx_k_waitKey [ ] = " waitKey " ;
static const char __pyx_k_x_2f_in [ ] = " x {:.2f}in " ;
static const char __pyx_k_Keps_Nut [ ] = " Keps Nut " ;
static const char __pyx_k_Standoff [ ] = " Standoff " ;
static const char __pyx_k_area_box [ ] = " area_box " ;
static const char __pyx_k_argparse [ ] = " argparse " ;
static const char __pyx_k_boxiness [ ] = " boxiness " ;
static const char __pyx_k_circular [ ] = " circular " ;
static const char __pyx_k_contours [ ] = " contours " ;
static const char __pyx_k_cvtColor [ ] = " cvtColor " ;
static const char __pyx_k_img_file [ ] = " img_file " ;
static const char __pyx_k_mean_val [ ] = " mean_val " ;
static const char __pyx_k_midpoint [ ] = " midpoint " ;
static const char __pyx_k_BoxPoints [ ] = " BoxPoints " ;
static const char __pyx_k_boxPoints [ ] = " boxPoints " ;
static const char __pyx_k_detect_py [ ] = " detect.py " ;
static const char __pyx_k_circleness [ ] = " circleness " ;
static const char __pyx_k_convexHull [ ] = " convexHull " ;
static const char __pyx_k_convexness [ ] = " convexness " ;
static const char __pyx_k_iterations [ ] = " iterations " ;
static const char __pyx_k_Item_Sorter [ ] = " Item Sorter " ;
static const char __pyx_k_area_circle [ ] = " area_circle " ;
static const char __pyx_k_contourArea [ ] = " contourArea " ;
static const char __pyx_k_minAreaRect [ ] = " minAreaRect " ;
static const char __pyx_k_namedWindow [ ] = " namedWindow " ;
static const char __pyx_k_rectangular [ ] = " rectangular " ;
static const char __pyx_k_GaussianBlur [ ] = " GaussianBlur " ;
static const char __pyx_k_approxPolyDP [ ] = " approxPolyDP " ;
static const char __pyx_k_area_contour [ ] = " area_contour " ;
static const char __pyx_k_drawContours [ ] = " drawContours " ;
static const char __pyx_k_findContours [ ] = " findContours " ;
static const char __pyx_k_returnPoints [ ] = " returnPoints " ;
static const char __pyx_k_sizeStandoff [ ] = " sizeStandoff " ;
static const char __pyx_k_sizeVexScrew [ ] = " sizeVexScrew " ;
static const char __pyx_k_COLOR_BGR2HSV [ ] = " COLOR_BGR2HSV " ;
static const char __pyx_k_INTER_NEAREST [ ] = " INTER_NEAREST " ;
static const char __pyx_k_RETR_EXTERNAL [ ] = " RETR_EXTERNAL " ;
static const char __pyx_k_grab_contours [ ] = " grab_contours " ;
static const char __pyx_k_interpolation [ ] = " interpolation " ;
static const char __pyx_k_COLOR_BGR2GRAY [ ] = " COLOR_BGR2GRAY " ;
static const char __pyx_k_pixelsPerMetric [ ] = " pixelsPerMetric " ;
static const char __pyx_k_convexityDefects [ ] = " convexityDefects " ;
static const char __pyx_k_calibration_width [ ] = " calibration_width " ;
static const char __pyx_k_cline_in_traceback [ ] = " cline_in_traceback " ;
static const char __pyx_k_minEnclosingCircle [ ] = " minEnclosingCircle " ;
static const char __pyx_k_CHAIN_APPROX_SIMPLE [ ] = " CHAIN_APPROX_SIMPLE " ;
static const char __pyx_k_class_numpy_ndarray [ ] = " <class 'numpy.ndarray'> " ;
static const char __pyx_k_FONT_HERSHEY_SIMPLEX [ ] = " FONT_HERSHEY_SIMPLEX " ;
static PyObject * __pyx_kp_s_2f_in ;
static PyObject * __pyx_n_s_Axle ;
static PyObject * __pyx_n_s_BoxPoints ;
static PyObject * __pyx_n_s_CHAIN_APPROX_SIMPLE ;
static PyObject * __pyx_n_s_COLOR_BGR2GRAY ;
static PyObject * __pyx_n_s_COLOR_BGR2HSV ;
static PyObject * __pyx_n_s_Canny ;
static PyObject * __pyx_n_s_DIST_L2 ;
static PyObject * __pyx_n_s_FONT_HERSHEY_SIMPLEX ;
static PyObject * __pyx_n_s_GaussianBlur ;
static PyObject * __pyx_n_s_INTER_NEAREST ;
static PyObject * __pyx_kp_s_Item_Sorter ;
static PyObject * __pyx_kp_s_Keps_Nut ;
static PyObject * __pyx_n_s_Penny ;
static PyObject * __pyx_n_s_RETR_EXTERNAL ;
static PyObject * __pyx_n_s_Screw ;
static PyObject * __pyx_n_s_Spacer ;
static PyObject * __pyx_n_s_Standoff ;
static PyObject * __pyx_n_s_Unknown ;
static PyObject * __pyx_n_s_Washer ;
static PyObject * __pyx_kp_s__3 ;
static PyObject * __pyx_n_s_a ;
static PyObject * __pyx_n_s_angle ;
static PyObject * __pyx_n_s_approx ;
static PyObject * __pyx_n_s_approxPolyDP ;
static PyObject * __pyx_n_s_area_box ;
static PyObject * __pyx_n_s_area_circle ;
static PyObject * __pyx_n_s_area_contour ;
static PyObject * __pyx_n_s_argparse ;
static PyObject * __pyx_n_s_array ;
static PyObject * __pyx_n_s_astype ;
static PyObject * __pyx_n_s_atan ;
static PyObject * __pyx_n_s_b ;
static PyObject * __pyx_n_s_bl ;
static PyObject * __pyx_n_s_blbrX ;
static PyObject * __pyx_n_s_blbrY ;
static PyObject * __pyx_n_s_box ;
static PyObject * __pyx_n_s_boxPoints ;
static PyObject * __pyx_n_s_boxiness ;
static PyObject * __pyx_n_s_br ;
static PyObject * __pyx_n_s_c ;
static PyObject * __pyx_n_s_calibration_width ;
static PyObject * __pyx_n_s_circle ;
static PyObject * __pyx_n_s_circleness ;
static PyObject * __pyx_n_s_circular ;
static PyObject * __pyx_kp_s_class_numpy_ndarray ;
static PyObject * __pyx_n_s_cline_in_traceback ;
static PyObject * __pyx_n_s_close ;
static PyObject * __pyx_n_s_cnts ;
static PyObject * __pyx_n_s_cols ;
static PyObject * __pyx_n_s_contourArea ;
static PyObject * __pyx_n_s_contours ;
static PyObject * __pyx_n_s_convexHull ;
static PyObject * __pyx_n_s_convexityDefects ;
static PyObject * __pyx_n_s_convexness ;
static PyObject * __pyx_n_s_copy ;
static PyObject * __pyx_n_s_cos ;
static PyObject * __pyx_n_s_cv ;
static PyObject * __pyx_n_s_cv2 ;
static PyObject * __pyx_n_s_cvtColor ;
static PyObject * __pyx_n_s_dA ;
static PyObject * __pyx_n_s_dB ;
static PyObject * __pyx_n_s_defects ;
static PyObject * __pyx_n_s_detect ;
static PyObject * __pyx_kp_s_detect_py ;
static PyObject * __pyx_n_s_dilate ;
static PyObject * __pyx_n_s_dimA ;
static PyObject * __pyx_n_s_dimB ;
static PyObject * __pyx_n_s_drawContours ;
static PyObject * __pyx_n_s_dtype ;
static PyObject * __pyx_n_s_edged ;
static PyObject * __pyx_n_s_epsilon ;
static PyObject * __pyx_n_s_erode ;
static PyObject * __pyx_n_s_findContours ;
static PyObject * __pyx_n_s_fitLine ;
static PyObject * __pyx_n_s_format ;
static PyObject * __pyx_n_s_grab_contours ;
static PyObject * __pyx_n_s_gray ;
static PyObject * __pyx_n_s_hsv ;
static PyObject * __pyx_n_s_hull ;
static PyObject * __pyx_n_s_hull2 ;
static PyObject * __pyx_n_s_image ;
static PyObject * __pyx_n_s_img_file ;
static PyObject * __pyx_n_s_import ;
static PyObject * __pyx_n_s_imread ;
static PyObject * __pyx_n_s_imshow ;
static PyObject * __pyx_n_s_imutils ;
static PyObject * __pyx_n_s_in ;
static PyObject * __pyx_n_s_int ;
static PyObject * __pyx_n_s_interpolation ;
static PyObject * __pyx_n_s_is_cv2 ;
static PyObject * __pyx_n_s_itemh ;
static PyObject * __pyx_n_s_itemhr ;
static PyObject * __pyx_n_s_iteml ;
static PyObject * __pyx_n_s_itemw ;
static PyObject * __pyx_n_s_itemwr ;
static PyObject * __pyx_n_s_iterations ;
static PyObject * __pyx_n_s_larger ;
static PyObject * __pyx_n_s_lefty ;
static PyObject * __pyx_n_s_linalg ;
static PyObject * __pyx_n_s_line ;
static PyObject * __pyx_n_s_list ;
static PyObject * __pyx_n_s_main ;
static PyObject * __pyx_n_s_mask ;
static PyObject * __pyx_n_s_math ;
static PyObject * __pyx_n_s_mean ;
static PyObject * __pyx_n_s_mean_val ;
static PyObject * __pyx_n_s_midpoint ;
static PyObject * __pyx_n_s_minAreaRect ;
static PyObject * __pyx_n_s_minEnclosingCircle ;
static PyObject * __pyx_n_s_name ;
static PyObject * __pyx_n_s_namedWindow ;
static PyObject * __pyx_n_s_near ;
static PyObject * __pyx_n_s_norm ;
static PyObject * __pyx_n_s_np ;
static PyObject * __pyx_n_s_num ;
static PyObject * __pyx_n_s_numpy ;
static PyObject * __pyx_n_s_objname ;
static PyObject * __pyx_n_s_objtype ;
static PyObject * __pyx_n_s_orig ;
static PyObject * __pyx_n_s_output ;
static PyObject * __pyx_n_s_pi ;
static PyObject * __pyx_n_s_pixelsPerMetric ;
static PyObject * __pyx_n_s_ptA ;
static PyObject * __pyx_n_s_ptB ;
static PyObject * __pyx_n_s_putText ;
static PyObject * __pyx_n_s_quick ;
static PyObject * __pyx_n_s_radius ;
static PyObject * __pyx_n_s_rectangular ;
static PyObject * __pyx_n_s_resize ;
static PyObject * __pyx_n_s_returnPoints ;
static PyObject * __pyx_n_s_righty ;
static PyObject * __pyx_n_s_round ;
static PyObject * __pyx_n_s_rows ;
static PyObject * __pyx_n_s_shape ;
static PyObject * __pyx_n_s_shead ;
static PyObject * __pyx_n_s_show ;
static PyObject * __pyx_n_s_sin ;
static PyObject * __pyx_n_s_size ;
static PyObject * __pyx_n_s_sizeStandoff ;
static PyObject * __pyx_n_s_sizeVexScrew ;
static PyObject * __pyx_n_s_slope ;
static PyObject * __pyx_n_s_smaller ;
static PyObject * __pyx_n_s_swap ;
static PyObject * __pyx_n_s_test ;
static PyObject * __pyx_n_s_time ;
static PyObject * __pyx_n_s_tl ;
static PyObject * __pyx_n_s_tlblX ;
static PyObject * __pyx_n_s_tlblY ;
static PyObject * __pyx_n_s_tltrX ;
static PyObject * __pyx_n_s_tltrY ;
static PyObject * __pyx_n_s_tmp ;
static PyObject * __pyx_n_s_tr ;
static PyObject * __pyx_n_s_trbrX ;
static PyObject * __pyx_n_s_trbrY ;
static PyObject * __pyx_n_s_uint8 ;
static PyObject * __pyx_n_s_vx ;
static PyObject * __pyx_n_s_vy ;
static PyObject * __pyx_n_s_waitKey ;
static PyObject * __pyx_n_s_x ;
static PyObject * __pyx_kp_s_x_2f_in ;
static PyObject * __pyx_n_s_xpos ;
static PyObject * __pyx_n_s_xpos2 ;
static PyObject * __pyx_n_s_xx ;
static PyObject * __pyx_n_s_y ;
static PyObject * __pyx_n_s_ypos ;
static PyObject * __pyx_n_s_ypos2 ;
static PyObject * __pyx_n_s_yy ;
static PyObject * __pyx_n_s_zeros ;
static PyObject * __pyx_pf_6detect_midpoint ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_ptA , PyObject * __pyx_v_ptB ) ; /* proto */
static PyObject * __pyx_pf_6detect_2sizeVexScrew ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_iteml ) ; /* proto */
static PyObject * __pyx_pf_6detect_4sizeStandoff ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_iteml ) ; /* proto */
static PyObject * __pyx_pf_6detect_6larger ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_a , PyObject * __pyx_v_b ) ; /* proto */
static PyObject * __pyx_pf_6detect_8smaller ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_a , PyObject * __pyx_v_b ) ; /* proto */
static PyObject * __pyx_pf_6detect_10near ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_a , PyObject * __pyx_v_b , PyObject * __pyx_v_close ) ; /* proto */
static PyObject * __pyx_pf_6detect_12swap ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_a , PyObject * __pyx_v_b ) ; /* proto */
static PyObject * __pyx_pf_6detect_14detect ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_calibration_width , PyObject * __pyx_v_img_file , PyObject * __pyx_v_show , PyObject * __pyx_v_quick ) ; /* proto */
static PyObject * __pyx_float_0_5 ;
static PyObject * __pyx_float_0_6 ;
static PyObject * __pyx_float_0_9 ;
static PyObject * __pyx_float_4_5 ;
static PyObject * __pyx_float_0_01 ;
static PyObject * __pyx_float_0_02 ;
static PyObject * __pyx_float_0_03 ;
static PyObject * __pyx_float_0_23 ;
static PyObject * __pyx_float_0_38 ;
static PyObject * __pyx_float_0_75 ;
static PyObject * __pyx_float_0_1875 ;
static PyObject * __pyx_float_0_3125 ;
static PyObject * __pyx_int_0 ;
static PyObject * __pyx_int_1 ;
static PyObject * __pyx_int_2 ;
static PyObject * __pyx_int_3 ;
static PyObject * __pyx_int_5 ;
static PyObject * __pyx_int_8 ;
static PyObject * __pyx_int_10 ;
static PyObject * __pyx_int_16 ;
static PyObject * __pyx_int_20 ;
static PyObject * __pyx_int_25 ;
static PyObject * __pyx_int_40 ;
static PyObject * __pyx_int_47 ;
static PyObject * __pyx_int_50 ;
static PyObject * __pyx_int_70 ;
static PyObject * __pyx_int_78 ;
static PyObject * __pyx_int_100 ;
static PyObject * __pyx_int_127 ;
static PyObject * __pyx_int_220 ;
static PyObject * __pyx_int_255 ;
static PyObject * __pyx_int_1000 ;
static PyObject * __pyx_int_neg_1 ;
static PyObject * __pyx_tuple_ ;
static PyObject * __pyx_slice__6 ;
static PyObject * __pyx_tuple__2 ;
static PyObject * __pyx_tuple__4 ;
static PyObject * __pyx_tuple__5 ;
static PyObject * __pyx_tuple__7 ;
static PyObject * __pyx_tuple__8 ;
static PyObject * __pyx_tuple__9 ;
static PyObject * __pyx_tuple__11 ;
static PyObject * __pyx_tuple__13 ;
static PyObject * __pyx_tuple__15 ;
static PyObject * __pyx_tuple__17 ;
static PyObject * __pyx_tuple__19 ;
static PyObject * __pyx_tuple__21 ;
static PyObject * __pyx_tuple__23 ;
static PyObject * __pyx_codeobj__10 ;
static PyObject * __pyx_codeobj__12 ;
static PyObject * __pyx_codeobj__14 ;
static PyObject * __pyx_codeobj__16 ;
static PyObject * __pyx_codeobj__18 ;
static PyObject * __pyx_codeobj__20 ;
static PyObject * __pyx_codeobj__22 ;
static PyObject * __pyx_codeobj__24 ;
/* Late includes */
/* "detect.py":15
*
*
* def midpoint ( ptA , ptB ) : # < < < < < < < < < < < < < <
* return ( ( ptA [ 0 ] + ptB [ 0 ] ) * 0.5 , ( ptA [ 1 ] + ptB [ 1 ] ) * 0.5 )
*
*/
/* Python wrapper */
static PyObject * __pyx_pw_6detect_1midpoint ( PyObject * __pyx_self , PyObject * __pyx_args , PyObject * __pyx_kwds ) ; /*proto*/
static PyMethodDef __pyx_mdef_6detect_1midpoint = { " midpoint " , ( PyCFunction ) ( void * ) ( PyCFunctionWithKeywords ) __pyx_pw_6detect_1midpoint , METH_VARARGS | METH_KEYWORDS , 0 } ;
static PyObject * __pyx_pw_6detect_1midpoint ( PyObject * __pyx_self , PyObject * __pyx_args , PyObject * __pyx_kwds ) {
PyObject * __pyx_v_ptA = 0 ;
PyObject * __pyx_v_ptB = 0 ;
PyObject * __pyx_r = 0 ;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " midpoint (wrapper) " , 0 ) ;
{
static PyObject * * __pyx_pyargnames [ ] = { & __pyx_n_s_ptA , & __pyx_n_s_ptB , 0 } ;
PyObject * values [ 2 ] = { 0 , 0 } ;
if ( unlikely ( __pyx_kwds ) ) {
Py_ssize_t kw_args ;
const Py_ssize_t pos_args = PyTuple_GET_SIZE ( __pyx_args ) ;
switch ( pos_args ) {
case 2 : values [ 1 ] = PyTuple_GET_ITEM ( __pyx_args , 1 ) ;
CYTHON_FALLTHROUGH ;
case 1 : values [ 0 ] = PyTuple_GET_ITEM ( __pyx_args , 0 ) ;
CYTHON_FALLTHROUGH ;
case 0 : break ;
default : goto __pyx_L5_argtuple_error ;
}
kw_args = PyDict_Size ( __pyx_kwds ) ;
switch ( pos_args ) {
case 0 :
if ( likely ( ( values [ 0 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_ptA ) ) ! = 0 ) ) kw_args - - ;
else goto __pyx_L5_argtuple_error ;
CYTHON_FALLTHROUGH ;
case 1 :
if ( likely ( ( values [ 1 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_ptB ) ) ! = 0 ) ) kw_args - - ;
else {
__Pyx_RaiseArgtupleInvalid ( " midpoint " , 1 , 2 , 2 , 1 ) ; __PYX_ERR ( 0 , 15 , __pyx_L3_error )
}
}
if ( unlikely ( kw_args > 0 ) ) {
if ( unlikely ( __Pyx_ParseOptionalKeywords ( __pyx_kwds , __pyx_pyargnames , 0 , values , pos_args , " midpoint " ) < 0 ) ) __PYX_ERR ( 0 , 15 , __pyx_L3_error )
}
} else if ( PyTuple_GET_SIZE ( __pyx_args ) ! = 2 ) {
goto __pyx_L5_argtuple_error ;
} else {
values [ 0 ] = PyTuple_GET_ITEM ( __pyx_args , 0 ) ;
values [ 1 ] = PyTuple_GET_ITEM ( __pyx_args , 1 ) ;
}
__pyx_v_ptA = values [ 0 ] ;
__pyx_v_ptB = values [ 1 ] ;
}
goto __pyx_L4_argument_unpacking_done ;
__pyx_L5_argtuple_error : ;
__Pyx_RaiseArgtupleInvalid ( " midpoint " , 1 , 2 , 2 , PyTuple_GET_SIZE ( __pyx_args ) ) ; __PYX_ERR ( 0 , 15 , __pyx_L3_error )
__pyx_L3_error : ;
__Pyx_AddTraceback ( " detect.midpoint " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
__Pyx_RefNannyFinishContext ( ) ;
return NULL ;
__pyx_L4_argument_unpacking_done : ;
__pyx_r = __pyx_pf_6detect_midpoint ( __pyx_self , __pyx_v_ptA , __pyx_v_ptB ) ;
/* function exit code */
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
static PyObject * __pyx_pf_6detect_midpoint ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_ptA , PyObject * __pyx_v_ptB ) {
PyObject * __pyx_r = NULL ;
__Pyx_RefNannyDeclarations
PyObject * __pyx_t_1 = NULL ;
PyObject * __pyx_t_2 = NULL ;
PyObject * __pyx_t_3 = NULL ;
PyObject * __pyx_t_4 = NULL ;
__Pyx_RefNannySetupContext ( " midpoint " , 0 ) ;
/* "detect.py":16
*
* def midpoint ( ptA , ptB ) :
* return ( ( ptA [ 0 ] + ptB [ 0 ] ) * 0.5 , ( ptA [ 1 ] + ptB [ 1 ] ) * 0.5 ) # < < < < < < < < < < < < < <
*
*
*/
__Pyx_XDECREF ( __pyx_r ) ;
__pyx_t_1 = __Pyx_GetItemInt ( __pyx_v_ptA , 0 , long , 1 , __Pyx_PyInt_From_long , 0 , 0 , 1 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 16 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_2 = __Pyx_GetItemInt ( __pyx_v_ptB , 0 , long , 1 , __Pyx_PyInt_From_long , 0 , 0 , 1 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 16 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
__pyx_t_3 = PyNumber_Add ( __pyx_t_1 , __pyx_t_2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 16 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
__pyx_t_2 = PyNumber_Multiply ( __pyx_t_3 , __pyx_float_0_5 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 16 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = __Pyx_GetItemInt ( __pyx_v_ptA , 1 , long , 1 , __Pyx_PyInt_From_long , 0 , 0 , 1 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 16 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_1 = __Pyx_GetItemInt ( __pyx_v_ptB , 1 , long , 1 , __Pyx_PyInt_From_long , 0 , 0 , 1 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 16 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_4 = PyNumber_Add ( __pyx_t_3 , __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 16 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = PyNumber_Multiply ( __pyx_t_4 , __pyx_float_0_5 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 16 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 16 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_GIVEREF ( __pyx_t_2 ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 0 , __pyx_t_2 ) ;
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 1 , __pyx_t_1 ) ;
__pyx_t_2 = 0 ;
__pyx_t_1 = 0 ;
__pyx_r = __pyx_t_4 ;
__pyx_t_4 = 0 ;
goto __pyx_L0 ;
/* "detect.py":15
*
*
* def midpoint ( ptA , ptB ) : # < < < < < < < < < < < < < <
* return ( ( ptA [ 0 ] + ptB [ 0 ] ) * 0.5 , ( ptA [ 1 ] + ptB [ 1 ] ) * 0.5 )
*
*/
/* function exit code */
__pyx_L1_error : ;
__Pyx_XDECREF ( __pyx_t_1 ) ;
__Pyx_XDECREF ( __pyx_t_2 ) ;
__Pyx_XDECREF ( __pyx_t_3 ) ;
__Pyx_XDECREF ( __pyx_t_4 ) ;
__Pyx_AddTraceback ( " detect.midpoint " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
__pyx_r = NULL ;
__pyx_L0 : ;
__Pyx_XGIVEREF ( __pyx_r ) ;
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
/* "detect.py":19
*
*
* def sizeVexScrew ( iteml ) : # < < < < < < < < < < < < < <
* # Screw Sizing code
* # subtract screw head size to find thread length
*/
/* Python wrapper */
static PyObject * __pyx_pw_6detect_3sizeVexScrew ( PyObject * __pyx_self , PyObject * __pyx_v_iteml ) ; /*proto*/
static PyMethodDef __pyx_mdef_6detect_3sizeVexScrew = { " sizeVexScrew " , ( PyCFunction ) __pyx_pw_6detect_3sizeVexScrew , METH_O , 0 } ;
static PyObject * __pyx_pw_6detect_3sizeVexScrew ( PyObject * __pyx_self , PyObject * __pyx_v_iteml ) {
PyObject * __pyx_r = 0 ;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " sizeVexScrew (wrapper) " , 0 ) ;
__pyx_r = __pyx_pf_6detect_2sizeVexScrew ( __pyx_self , ( ( PyObject * ) __pyx_v_iteml ) ) ;
/* function exit code */
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
static PyObject * __pyx_pf_6detect_2sizeVexScrew ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_iteml ) {
double __pyx_v_shead ;
PyObject * __pyx_r = NULL ;
__Pyx_RefNannyDeclarations
PyObject * __pyx_t_1 = NULL ;
PyObject * __pyx_t_2 = NULL ;
__Pyx_RefNannySetupContext ( " sizeVexScrew " , 0 ) ;
__Pyx_INCREF ( __pyx_v_iteml ) ;
/* "detect.py":22
* # Screw Sizing code
* # subtract screw head size to find thread length
* shead = 0.1 # < < < < < < < < < < < < < <
* iteml - = shead
* # print ( " Thread Length: " + str ( iteml ) )
*/
__pyx_v_shead = 0.1 ;
/* "detect.py":23
* # subtract screw head size to find thread length
* shead = 0.1
* iteml - = shead # < < < < < < < < < < < < < <
* # print ( " Thread Length: " + str ( iteml ) )
* iteml * = 8
*/
__pyx_t_1 = PyFloat_FromDouble ( __pyx_v_shead ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 23 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_2 = PyNumber_InPlaceSubtract ( __pyx_v_iteml , __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 23 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_iteml , __pyx_t_2 ) ;
__pyx_t_2 = 0 ;
/* "detect.py":25
* iteml - = shead
* # print ( " Thread Length: " + str ( iteml ) )
* iteml * = 8 # < < < < < < < < < < < < < <
* iteml = round ( iteml )
* iteml / = 8
*/
__pyx_t_2 = PyNumber_InPlaceMultiply ( __pyx_v_iteml , __pyx_int_8 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 25 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
__Pyx_DECREF_SET ( __pyx_v_iteml , __pyx_t_2 ) ;
__pyx_t_2 = 0 ;
/* "detect.py":26
* # print ( " Thread Length: " + str ( iteml ) )
* iteml * = 8
* iteml = round ( iteml ) # < < < < < < < < < < < < < <
* iteml / = 8
* return iteml
*/
__pyx_t_2 = __Pyx_PyObject_CallOneArg ( __pyx_builtin_round , __pyx_v_iteml ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 26 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
__Pyx_DECREF_SET ( __pyx_v_iteml , __pyx_t_2 ) ;
__pyx_t_2 = 0 ;
/* "detect.py":27
* iteml * = 8
* iteml = round ( iteml )
* iteml / = 8 # < < < < < < < < < < < < < <
* return iteml
*
*/
__pyx_t_2 = __Pyx_PyNumber_InPlaceDivide ( __pyx_v_iteml , __pyx_int_8 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 27 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
__Pyx_DECREF_SET ( __pyx_v_iteml , __pyx_t_2 ) ;
__pyx_t_2 = 0 ;
/* "detect.py":28
* iteml = round ( iteml )
* iteml / = 8
* return iteml # < < < < < < < < < < < < < <
*
*
*/
__Pyx_XDECREF ( __pyx_r ) ;
__Pyx_INCREF ( __pyx_v_iteml ) ;
__pyx_r = __pyx_v_iteml ;
goto __pyx_L0 ;
/* "detect.py":19
*
*
* def sizeVexScrew ( iteml ) : # < < < < < < < < < < < < < <
* # Screw Sizing code
* # subtract screw head size to find thread length
*/
/* function exit code */
__pyx_L1_error : ;
__Pyx_XDECREF ( __pyx_t_1 ) ;
__Pyx_XDECREF ( __pyx_t_2 ) ;
__Pyx_AddTraceback ( " detect.sizeVexScrew " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
__pyx_r = NULL ;
__pyx_L0 : ;
__Pyx_XDECREF ( __pyx_v_iteml ) ;
__Pyx_XGIVEREF ( __pyx_r ) ;
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
/* "detect.py":31
*
*
* def sizeStandoff ( iteml ) : # < < < < < < < < < < < < < <
* # Standoff Sizing code
* iteml * = 2
*/
/* Python wrapper */
static PyObject * __pyx_pw_6detect_5sizeStandoff ( PyObject * __pyx_self , PyObject * __pyx_v_iteml ) ; /*proto*/
static PyMethodDef __pyx_mdef_6detect_5sizeStandoff = { " sizeStandoff " , ( PyCFunction ) __pyx_pw_6detect_5sizeStandoff , METH_O , 0 } ;
static PyObject * __pyx_pw_6detect_5sizeStandoff ( PyObject * __pyx_self , PyObject * __pyx_v_iteml ) {
PyObject * __pyx_r = 0 ;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " sizeStandoff (wrapper) " , 0 ) ;
__pyx_r = __pyx_pf_6detect_4sizeStandoff ( __pyx_self , ( ( PyObject * ) __pyx_v_iteml ) ) ;
/* function exit code */
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
static PyObject * __pyx_pf_6detect_4sizeStandoff ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_iteml ) {
PyObject * __pyx_r = NULL ;
__Pyx_RefNannyDeclarations
PyObject * __pyx_t_1 = NULL ;
__Pyx_RefNannySetupContext ( " sizeStandoff " , 0 ) ;
__Pyx_INCREF ( __pyx_v_iteml ) ;
/* "detect.py":33
* def sizeStandoff ( iteml ) :
* # Standoff Sizing code
* iteml * = 2 # < < < < < < < < < < < < < <
* iteml = round ( iteml )
* iteml / = 2
*/
__pyx_t_1 = PyNumber_InPlaceMultiply ( __pyx_v_iteml , __pyx_int_2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 33 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF_SET ( __pyx_v_iteml , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":34
* # Standoff Sizing code
* iteml * = 2
* iteml = round ( iteml ) # < < < < < < < < < < < < < <
* iteml / = 2
* return iteml
*/
__pyx_t_1 = __Pyx_PyObject_CallOneArg ( __pyx_builtin_round , __pyx_v_iteml ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 34 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF_SET ( __pyx_v_iteml , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":35
* iteml * = 2
* iteml = round ( iteml )
* iteml / = 2 # < < < < < < < < < < < < < <
* return iteml
*
*/
__pyx_t_1 = __Pyx_PyNumber_InPlaceDivide ( __pyx_v_iteml , __pyx_int_2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 35 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF_SET ( __pyx_v_iteml , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":36
* iteml = round ( iteml )
* iteml / = 2
* return iteml # < < < < < < < < < < < < < <
*
*
*/
__Pyx_XDECREF ( __pyx_r ) ;
__Pyx_INCREF ( __pyx_v_iteml ) ;
__pyx_r = __pyx_v_iteml ;
goto __pyx_L0 ;
/* "detect.py":31
*
*
* def sizeStandoff ( iteml ) : # < < < < < < < < < < < < < <
* # Standoff Sizing code
* iteml * = 2
*/
/* function exit code */
__pyx_L1_error : ;
__Pyx_XDECREF ( __pyx_t_1 ) ;
__Pyx_AddTraceback ( " detect.sizeStandoff " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
__pyx_r = NULL ;
__pyx_L0 : ;
__Pyx_XDECREF ( __pyx_v_iteml ) ;
__Pyx_XGIVEREF ( __pyx_r ) ;
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
/* "detect.py":39
*
*
* def larger ( a , b ) : # < < < < < < < < < < < < < <
* if a > = b :
* return a
*/
/* Python wrapper */
static PyObject * __pyx_pw_6detect_7larger ( PyObject * __pyx_self , PyObject * __pyx_args , PyObject * __pyx_kwds ) ; /*proto*/
static PyMethodDef __pyx_mdef_6detect_7larger = { " larger " , ( PyCFunction ) ( void * ) ( PyCFunctionWithKeywords ) __pyx_pw_6detect_7larger , METH_VARARGS | METH_KEYWORDS , 0 } ;
static PyObject * __pyx_pw_6detect_7larger ( PyObject * __pyx_self , PyObject * __pyx_args , PyObject * __pyx_kwds ) {
PyObject * __pyx_v_a = 0 ;
PyObject * __pyx_v_b = 0 ;
PyObject * __pyx_r = 0 ;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " larger (wrapper) " , 0 ) ;
{
static PyObject * * __pyx_pyargnames [ ] = { & __pyx_n_s_a , & __pyx_n_s_b , 0 } ;
PyObject * values [ 2 ] = { 0 , 0 } ;
if ( unlikely ( __pyx_kwds ) ) {
Py_ssize_t kw_args ;
const Py_ssize_t pos_args = PyTuple_GET_SIZE ( __pyx_args ) ;
switch ( pos_args ) {
case 2 : values [ 1 ] = PyTuple_GET_ITEM ( __pyx_args , 1 ) ;
CYTHON_FALLTHROUGH ;
case 1 : values [ 0 ] = PyTuple_GET_ITEM ( __pyx_args , 0 ) ;
CYTHON_FALLTHROUGH ;
case 0 : break ;
default : goto __pyx_L5_argtuple_error ;
}
kw_args = PyDict_Size ( __pyx_kwds ) ;
switch ( pos_args ) {
case 0 :
if ( likely ( ( values [ 0 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_a ) ) ! = 0 ) ) kw_args - - ;
else goto __pyx_L5_argtuple_error ;
CYTHON_FALLTHROUGH ;
case 1 :
if ( likely ( ( values [ 1 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_b ) ) ! = 0 ) ) kw_args - - ;
else {
__Pyx_RaiseArgtupleInvalid ( " larger " , 1 , 2 , 2 , 1 ) ; __PYX_ERR ( 0 , 39 , __pyx_L3_error )
}
}
if ( unlikely ( kw_args > 0 ) ) {
if ( unlikely ( __Pyx_ParseOptionalKeywords ( __pyx_kwds , __pyx_pyargnames , 0 , values , pos_args , " larger " ) < 0 ) ) __PYX_ERR ( 0 , 39 , __pyx_L3_error )
}
} else if ( PyTuple_GET_SIZE ( __pyx_args ) ! = 2 ) {
goto __pyx_L5_argtuple_error ;
} else {
values [ 0 ] = PyTuple_GET_ITEM ( __pyx_args , 0 ) ;
values [ 1 ] = PyTuple_GET_ITEM ( __pyx_args , 1 ) ;
}
__pyx_v_a = values [ 0 ] ;
__pyx_v_b = values [ 1 ] ;
}
goto __pyx_L4_argument_unpacking_done ;
__pyx_L5_argtuple_error : ;
__Pyx_RaiseArgtupleInvalid ( " larger " , 1 , 2 , 2 , PyTuple_GET_SIZE ( __pyx_args ) ) ; __PYX_ERR ( 0 , 39 , __pyx_L3_error )
__pyx_L3_error : ;
__Pyx_AddTraceback ( " detect.larger " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
__Pyx_RefNannyFinishContext ( ) ;
return NULL ;
__pyx_L4_argument_unpacking_done : ;
__pyx_r = __pyx_pf_6detect_6larger ( __pyx_self , __pyx_v_a , __pyx_v_b ) ;
/* function exit code */
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
static PyObject * __pyx_pf_6detect_6larger ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_a , PyObject * __pyx_v_b ) {
PyObject * __pyx_r = NULL ;
__Pyx_RefNannyDeclarations
PyObject * __pyx_t_1 = NULL ;
int __pyx_t_2 ;
__Pyx_RefNannySetupContext ( " larger " , 0 ) ;
/* "detect.py":40
*
* def larger ( a , b ) :
* if a > = b : # < < < < < < < < < < < < < <
* return a
* else :
*/
__pyx_t_1 = PyObject_RichCompare ( __pyx_v_a , __pyx_v_b , Py_GE ) ; __Pyx_XGOTREF ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 40 , __pyx_L1_error )
__pyx_t_2 = __Pyx_PyObject_IsTrue ( __pyx_t_1 ) ; if ( unlikely ( __pyx_t_2 < 0 ) ) __PYX_ERR ( 0 , 40 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( __pyx_t_2 ) {
/* "detect.py":41
* def larger ( a , b ) :
* if a > = b :
* return a # < < < < < < < < < < < < < <
* else :
* return b
*/
__Pyx_XDECREF ( __pyx_r ) ;
__Pyx_INCREF ( __pyx_v_a ) ;
__pyx_r = __pyx_v_a ;
goto __pyx_L0 ;
/* "detect.py":40
*
* def larger ( a , b ) :
* if a > = b : # < < < < < < < < < < < < < <
* return a
* else :
*/
}
/* "detect.py":43
* return a
* else :
* return b # < < < < < < < < < < < < < <
*
*
*/
/*else*/ {
__Pyx_XDECREF ( __pyx_r ) ;
__Pyx_INCREF ( __pyx_v_b ) ;
__pyx_r = __pyx_v_b ;
goto __pyx_L0 ;
}
/* "detect.py":39
*
*
* def larger ( a , b ) : # < < < < < < < < < < < < < <
* if a > = b :
* return a
*/
/* function exit code */
__pyx_L1_error : ;
__Pyx_XDECREF ( __pyx_t_1 ) ;
__Pyx_AddTraceback ( " detect.larger " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
__pyx_r = NULL ;
__pyx_L0 : ;
__Pyx_XGIVEREF ( __pyx_r ) ;
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
/* "detect.py":46
*
*
* def smaller ( a , b ) : # < < < < < < < < < < < < < <
* if a < b :
* return a
*/
/* Python wrapper */
static PyObject * __pyx_pw_6detect_9smaller ( PyObject * __pyx_self , PyObject * __pyx_args , PyObject * __pyx_kwds ) ; /*proto*/
static PyMethodDef __pyx_mdef_6detect_9smaller = { " smaller " , ( PyCFunction ) ( void * ) ( PyCFunctionWithKeywords ) __pyx_pw_6detect_9smaller , METH_VARARGS | METH_KEYWORDS , 0 } ;
static PyObject * __pyx_pw_6detect_9smaller ( PyObject * __pyx_self , PyObject * __pyx_args , PyObject * __pyx_kwds ) {
PyObject * __pyx_v_a = 0 ;
PyObject * __pyx_v_b = 0 ;
PyObject * __pyx_r = 0 ;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " smaller (wrapper) " , 0 ) ;
{
static PyObject * * __pyx_pyargnames [ ] = { & __pyx_n_s_a , & __pyx_n_s_b , 0 } ;
PyObject * values [ 2 ] = { 0 , 0 } ;
if ( unlikely ( __pyx_kwds ) ) {
Py_ssize_t kw_args ;
const Py_ssize_t pos_args = PyTuple_GET_SIZE ( __pyx_args ) ;
switch ( pos_args ) {
case 2 : values [ 1 ] = PyTuple_GET_ITEM ( __pyx_args , 1 ) ;
CYTHON_FALLTHROUGH ;
case 1 : values [ 0 ] = PyTuple_GET_ITEM ( __pyx_args , 0 ) ;
CYTHON_FALLTHROUGH ;
case 0 : break ;
default : goto __pyx_L5_argtuple_error ;
}
kw_args = PyDict_Size ( __pyx_kwds ) ;
switch ( pos_args ) {
case 0 :
if ( likely ( ( values [ 0 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_a ) ) ! = 0 ) ) kw_args - - ;
else goto __pyx_L5_argtuple_error ;
CYTHON_FALLTHROUGH ;
case 1 :
if ( likely ( ( values [ 1 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_b ) ) ! = 0 ) ) kw_args - - ;
else {
__Pyx_RaiseArgtupleInvalid ( " smaller " , 1 , 2 , 2 , 1 ) ; __PYX_ERR ( 0 , 46 , __pyx_L3_error )
}
}
if ( unlikely ( kw_args > 0 ) ) {
if ( unlikely ( __Pyx_ParseOptionalKeywords ( __pyx_kwds , __pyx_pyargnames , 0 , values , pos_args , " smaller " ) < 0 ) ) __PYX_ERR ( 0 , 46 , __pyx_L3_error )
}
} else if ( PyTuple_GET_SIZE ( __pyx_args ) ! = 2 ) {
goto __pyx_L5_argtuple_error ;
} else {
values [ 0 ] = PyTuple_GET_ITEM ( __pyx_args , 0 ) ;
values [ 1 ] = PyTuple_GET_ITEM ( __pyx_args , 1 ) ;
}
__pyx_v_a = values [ 0 ] ;
__pyx_v_b = values [ 1 ] ;
}
goto __pyx_L4_argument_unpacking_done ;
__pyx_L5_argtuple_error : ;
__Pyx_RaiseArgtupleInvalid ( " smaller " , 1 , 2 , 2 , PyTuple_GET_SIZE ( __pyx_args ) ) ; __PYX_ERR ( 0 , 46 , __pyx_L3_error )
__pyx_L3_error : ;
__Pyx_AddTraceback ( " detect.smaller " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
__Pyx_RefNannyFinishContext ( ) ;
return NULL ;
__pyx_L4_argument_unpacking_done : ;
__pyx_r = __pyx_pf_6detect_8smaller ( __pyx_self , __pyx_v_a , __pyx_v_b ) ;
/* function exit code */
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
static PyObject * __pyx_pf_6detect_8smaller ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_a , PyObject * __pyx_v_b ) {
PyObject * __pyx_r = NULL ;
__Pyx_RefNannyDeclarations
PyObject * __pyx_t_1 = NULL ;
int __pyx_t_2 ;
__Pyx_RefNannySetupContext ( " smaller " , 0 ) ;
/* "detect.py":47
*
* def smaller ( a , b ) :
* if a < b : # < < < < < < < < < < < < < <
* return a
* else :
*/
__pyx_t_1 = PyObject_RichCompare ( __pyx_v_a , __pyx_v_b , Py_LT ) ; __Pyx_XGOTREF ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 47 , __pyx_L1_error )
__pyx_t_2 = __Pyx_PyObject_IsTrue ( __pyx_t_1 ) ; if ( unlikely ( __pyx_t_2 < 0 ) ) __PYX_ERR ( 0 , 47 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( __pyx_t_2 ) {
/* "detect.py":48
* def smaller ( a , b ) :
* if a < b :
* return a # < < < < < < < < < < < < < <
* else :
* return b
*/
__Pyx_XDECREF ( __pyx_r ) ;
__Pyx_INCREF ( __pyx_v_a ) ;
__pyx_r = __pyx_v_a ;
goto __pyx_L0 ;
/* "detect.py":47
*
* def smaller ( a , b ) :
* if a < b : # < < < < < < < < < < < < < <
* return a
* else :
*/
}
/* "detect.py":50
* return a
* else :
* return b # < < < < < < < < < < < < < <
*
*
*/
/*else*/ {
__Pyx_XDECREF ( __pyx_r ) ;
__Pyx_INCREF ( __pyx_v_b ) ;
__pyx_r = __pyx_v_b ;
goto __pyx_L0 ;
}
/* "detect.py":46
*
*
* def smaller ( a , b ) : # < < < < < < < < < < < < < <
* if a < b :
* return a
*/
/* function exit code */
__pyx_L1_error : ;
__Pyx_XDECREF ( __pyx_t_1 ) ;
__Pyx_AddTraceback ( " detect.smaller " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
__pyx_r = NULL ;
__pyx_L0 : ;
__Pyx_XGIVEREF ( __pyx_r ) ;
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
/* "detect.py":53
*
*
* def near ( a , b , close ) : # < < < < < < < < < < < < < <
* if abs ( a - b ) < close :
* return True
*/
/* Python wrapper */
static PyObject * __pyx_pw_6detect_11near ( PyObject * __pyx_self , PyObject * __pyx_args , PyObject * __pyx_kwds ) ; /*proto*/
static PyMethodDef __pyx_mdef_6detect_11near = { " near " , ( PyCFunction ) ( void * ) ( PyCFunctionWithKeywords ) __pyx_pw_6detect_11near , METH_VARARGS | METH_KEYWORDS , 0 } ;
static PyObject * __pyx_pw_6detect_11near ( PyObject * __pyx_self , PyObject * __pyx_args , PyObject * __pyx_kwds ) {
PyObject * __pyx_v_a = 0 ;
PyObject * __pyx_v_b = 0 ;
PyObject * __pyx_v_close = 0 ;
PyObject * __pyx_r = 0 ;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " near (wrapper) " , 0 ) ;
{
static PyObject * * __pyx_pyargnames [ ] = { & __pyx_n_s_a , & __pyx_n_s_b , & __pyx_n_s_close , 0 } ;
PyObject * values [ 3 ] = { 0 , 0 , 0 } ;
if ( unlikely ( __pyx_kwds ) ) {
Py_ssize_t kw_args ;
const Py_ssize_t pos_args = PyTuple_GET_SIZE ( __pyx_args ) ;
switch ( pos_args ) {
case 3 : values [ 2 ] = PyTuple_GET_ITEM ( __pyx_args , 2 ) ;
CYTHON_FALLTHROUGH ;
case 2 : values [ 1 ] = PyTuple_GET_ITEM ( __pyx_args , 1 ) ;
CYTHON_FALLTHROUGH ;
case 1 : values [ 0 ] = PyTuple_GET_ITEM ( __pyx_args , 0 ) ;
CYTHON_FALLTHROUGH ;
case 0 : break ;
default : goto __pyx_L5_argtuple_error ;
}
kw_args = PyDict_Size ( __pyx_kwds ) ;
switch ( pos_args ) {
case 0 :
if ( likely ( ( values [ 0 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_a ) ) ! = 0 ) ) kw_args - - ;
else goto __pyx_L5_argtuple_error ;
CYTHON_FALLTHROUGH ;
case 1 :
if ( likely ( ( values [ 1 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_b ) ) ! = 0 ) ) kw_args - - ;
else {
__Pyx_RaiseArgtupleInvalid ( " near " , 1 , 3 , 3 , 1 ) ; __PYX_ERR ( 0 , 53 , __pyx_L3_error )
}
CYTHON_FALLTHROUGH ;
case 2 :
if ( likely ( ( values [ 2 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_close ) ) ! = 0 ) ) kw_args - - ;
else {
__Pyx_RaiseArgtupleInvalid ( " near " , 1 , 3 , 3 , 2 ) ; __PYX_ERR ( 0 , 53 , __pyx_L3_error )
}
}
if ( unlikely ( kw_args > 0 ) ) {
if ( unlikely ( __Pyx_ParseOptionalKeywords ( __pyx_kwds , __pyx_pyargnames , 0 , values , pos_args , " near " ) < 0 ) ) __PYX_ERR ( 0 , 53 , __pyx_L3_error )
}
} else if ( PyTuple_GET_SIZE ( __pyx_args ) ! = 3 ) {
goto __pyx_L5_argtuple_error ;
} else {
values [ 0 ] = PyTuple_GET_ITEM ( __pyx_args , 0 ) ;
values [ 1 ] = PyTuple_GET_ITEM ( __pyx_args , 1 ) ;
values [ 2 ] = PyTuple_GET_ITEM ( __pyx_args , 2 ) ;
}
__pyx_v_a = values [ 0 ] ;
__pyx_v_b = values [ 1 ] ;
__pyx_v_close = values [ 2 ] ;
}
goto __pyx_L4_argument_unpacking_done ;
__pyx_L5_argtuple_error : ;
__Pyx_RaiseArgtupleInvalid ( " near " , 1 , 3 , 3 , PyTuple_GET_SIZE ( __pyx_args ) ) ; __PYX_ERR ( 0 , 53 , __pyx_L3_error )
__pyx_L3_error : ;
__Pyx_AddTraceback ( " detect.near " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
__Pyx_RefNannyFinishContext ( ) ;
return NULL ;
__pyx_L4_argument_unpacking_done : ;
__pyx_r = __pyx_pf_6detect_10near ( __pyx_self , __pyx_v_a , __pyx_v_b , __pyx_v_close ) ;
/* function exit code */
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
static PyObject * __pyx_pf_6detect_10near ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_a , PyObject * __pyx_v_b , PyObject * __pyx_v_close ) {
PyObject * __pyx_r = NULL ;
__Pyx_RefNannyDeclarations
PyObject * __pyx_t_1 = NULL ;
PyObject * __pyx_t_2 = NULL ;
int __pyx_t_3 ;
__Pyx_RefNannySetupContext ( " near " , 0 ) ;
/* "detect.py":54
*
* def near ( a , b , close ) :
* if abs ( a - b ) < close : # < < < < < < < < < < < < < <
* return True
* return False
*/
__pyx_t_1 = PyNumber_Subtract ( __pyx_v_a , __pyx_v_b ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 54 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_2 = __Pyx_PyNumber_Absolute ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 54 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = PyObject_RichCompare ( __pyx_t_2 , __pyx_v_close , Py_LT ) ; __Pyx_XGOTREF ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 54 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
__pyx_t_3 = __Pyx_PyObject_IsTrue ( __pyx_t_1 ) ; if ( unlikely ( __pyx_t_3 < 0 ) ) __PYX_ERR ( 0 , 54 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( __pyx_t_3 ) {
/* "detect.py":55
* def near ( a , b , close ) :
* if abs ( a - b ) < close :
* return True # < < < < < < < < < < < < < <
* return False
*
*/
__Pyx_XDECREF ( __pyx_r ) ;
__Pyx_INCREF ( Py_True ) ;
__pyx_r = Py_True ;
goto __pyx_L0 ;
/* "detect.py":54
*
* def near ( a , b , close ) :
* if abs ( a - b ) < close : # < < < < < < < < < < < < < <
* return True
* return False
*/
}
/* "detect.py":56
* if abs ( a - b ) < close :
* return True
* return False # < < < < < < < < < < < < < <
*
*
*/
__Pyx_XDECREF ( __pyx_r ) ;
__Pyx_INCREF ( Py_False ) ;
__pyx_r = Py_False ;
goto __pyx_L0 ;
/* "detect.py":53
*
*
* def near ( a , b , close ) : # < < < < < < < < < < < < < <
* if abs ( a - b ) < close :
* return True
*/
/* function exit code */
__pyx_L1_error : ;
__Pyx_XDECREF ( __pyx_t_1 ) ;
__Pyx_XDECREF ( __pyx_t_2 ) ;
__Pyx_AddTraceback ( " detect.near " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
__pyx_r = NULL ;
__pyx_L0 : ;
__Pyx_XGIVEREF ( __pyx_r ) ;
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
/* "detect.py":59
*
*
* def swap ( a , b ) : # < < < < < < < < < < < < < <
* tmp = a
* a = b
*/
/* Python wrapper */
static PyObject * __pyx_pw_6detect_13swap ( PyObject * __pyx_self , PyObject * __pyx_args , PyObject * __pyx_kwds ) ; /*proto*/
static PyMethodDef __pyx_mdef_6detect_13swap = { " swap " , ( PyCFunction ) ( void * ) ( PyCFunctionWithKeywords ) __pyx_pw_6detect_13swap , METH_VARARGS | METH_KEYWORDS , 0 } ;
static PyObject * __pyx_pw_6detect_13swap ( PyObject * __pyx_self , PyObject * __pyx_args , PyObject * __pyx_kwds ) {
PyObject * __pyx_v_a = 0 ;
PyObject * __pyx_v_b = 0 ;
PyObject * __pyx_r = 0 ;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " swap (wrapper) " , 0 ) ;
{
static PyObject * * __pyx_pyargnames [ ] = { & __pyx_n_s_a , & __pyx_n_s_b , 0 } ;
PyObject * values [ 2 ] = { 0 , 0 } ;
if ( unlikely ( __pyx_kwds ) ) {
Py_ssize_t kw_args ;
const Py_ssize_t pos_args = PyTuple_GET_SIZE ( __pyx_args ) ;
switch ( pos_args ) {
case 2 : values [ 1 ] = PyTuple_GET_ITEM ( __pyx_args , 1 ) ;
CYTHON_FALLTHROUGH ;
case 1 : values [ 0 ] = PyTuple_GET_ITEM ( __pyx_args , 0 ) ;
CYTHON_FALLTHROUGH ;
case 0 : break ;
default : goto __pyx_L5_argtuple_error ;
}
kw_args = PyDict_Size ( __pyx_kwds ) ;
switch ( pos_args ) {
case 0 :
if ( likely ( ( values [ 0 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_a ) ) ! = 0 ) ) kw_args - - ;
else goto __pyx_L5_argtuple_error ;
CYTHON_FALLTHROUGH ;
case 1 :
if ( likely ( ( values [ 1 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_b ) ) ! = 0 ) ) kw_args - - ;
else {
__Pyx_RaiseArgtupleInvalid ( " swap " , 1 , 2 , 2 , 1 ) ; __PYX_ERR ( 0 , 59 , __pyx_L3_error )
}
}
if ( unlikely ( kw_args > 0 ) ) {
if ( unlikely ( __Pyx_ParseOptionalKeywords ( __pyx_kwds , __pyx_pyargnames , 0 , values , pos_args , " swap " ) < 0 ) ) __PYX_ERR ( 0 , 59 , __pyx_L3_error )
}
} else if ( PyTuple_GET_SIZE ( __pyx_args ) ! = 2 ) {
goto __pyx_L5_argtuple_error ;
} else {
values [ 0 ] = PyTuple_GET_ITEM ( __pyx_args , 0 ) ;
values [ 1 ] = PyTuple_GET_ITEM ( __pyx_args , 1 ) ;
}
__pyx_v_a = values [ 0 ] ;
__pyx_v_b = values [ 1 ] ;
}
goto __pyx_L4_argument_unpacking_done ;
__pyx_L5_argtuple_error : ;
__Pyx_RaiseArgtupleInvalid ( " swap " , 1 , 2 , 2 , PyTuple_GET_SIZE ( __pyx_args ) ) ; __PYX_ERR ( 0 , 59 , __pyx_L3_error )
__pyx_L3_error : ;
__Pyx_AddTraceback ( " detect.swap " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
__Pyx_RefNannyFinishContext ( ) ;
return NULL ;
__pyx_L4_argument_unpacking_done : ;
__pyx_r = __pyx_pf_6detect_12swap ( __pyx_self , __pyx_v_a , __pyx_v_b ) ;
/* function exit code */
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
static PyObject * __pyx_pf_6detect_12swap ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_a , PyObject * __pyx_v_b ) {
PyObject * __pyx_v_tmp = NULL ;
PyObject * __pyx_r = NULL ;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " swap " , 0 ) ;
__Pyx_INCREF ( __pyx_v_a ) ;
__Pyx_INCREF ( __pyx_v_b ) ;
/* "detect.py":60
*
* def swap ( a , b ) :
* tmp = a # < < < < < < < < < < < < < <
* a = b
* b = tmp
*/
__Pyx_INCREF ( __pyx_v_a ) ;
__pyx_v_tmp = __pyx_v_a ;
/* "detect.py":61
* def swap ( a , b ) :
* tmp = a
* a = b # < < < < < < < < < < < < < <
* b = tmp
* " " "
*/
__Pyx_INCREF ( __pyx_v_b ) ;
__Pyx_DECREF_SET ( __pyx_v_a , __pyx_v_b ) ;
/* "detect.py":62
* tmp = a
* a = b
* b = tmp # < < < < < < < < < < < < < <
* " " "
* # construct the argument parse and parse the arguments
*/
__Pyx_INCREF ( __pyx_v_tmp ) ;
__Pyx_DECREF_SET ( __pyx_v_b , __pyx_v_tmp ) ;
/* "detect.py":59
*
*
* def swap ( a , b ) : # < < < < < < < < < < < < < <
* tmp = a
* a = b
*/
/* function exit code */
__pyx_r = Py_None ; __Pyx_INCREF ( Py_None ) ;
__Pyx_XDECREF ( __pyx_v_tmp ) ;
__Pyx_XDECREF ( __pyx_v_a ) ;
__Pyx_XDECREF ( __pyx_v_b ) ;
__Pyx_XGIVEREF ( __pyx_r ) ;
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
/* "detect.py":78
* args = vars ( ap . parse_args ( ) )
* args2 = ap . parse_args ( ) " " "
* def detect ( calibration_width , img_file , show , quick ) : # < < < < < < < < < < < < < <
* list = [ ]
* # if type ( args [ " number " ] ) = = type ( selected ) :
*/
/* Python wrapper */
static PyObject * __pyx_pw_6detect_15detect ( PyObject * __pyx_self , PyObject * __pyx_args , PyObject * __pyx_kwds ) ; /*proto*/
static PyMethodDef __pyx_mdef_6detect_15detect = { " detect " , ( PyCFunction ) ( void * ) ( PyCFunctionWithKeywords ) __pyx_pw_6detect_15detect , METH_VARARGS | METH_KEYWORDS , 0 } ;
static PyObject * __pyx_pw_6detect_15detect ( PyObject * __pyx_self , PyObject * __pyx_args , PyObject * __pyx_kwds ) {
PyObject * __pyx_v_calibration_width = 0 ;
PyObject * __pyx_v_img_file = 0 ;
PyObject * __pyx_v_show = 0 ;
PyObject * __pyx_v_quick = 0 ;
PyObject * __pyx_r = 0 ;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " detect (wrapper) " , 0 ) ;
{
static PyObject * * __pyx_pyargnames [ ] = { & __pyx_n_s_calibration_width , & __pyx_n_s_img_file , & __pyx_n_s_show , & __pyx_n_s_quick , 0 } ;
PyObject * values [ 4 ] = { 0 , 0 , 0 , 0 } ;
if ( unlikely ( __pyx_kwds ) ) {
Py_ssize_t kw_args ;
const Py_ssize_t pos_args = PyTuple_GET_SIZE ( __pyx_args ) ;
switch ( pos_args ) {
case 4 : values [ 3 ] = PyTuple_GET_ITEM ( __pyx_args , 3 ) ;
CYTHON_FALLTHROUGH ;
case 3 : values [ 2 ] = PyTuple_GET_ITEM ( __pyx_args , 2 ) ;
CYTHON_FALLTHROUGH ;
case 2 : values [ 1 ] = PyTuple_GET_ITEM ( __pyx_args , 1 ) ;
CYTHON_FALLTHROUGH ;
case 1 : values [ 0 ] = PyTuple_GET_ITEM ( __pyx_args , 0 ) ;
CYTHON_FALLTHROUGH ;
case 0 : break ;
default : goto __pyx_L5_argtuple_error ;
}
kw_args = PyDict_Size ( __pyx_kwds ) ;
switch ( pos_args ) {
case 0 :
if ( likely ( ( values [ 0 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_calibration_width ) ) ! = 0 ) ) kw_args - - ;
else goto __pyx_L5_argtuple_error ;
CYTHON_FALLTHROUGH ;
case 1 :
if ( likely ( ( values [ 1 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_img_file ) ) ! = 0 ) ) kw_args - - ;
else {
__Pyx_RaiseArgtupleInvalid ( " detect " , 1 , 4 , 4 , 1 ) ; __PYX_ERR ( 0 , 78 , __pyx_L3_error )
}
CYTHON_FALLTHROUGH ;
case 2 :
if ( likely ( ( values [ 2 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_show ) ) ! = 0 ) ) kw_args - - ;
else {
__Pyx_RaiseArgtupleInvalid ( " detect " , 1 , 4 , 4 , 2 ) ; __PYX_ERR ( 0 , 78 , __pyx_L3_error )
}
CYTHON_FALLTHROUGH ;
case 3 :
if ( likely ( ( values [ 3 ] = __Pyx_PyDict_GetItemStr ( __pyx_kwds , __pyx_n_s_quick ) ) ! = 0 ) ) kw_args - - ;
else {
__Pyx_RaiseArgtupleInvalid ( " detect " , 1 , 4 , 4 , 3 ) ; __PYX_ERR ( 0 , 78 , __pyx_L3_error )
}
}
if ( unlikely ( kw_args > 0 ) ) {
if ( unlikely ( __Pyx_ParseOptionalKeywords ( __pyx_kwds , __pyx_pyargnames , 0 , values , pos_args , " detect " ) < 0 ) ) __PYX_ERR ( 0 , 78 , __pyx_L3_error )
}
} else if ( PyTuple_GET_SIZE ( __pyx_args ) ! = 4 ) {
goto __pyx_L5_argtuple_error ;
} else {
values [ 0 ] = PyTuple_GET_ITEM ( __pyx_args , 0 ) ;
values [ 1 ] = PyTuple_GET_ITEM ( __pyx_args , 1 ) ;
values [ 2 ] = PyTuple_GET_ITEM ( __pyx_args , 2 ) ;
values [ 3 ] = PyTuple_GET_ITEM ( __pyx_args , 3 ) ;
}
__pyx_v_calibration_width = values [ 0 ] ;
__pyx_v_img_file = values [ 1 ] ;
__pyx_v_show = values [ 2 ] ;
__pyx_v_quick = values [ 3 ] ;
}
goto __pyx_L4_argument_unpacking_done ;
__pyx_L5_argtuple_error : ;
__Pyx_RaiseArgtupleInvalid ( " detect " , 1 , 4 , 4 , PyTuple_GET_SIZE ( __pyx_args ) ) ; __PYX_ERR ( 0 , 78 , __pyx_L3_error )
__pyx_L3_error : ;
__Pyx_AddTraceback ( " detect.detect " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
__Pyx_RefNannyFinishContext ( ) ;
return NULL ;
__pyx_L4_argument_unpacking_done : ;
__pyx_r = __pyx_pf_6detect_14detect ( __pyx_self , __pyx_v_calibration_width , __pyx_v_img_file , __pyx_v_show , __pyx_v_quick ) ;
/* function exit code */
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
static PyObject * __pyx_pf_6detect_14detect ( CYTHON_UNUSED PyObject * __pyx_self , PyObject * __pyx_v_calibration_width , PyObject * __pyx_v_img_file , PyObject * __pyx_v_show , PyObject * __pyx_v_quick ) {
PyObject * __pyx_v_list = NULL ;
PyObject * __pyx_v_image = NULL ;
PyObject * __pyx_v_gray = NULL ;
PyObject * __pyx_v_edged = NULL ;
PyObject * __pyx_v_cnts = NULL ;
PyObject * __pyx_v_pixelsPerMetric = NULL ;
PyObject * __pyx_v_num = NULL ;
PyObject * __pyx_v_c = NULL ;
PyObject * __pyx_v_orig = NULL ;
PyObject * __pyx_v_box = NULL ;
PyObject * __pyx_v_tl = NULL ;
PyObject * __pyx_v_tr = NULL ;
PyObject * __pyx_v_br = NULL ;
PyObject * __pyx_v_bl = NULL ;
PyObject * __pyx_v_tltrX = NULL ;
PyObject * __pyx_v_tltrY = NULL ;
PyObject * __pyx_v_blbrX = NULL ;
PyObject * __pyx_v_blbrY = NULL ;
PyObject * __pyx_v_tlblX = NULL ;
PyObject * __pyx_v_tlblY = NULL ;
PyObject * __pyx_v_trbrX = NULL ;
PyObject * __pyx_v_trbrY = NULL ;
PyObject * __pyx_v_dA = NULL ;
PyObject * __pyx_v_dB = NULL ;
PyObject * __pyx_v_area_box = NULL ;
PyObject * __pyx_v_x = NULL ;
PyObject * __pyx_v_y = NULL ;
PyObject * __pyx_v_radius = NULL ;
PyObject * __pyx_v_area_contour = NULL ;
PyObject * __pyx_v_area_circle = NULL ;
PyObject * __pyx_v_boxiness = NULL ;
PyObject * __pyx_v_circleness = NULL ;
int __pyx_v_circular ;
int __pyx_v_rectangular ;
PyObject * __pyx_v_mask = NULL ;
PyObject * __pyx_v_hsv = NULL ;
PyObject * __pyx_v_mean_val = NULL ;
PyObject * __pyx_v_objtype = NULL ;
PyObject * __pyx_v_objname = NULL ;
PyObject * __pyx_v_dimA = NULL ;
PyObject * __pyx_v_dimB = NULL ;
PyObject * __pyx_v_itemw = NULL ;
PyObject * __pyx_v_itemwr = NULL ;
PyObject * __pyx_v_itemh = NULL ;
PyObject * __pyx_v_itemhr = NULL ;
PyObject * __pyx_v_iteml = NULL ;
long __pyx_v_epsilon ;
PyObject * __pyx_v_approx = NULL ;
PyObject * __pyx_v_hull = NULL ;
PyObject * __pyx_v_hull2 = NULL ;
PyObject * __pyx_v_defects = NULL ;
PyObject * __pyx_v_convexness = NULL ;
CYTHON_UNUSED PyObject * __pyx_v_rows = NULL ;
PyObject * __pyx_v_cols = NULL ;
PyObject * __pyx_v_vx = NULL ;
PyObject * __pyx_v_vy = NULL ;
PyObject * __pyx_v_xx = NULL ;
PyObject * __pyx_v_yy = NULL ;
PyObject * __pyx_v_lefty = NULL ;
PyObject * __pyx_v_righty = NULL ;
PyObject * __pyx_v_slope = NULL ;
PyObject * __pyx_v_angle = NULL ;
PyObject * __pyx_v_xpos = NULL ;
PyObject * __pyx_v_ypos = NULL ;
PyObject * __pyx_v_xpos2 = NULL ;
PyObject * __pyx_v_ypos2 = NULL ;
PyObject * __pyx_v_output = NULL ;
PyObject * __pyx_r = NULL ;
__Pyx_RefNannyDeclarations
PyObject * __pyx_t_1 = NULL ;
int __pyx_t_2 ;
PyObject * __pyx_t_3 = NULL ;
PyObject * __pyx_t_4 = NULL ;
PyObject * __pyx_t_5 = NULL ;
PyObject * __pyx_t_6 = NULL ;
int __pyx_t_7 ;
int __pyx_t_8 ;
int __pyx_t_9 ;
PyObject * __pyx_t_10 = NULL ;
PyObject * __pyx_t_11 = NULL ;
Py_ssize_t __pyx_t_12 ;
PyObject * ( * __pyx_t_13 ) ( PyObject * ) ;
PyObject * ( * __pyx_t_14 ) ( PyObject * ) ;
PyObject * __pyx_t_15 = NULL ;
int __pyx_t_16 ;
__Pyx_RefNannySetupContext ( " detect " , 0 ) ;
/* "detect.py":79
* args2 = ap . parse_args ( ) " " "
* def detect ( calibration_width , img_file , show , quick ) :
* list = [ ] # < < < < < < < < < < < < < <
* # if type ( args [ " number " ] ) = = type ( selected ) :
* # selected = args [ " number " ]
*/
__pyx_t_1 = PyList_New ( 0 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 79 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_v_list = ( ( PyObject * ) __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":84
*
* # load the image , convert it to grayscale , and blur it slightly
* image = None # < < < < < < < < < < < < < <
* # print ( str ( type ( img_file ) ) )
* if str ( type ( img_file ) ) = = " <class 'numpy.ndarray'> " :
*/
__Pyx_INCREF ( Py_None ) ;
__pyx_v_image = Py_None ;
/* "detect.py":86
* image = None
* # print ( str ( type ( img_file ) ) )
* if str ( type ( img_file ) ) = = " <class 'numpy.ndarray'> " : # < < < < < < < < < < < < < <
* image = img_file . copy ( )
* else :
*/
__pyx_t_1 = __Pyx_PyObject_CallOneArg ( ( ( PyObject * ) ( & PyString_Type ) ) , ( ( PyObject * ) Py_TYPE ( __pyx_v_img_file ) ) ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 86 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_2 = ( __Pyx_PyString_Equals ( __pyx_t_1 , __pyx_kp_s_class_numpy_ndarray , Py_EQ ) ) ; if ( unlikely ( __pyx_t_2 < 0 ) ) __PYX_ERR ( 0 , 86 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( __pyx_t_2 ) {
/* "detect.py":87
* # print ( str ( type ( img_file ) ) )
* if str ( type ( img_file ) ) = = " <class 'numpy.ndarray'> " :
* image = img_file . copy ( ) # < < < < < < < < < < < < < <
* else :
* image = cv2 . imread ( img_file )
*/
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_v_img_file , __pyx_n_s_copy ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 87 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_4 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_3 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_3 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_3 , function ) ;
}
}
__pyx_t_1 = ( __pyx_t_4 ) ? __Pyx_PyObject_CallOneArg ( __pyx_t_3 , __pyx_t_4 ) : __Pyx_PyObject_CallNoArg ( __pyx_t_3 ) ;
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 87 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_image , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":86
* image = None
* # print ( str ( type ( img_file ) ) )
* if str ( type ( img_file ) ) = = " <class 'numpy.ndarray'> " : # < < < < < < < < < < < < < <
* image = img_file . copy ( )
* else :
*/
goto __pyx_L3 ;
}
/* "detect.py":89
* image = img_file . copy ( )
* else :
* image = cv2 . imread ( img_file ) # < < < < < < < < < < < < < <
*
* # image = img_file . copy ( )
*/
/*else*/ {
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 89 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_imread ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 89 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_3 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_3 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
}
}
__pyx_t_1 = ( __pyx_t_3 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_4 , __pyx_t_3 , __pyx_v_img_file ) : __Pyx_PyObject_CallOneArg ( __pyx_t_4 , __pyx_v_img_file ) ;
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 89 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_image , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
}
__pyx_L3 : ;
/* "detect.py":93
* # image = img_file . copy ( )
* # image = cv2 . resize ( image , ( int ( image . shape [ 1 ] * 1 ) , int ( image . shape [ 0 ] * 1 ) ) )
* image = cv2 . resize ( image , ( 1000 , int ( # < < < < < < < < < < < < < <
* image . shape [ 0 ] / image . shape [ 1 ] * 1000 ) ) , interpolation = cv2 . INTER_NEAREST )
*
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 93 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_resize ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 93 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
/* "detect.py":94
* # image = cv2 . resize ( image , ( int ( image . shape [ 1 ] * 1 ) , int ( image . shape [ 0 ] * 1 ) ) )
* image = cv2 . resize ( image , ( 1000 , int (
* image . shape [ 0 ] / image . shape [ 1 ] * 1000 ) ) , interpolation = cv2 . INTER_NEAREST ) # < < < < < < < < < < < < < <
*
* if show and not quick :
*/
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_v_image , __pyx_n_s_shape ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 94 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_3 = __Pyx_GetItemInt ( __pyx_t_1 , 0 , long , 1 , __Pyx_PyInt_From_long , 0 , 0 , 1 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 94 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_v_image , __pyx_n_s_shape ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 94 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_5 = __Pyx_GetItemInt ( __pyx_t_1 , 1 , long , 1 , __Pyx_PyInt_From_long , 0 , 0 , 1 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 94 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = __Pyx_PyNumber_Divide ( __pyx_t_3 , __pyx_t_5 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 94 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__pyx_t_5 = PyNumber_Multiply ( __pyx_t_1 , __pyx_int_1000 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 94 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
/* "detect.py":93
* # image = img_file . copy ( )
* # image = cv2 . resize ( image , ( int ( image . shape [ 1 ] * 1 ) , int ( image . shape [ 0 ] * 1 ) ) )
* image = cv2 . resize ( image , ( 1000 , int ( # < < < < < < < < < < < < < <
* image . shape [ 0 ] / image . shape [ 1 ] * 1000 ) ) , interpolation = cv2 . INTER_NEAREST )
*
*/
__pyx_t_1 = __Pyx_PyNumber_Int ( __pyx_t_5 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 93 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__pyx_t_5 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 93 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_INCREF ( __pyx_int_1000 ) ;
__Pyx_GIVEREF ( __pyx_int_1000 ) ;
PyTuple_SET_ITEM ( __pyx_t_5 , 0 , __pyx_int_1000 ) ;
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_5 , 1 , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
__pyx_t_1 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 93 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_v_image ) ;
__Pyx_GIVEREF ( __pyx_v_image ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_v_image ) ;
__Pyx_GIVEREF ( __pyx_t_5 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 , __pyx_t_5 ) ;
__pyx_t_5 = 0 ;
/* "detect.py":94
* # image = cv2 . resize ( image , ( int ( image . shape [ 1 ] * 1 ) , int ( image . shape [ 0 ] * 1 ) ) )
* image = cv2 . resize ( image , ( 1000 , int (
* image . shape [ 0 ] / image . shape [ 1 ] * 1000 ) ) , interpolation = cv2 . INTER_NEAREST ) # < < < < < < < < < < < < < <
*
* if show and not quick :
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized ( 1 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 94 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 94 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_INTER_NEAREST ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 94 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
if ( PyDict_SetItem ( __pyx_t_5 , __pyx_n_s_interpolation , __pyx_t_6 ) < 0 ) __PYX_ERR ( 0 , 94 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":93
* # image = img_file . copy ( )
* # image = cv2 . resize ( image , ( int ( image . shape [ 1 ] * 1 ) , int ( image . shape [ 0 ] * 1 ) ) )
* image = cv2 . resize ( image , ( 1000 , int ( # < < < < < < < < < < < < < <
* image . shape [ 0 ] / image . shape [ 1 ] * 1000 ) ) , interpolation = cv2 . INTER_NEAREST )
*
*/
__pyx_t_6 = __Pyx_PyObject_Call ( __pyx_t_4 , __pyx_t_1 , __pyx_t_5 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 93 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_image , __pyx_t_6 ) ;
__pyx_t_6 = 0 ;
/* "detect.py":96
* image . shape [ 0 ] / image . shape [ 1 ] * 1000 ) ) , interpolation = cv2 . INTER_NEAREST )
*
* if show and not quick : # < < < < < < < < < < < < < <
* cv2 . namedWindow ( " Item Sorter " )
* cv2 . imshow ( " Item Sorter " , image )
*/
__pyx_t_7 = __Pyx_PyObject_IsTrue ( __pyx_v_show ) ; if ( unlikely ( __pyx_t_7 < 0 ) ) __PYX_ERR ( 0 , 96 , __pyx_L1_error )
if ( __pyx_t_7 ) {
} else {
__pyx_t_2 = __pyx_t_7 ;
goto __pyx_L5_bool_binop_done ;
}
__pyx_t_7 = __Pyx_PyObject_IsTrue ( __pyx_v_quick ) ; if ( unlikely ( __pyx_t_7 < 0 ) ) __PYX_ERR ( 0 , 96 , __pyx_L1_error )
__pyx_t_8 = ( ( ! __pyx_t_7 ) ! = 0 ) ;
__pyx_t_2 = __pyx_t_8 ;
__pyx_L5_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":97
*
* if show and not quick :
* cv2 . namedWindow ( " Item Sorter " ) # < < < < < < < < < < < < < <
* cv2 . imshow ( " Item Sorter " , image )
* cv2 . waitKey ( 0 )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_5 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 97 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_5 , __pyx_n_s_namedWindow ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 97 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__pyx_t_5 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_5 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_5 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_5 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
}
}
__pyx_t_6 = ( __pyx_t_5 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_1 , __pyx_t_5 , __pyx_kp_s_Item_Sorter ) : __Pyx_PyObject_CallOneArg ( __pyx_t_1 , __pyx_kp_s_Item_Sorter ) ;
__Pyx_XDECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 97 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":98
* if show and not quick :
* cv2 . namedWindow ( " Item Sorter " )
* cv2 . imshow ( " Item Sorter " , image ) # < < < < < < < < < < < < < <
* cv2 . waitKey ( 0 )
* gray = cv2 . cvtColor ( image , cv2 . COLOR_BGR2GRAY )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 98 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_5 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_imshow ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 98 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_5 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_5 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_5 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_5 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_5 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_1 , __pyx_kp_s_Item_Sorter , __pyx_v_image } ;
__pyx_t_6 = __Pyx_PyFunction_FastCall ( __pyx_t_5 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 98 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_5 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_1 , __pyx_kp_s_Item_Sorter , __pyx_v_image } ;
__pyx_t_6 = __Pyx_PyCFunction_FastCall ( __pyx_t_5 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 98 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
} else
# endif
{
__pyx_t_4 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 98 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
if ( __pyx_t_1 ) {
__Pyx_GIVEREF ( __pyx_t_1 ) ; PyTuple_SET_ITEM ( __pyx_t_4 , 0 , __pyx_t_1 ) ; __pyx_t_1 = NULL ;
}
__Pyx_INCREF ( __pyx_kp_s_Item_Sorter ) ;
__Pyx_GIVEREF ( __pyx_kp_s_Item_Sorter ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 0 + __pyx_t_9 , __pyx_kp_s_Item_Sorter ) ;
__Pyx_INCREF ( __pyx_v_image ) ;
__Pyx_GIVEREF ( __pyx_v_image ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 1 + __pyx_t_9 , __pyx_v_image ) ;
__pyx_t_6 = __Pyx_PyObject_Call ( __pyx_t_5 , __pyx_t_4 , NULL ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 98 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
}
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":99
* cv2 . namedWindow ( " Item Sorter " )
* cv2 . imshow ( " Item Sorter " , image )
* cv2 . waitKey ( 0 ) # < < < < < < < < < < < < < <
* gray = cv2 . cvtColor ( image , cv2 . COLOR_BGR2GRAY )
* gray = cv2 . GaussianBlur ( gray , ( 5 , 5 ) , 0 )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_5 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 99 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_5 , __pyx_n_s_waitKey ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 99 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__pyx_t_5 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_5 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_5 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_5 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
}
}
__pyx_t_6 = ( __pyx_t_5 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_4 , __pyx_t_5 , __pyx_int_0 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_4 , __pyx_int_0 ) ;
__Pyx_XDECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 99 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":96
* image . shape [ 0 ] / image . shape [ 1 ] * 1000 ) ) , interpolation = cv2 . INTER_NEAREST )
*
* if show and not quick : # < < < < < < < < < < < < < <
* cv2 . namedWindow ( " Item Sorter " )
* cv2 . imshow ( " Item Sorter " , image )
*/
}
/* "detect.py":100
* cv2 . imshow ( " Item Sorter " , image )
* cv2 . waitKey ( 0 )
* gray = cv2 . cvtColor ( image , cv2 . COLOR_BGR2GRAY ) # < < < < < < < < < < < < < <
* gray = cv2 . GaussianBlur ( gray , ( 5 , 5 ) , 0 )
* if show and not quick :
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 100 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_5 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_cvtColor ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 100 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 100 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_COLOR_BGR2GRAY ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 100 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_5 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_5 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_5 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_5 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_5 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_4 , __pyx_v_image , __pyx_t_1 } ;
__pyx_t_6 = __Pyx_PyFunction_FastCall ( __pyx_t_5 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 100 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_5 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_4 , __pyx_v_image , __pyx_t_1 } ;
__pyx_t_6 = __Pyx_PyCFunction_FastCall ( __pyx_t_5 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 100 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else
# endif
{
__pyx_t_3 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 100 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
if ( __pyx_t_4 ) {
__Pyx_GIVEREF ( __pyx_t_4 ) ; PyTuple_SET_ITEM ( __pyx_t_3 , 0 , __pyx_t_4 ) ; __pyx_t_4 = NULL ;
}
__Pyx_INCREF ( __pyx_v_image ) ;
__Pyx_GIVEREF ( __pyx_v_image ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 0 + __pyx_t_9 , __pyx_v_image ) ;
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 1 + __pyx_t_9 , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
__pyx_t_6 = __Pyx_PyObject_Call ( __pyx_t_5 , __pyx_t_3 , NULL ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 100 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
}
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__pyx_v_gray = __pyx_t_6 ;
__pyx_t_6 = 0 ;
/* "detect.py":101
* cv2 . waitKey ( 0 )
* gray = cv2 . cvtColor ( image , cv2 . COLOR_BGR2GRAY )
* gray = cv2 . GaussianBlur ( gray , ( 5 , 5 ) , 0 ) # < < < < < < < < < < < < < <
* if show and not quick :
* cv2 . imshow ( " Item Sorter " , gray )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_5 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 101 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_5 , __pyx_n_s_GaussianBlur ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 101 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__pyx_t_5 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_3 ) ) ) {
__pyx_t_5 = PyMethod_GET_SELF ( __pyx_t_3 ) ;
if ( likely ( __pyx_t_5 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_t_5 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_3 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_5 , __pyx_v_gray , __pyx_tuple_ , __pyx_int_0 } ;
__pyx_t_6 = __Pyx_PyFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 101 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_5 , __pyx_v_gray , __pyx_tuple_ , __pyx_int_0 } ;
__pyx_t_6 = __Pyx_PyCFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 101 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
} else
# endif
{
__pyx_t_1 = PyTuple_New ( 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 101 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
if ( __pyx_t_5 ) {
__Pyx_GIVEREF ( __pyx_t_5 ) ; PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_t_5 ) ; __pyx_t_5 = NULL ;
}
__Pyx_INCREF ( __pyx_v_gray ) ;
__Pyx_GIVEREF ( __pyx_v_gray ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 + __pyx_t_9 , __pyx_v_gray ) ;
__Pyx_INCREF ( __pyx_tuple_ ) ;
__Pyx_GIVEREF ( __pyx_tuple_ ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 + __pyx_t_9 , __pyx_tuple_ ) ;
__Pyx_INCREF ( __pyx_int_0 ) ;
__Pyx_GIVEREF ( __pyx_int_0 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 2 + __pyx_t_9 , __pyx_int_0 ) ;
__pyx_t_6 = __Pyx_PyObject_Call ( __pyx_t_3 , __pyx_t_1 , NULL ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 101 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
}
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_gray , __pyx_t_6 ) ;
__pyx_t_6 = 0 ;
/* "detect.py":102
* gray = cv2 . cvtColor ( image , cv2 . COLOR_BGR2GRAY )
* gray = cv2 . GaussianBlur ( gray , ( 5 , 5 ) , 0 )
* if show and not quick : # < < < < < < < < < < < < < <
* cv2 . imshow ( " Item Sorter " , gray )
* cv2 . waitKey ( 0 )
*/
__pyx_t_8 = __Pyx_PyObject_IsTrue ( __pyx_v_show ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 102 , __pyx_L1_error )
if ( __pyx_t_8 ) {
} else {
__pyx_t_2 = __pyx_t_8 ;
goto __pyx_L8_bool_binop_done ;
}
__pyx_t_8 = __Pyx_PyObject_IsTrue ( __pyx_v_quick ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 102 , __pyx_L1_error )
__pyx_t_7 = ( ( ! __pyx_t_8 ) ! = 0 ) ;
__pyx_t_2 = __pyx_t_7 ;
__pyx_L8_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":103
* gray = cv2 . GaussianBlur ( gray , ( 5 , 5 ) , 0 )
* if show and not quick :
* cv2 . imshow ( " Item Sorter " , gray ) # < < < < < < < < < < < < < <
* cv2 . waitKey ( 0 )
*
*/
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 103 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_imshow ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 103 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_3 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_3 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_3 , __pyx_kp_s_Item_Sorter , __pyx_v_gray } ;
__pyx_t_6 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 103 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_3 , __pyx_kp_s_Item_Sorter , __pyx_v_gray } ;
__pyx_t_6 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 103 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
} else
# endif
{
__pyx_t_5 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 103 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
if ( __pyx_t_3 ) {
__Pyx_GIVEREF ( __pyx_t_3 ) ; PyTuple_SET_ITEM ( __pyx_t_5 , 0 , __pyx_t_3 ) ; __pyx_t_3 = NULL ;
}
__Pyx_INCREF ( __pyx_kp_s_Item_Sorter ) ;
__Pyx_GIVEREF ( __pyx_kp_s_Item_Sorter ) ;
PyTuple_SET_ITEM ( __pyx_t_5 , 0 + __pyx_t_9 , __pyx_kp_s_Item_Sorter ) ;
__Pyx_INCREF ( __pyx_v_gray ) ;
__Pyx_GIVEREF ( __pyx_v_gray ) ;
PyTuple_SET_ITEM ( __pyx_t_5 , 1 + __pyx_t_9 , __pyx_v_gray ) ;
__pyx_t_6 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_5 , NULL ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 103 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":104
* if show and not quick :
* cv2 . imshow ( " Item Sorter " , gray )
* cv2 . waitKey ( 0 ) # < < < < < < < < < < < < < <
*
* # perform edge detection , then perform a dilation + erosion to
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 104 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_5 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_waitKey ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 104 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_5 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_5 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_5 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_5 , function ) ;
}
}
__pyx_t_6 = ( __pyx_t_1 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_5 , __pyx_t_1 , __pyx_int_0 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_5 , __pyx_int_0 ) ;
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 104 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":102
* gray = cv2 . cvtColor ( image , cv2 . COLOR_BGR2GRAY )
* gray = cv2 . GaussianBlur ( gray , ( 5 , 5 ) , 0 )
* if show and not quick : # < < < < < < < < < < < < < <
* cv2 . imshow ( " Item Sorter " , gray )
* cv2 . waitKey ( 0 )
*/
}
/* "detect.py":108
* # perform edge detection , then perform a dilation + erosion to
* # close gaps in between object edges
* edged = cv2 . Canny ( gray , 50 , 100 ) # < < < < < < < < < < < < < <
* if show and not quick :
* cv2 . imshow ( " Item Sorter " , edged )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_5 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 108 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_5 , __pyx_n_s_Canny ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 108 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__pyx_t_5 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_5 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_5 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_5 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_5 , __pyx_v_gray , __pyx_int_50 , __pyx_int_100 } ;
__pyx_t_6 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 108 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_5 , __pyx_v_gray , __pyx_int_50 , __pyx_int_100 } ;
__pyx_t_6 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 108 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
} else
# endif
{
__pyx_t_3 = PyTuple_New ( 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 108 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
if ( __pyx_t_5 ) {
__Pyx_GIVEREF ( __pyx_t_5 ) ; PyTuple_SET_ITEM ( __pyx_t_3 , 0 , __pyx_t_5 ) ; __pyx_t_5 = NULL ;
}
__Pyx_INCREF ( __pyx_v_gray ) ;
__Pyx_GIVEREF ( __pyx_v_gray ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 0 + __pyx_t_9 , __pyx_v_gray ) ;
__Pyx_INCREF ( __pyx_int_50 ) ;
__Pyx_GIVEREF ( __pyx_int_50 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 1 + __pyx_t_9 , __pyx_int_50 ) ;
__Pyx_INCREF ( __pyx_int_100 ) ;
__Pyx_GIVEREF ( __pyx_int_100 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 2 + __pyx_t_9 , __pyx_int_100 ) ;
__pyx_t_6 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_3 , NULL ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 108 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_v_edged = __pyx_t_6 ;
__pyx_t_6 = 0 ;
/* "detect.py":109
* # close gaps in between object edges
* edged = cv2 . Canny ( gray , 50 , 100 )
* if show and not quick : # < < < < < < < < < < < < < <
* cv2 . imshow ( " Item Sorter " , edged )
* cv2 . waitKey ( 0 )
*/
__pyx_t_7 = __Pyx_PyObject_IsTrue ( __pyx_v_show ) ; if ( unlikely ( __pyx_t_7 < 0 ) ) __PYX_ERR ( 0 , 109 , __pyx_L1_error )
if ( __pyx_t_7 ) {
} else {
__pyx_t_2 = __pyx_t_7 ;
goto __pyx_L11_bool_binop_done ;
}
__pyx_t_7 = __Pyx_PyObject_IsTrue ( __pyx_v_quick ) ; if ( unlikely ( __pyx_t_7 < 0 ) ) __PYX_ERR ( 0 , 109 , __pyx_L1_error )
__pyx_t_8 = ( ( ! __pyx_t_7 ) ! = 0 ) ;
__pyx_t_2 = __pyx_t_8 ;
__pyx_L11_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":110
* edged = cv2 . Canny ( gray , 50 , 100 )
* if show and not quick :
* cv2 . imshow ( " Item Sorter " , edged ) # < < < < < < < < < < < < < <
* cv2 . waitKey ( 0 )
*
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 110 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_imshow ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 110 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_3 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_3 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_3 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_1 , __pyx_kp_s_Item_Sorter , __pyx_v_edged } ;
__pyx_t_6 = __Pyx_PyFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 110 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_1 , __pyx_kp_s_Item_Sorter , __pyx_v_edged } ;
__pyx_t_6 = __Pyx_PyCFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 110 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
} else
# endif
{
__pyx_t_5 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 110 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
if ( __pyx_t_1 ) {
__Pyx_GIVEREF ( __pyx_t_1 ) ; PyTuple_SET_ITEM ( __pyx_t_5 , 0 , __pyx_t_1 ) ; __pyx_t_1 = NULL ;
}
__Pyx_INCREF ( __pyx_kp_s_Item_Sorter ) ;
__Pyx_GIVEREF ( __pyx_kp_s_Item_Sorter ) ;
PyTuple_SET_ITEM ( __pyx_t_5 , 0 + __pyx_t_9 , __pyx_kp_s_Item_Sorter ) ;
__Pyx_INCREF ( __pyx_v_edged ) ;
__Pyx_GIVEREF ( __pyx_v_edged ) ;
PyTuple_SET_ITEM ( __pyx_t_5 , 1 + __pyx_t_9 , __pyx_v_edged ) ;
__pyx_t_6 = __Pyx_PyObject_Call ( __pyx_t_3 , __pyx_t_5 , NULL ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 110 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
}
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":111
* if show and not quick :
* cv2 . imshow ( " Item Sorter " , edged )
* cv2 . waitKey ( 0 ) # < < < < < < < < < < < < < <
*
* edged = cv2 . dilate ( edged , None , iterations = 1 )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 111 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_5 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_waitKey ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 111 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_5 ) ) ) {
__pyx_t_3 = PyMethod_GET_SELF ( __pyx_t_5 ) ;
if ( likely ( __pyx_t_3 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_5 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_5 , function ) ;
}
}
__pyx_t_6 = ( __pyx_t_3 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_5 , __pyx_t_3 , __pyx_int_0 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_5 , __pyx_int_0 ) ;
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 111 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":109
* # close gaps in between object edges
* edged = cv2 . Canny ( gray , 50 , 100 )
* if show and not quick : # < < < < < < < < < < < < < <
* cv2 . imshow ( " Item Sorter " , edged )
* cv2 . waitKey ( 0 )
*/
}
/* "detect.py":113
* cv2 . waitKey ( 0 )
*
* edged = cv2 . dilate ( edged , None , iterations = 1 ) # < < < < < < < < < < < < < <
* edged = cv2 . erode ( edged , None , iterations = 1 )
*
*/
__Pyx_GetModuleGlobalName ( __pyx_t_6 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 113 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_5 = __Pyx_PyObject_GetAttrStr ( __pyx_t_6 , __pyx_n_s_dilate ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 113 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__pyx_t_6 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 113 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_INCREF ( __pyx_v_edged ) ;
__Pyx_GIVEREF ( __pyx_v_edged ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 0 , __pyx_v_edged ) ;
__Pyx_INCREF ( Py_None ) ;
__Pyx_GIVEREF ( Py_None ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 1 , Py_None ) ;
__pyx_t_3 = __Pyx_PyDict_NewPresized ( 1 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 113 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
if ( PyDict_SetItem ( __pyx_t_3 , __pyx_n_s_iterations , __pyx_int_1 ) < 0 ) __PYX_ERR ( 0 , 113 , __pyx_L1_error )
__pyx_t_1 = __Pyx_PyObject_Call ( __pyx_t_5 , __pyx_t_6 , __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 113 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_edged , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":114
*
* edged = cv2 . dilate ( edged , None , iterations = 1 )
* edged = cv2 . erode ( edged , None , iterations = 1 ) # < < < < < < < < < < < < < <
*
* if show and not quick :
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 114 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_erode ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 114 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 114 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_v_edged ) ;
__Pyx_GIVEREF ( __pyx_v_edged ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_v_edged ) ;
__Pyx_INCREF ( Py_None ) ;
__Pyx_GIVEREF ( Py_None ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 , Py_None ) ;
__pyx_t_6 = __Pyx_PyDict_NewPresized ( 1 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 114 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
if ( PyDict_SetItem ( __pyx_t_6 , __pyx_n_s_iterations , __pyx_int_1 ) < 0 ) __PYX_ERR ( 0 , 114 , __pyx_L1_error )
__pyx_t_5 = __Pyx_PyObject_Call ( __pyx_t_3 , __pyx_t_1 , __pyx_t_6 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 114 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_edged , __pyx_t_5 ) ;
__pyx_t_5 = 0 ;
/* "detect.py":116
* edged = cv2 . erode ( edged , None , iterations = 1 )
*
* if show and not quick : # < < < < < < < < < < < < < <
* cv2 . imshow ( " Item Sorter " , edged )
* cv2 . waitKey ( 0 )
*/
__pyx_t_8 = __Pyx_PyObject_IsTrue ( __pyx_v_show ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 116 , __pyx_L1_error )
if ( __pyx_t_8 ) {
} else {
__pyx_t_2 = __pyx_t_8 ;
goto __pyx_L14_bool_binop_done ;
}
__pyx_t_8 = __Pyx_PyObject_IsTrue ( __pyx_v_quick ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 116 , __pyx_L1_error )
__pyx_t_7 = ( ( ! __pyx_t_8 ) ! = 0 ) ;
__pyx_t_2 = __pyx_t_7 ;
__pyx_L14_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":117
*
* if show and not quick :
* cv2 . imshow ( " Item Sorter " , edged ) # < < < < < < < < < < < < < <
* cv2 . waitKey ( 0 )
* # find contours in the edge map
*/
__Pyx_GetModuleGlobalName ( __pyx_t_6 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 117 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_6 , __pyx_n_s_imshow ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 117 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__pyx_t_6 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_6 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_6 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_6 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_6 , __pyx_kp_s_Item_Sorter , __pyx_v_edged } ;
__pyx_t_5 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 117 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_5 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_6 , __pyx_kp_s_Item_Sorter , __pyx_v_edged } ;
__pyx_t_5 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 117 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_5 ) ;
} else
# endif
{
__pyx_t_3 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 117 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
if ( __pyx_t_6 ) {
__Pyx_GIVEREF ( __pyx_t_6 ) ; PyTuple_SET_ITEM ( __pyx_t_3 , 0 , __pyx_t_6 ) ; __pyx_t_6 = NULL ;
}
__Pyx_INCREF ( __pyx_kp_s_Item_Sorter ) ;
__Pyx_GIVEREF ( __pyx_kp_s_Item_Sorter ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 0 + __pyx_t_9 , __pyx_kp_s_Item_Sorter ) ;
__Pyx_INCREF ( __pyx_v_edged ) ;
__Pyx_GIVEREF ( __pyx_v_edged ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 1 + __pyx_t_9 , __pyx_v_edged ) ;
__pyx_t_5 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_3 , NULL ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 117 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
/* "detect.py":118
* if show and not quick :
* cv2 . imshow ( " Item Sorter " , edged )
* cv2 . waitKey ( 0 ) # < < < < < < < < < < < < < <
* # find contours in the edge map
* cnts = cv2 . findContours ( edged . copy ( ) , cv2 . RETR_EXTERNAL ,
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 118 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_waitKey ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 118 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_3 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_3 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_3 , function ) ;
}
}
__pyx_t_5 = ( __pyx_t_1 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_3 , __pyx_t_1 , __pyx_int_0 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_3 , __pyx_int_0 ) ;
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 118 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
/* "detect.py":116
* edged = cv2 . erode ( edged , None , iterations = 1 )
*
* if show and not quick : # < < < < < < < < < < < < < <
* cv2 . imshow ( " Item Sorter " , edged )
* cv2 . waitKey ( 0 )
*/
}
/* "detect.py":120
* cv2 . waitKey ( 0 )
* # find contours in the edge map
* cnts = cv2 . findContours ( edged . copy ( ) , cv2 . RETR_EXTERNAL , # < < < < < < < < < < < < < <
* cv2 . CHAIN_APPROX_SIMPLE )
* cnts = imutils . grab_contours ( cnts )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 120 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_findContours ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 120 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr ( __pyx_v_edged , __pyx_n_s_copy ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 120 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_4 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_6 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_6 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_6 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_6 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_4 ) ? __Pyx_PyObject_CallOneArg ( __pyx_t_6 , __pyx_t_4 ) : __Pyx_PyObject_CallNoArg ( __pyx_t_6 ) ;
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 120 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GetModuleGlobalName ( __pyx_t_6 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 120 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_6 , __pyx_n_s_RETR_EXTERNAL ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 120 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":121
* # find contours in the edge map
* cnts = cv2 . findContours ( edged . copy ( ) , cv2 . RETR_EXTERNAL ,
* cv2 . CHAIN_APPROX_SIMPLE ) # < < < < < < < < < < < < < <
* cnts = imutils . grab_contours ( cnts )
*
*/
__Pyx_GetModuleGlobalName ( __pyx_t_6 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 121 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_6 , __pyx_n_s_CHAIN_APPROX_SIMPLE ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 121 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__pyx_t_6 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_6 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_6 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_6 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_6 , __pyx_t_3 , __pyx_t_4 , __pyx_t_10 } ;
__pyx_t_5 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 120 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_6 , __pyx_t_3 , __pyx_t_4 , __pyx_t_10 } ;
__pyx_t_5 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 120 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else
# endif
{
__pyx_t_11 = PyTuple_New ( 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 120 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __pyx_t_6 ) {
__Pyx_GIVEREF ( __pyx_t_6 ) ; PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_t_6 ) ; __pyx_t_6 = NULL ;
}
__Pyx_GIVEREF ( __pyx_t_3 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 + __pyx_t_9 , __pyx_t_3 ) ;
__Pyx_GIVEREF ( __pyx_t_4 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 1 + __pyx_t_9 , __pyx_t_4 ) ;
__Pyx_GIVEREF ( __pyx_t_10 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 2 + __pyx_t_9 , __pyx_t_10 ) ;
__pyx_t_3 = 0 ;
__pyx_t_4 = 0 ;
__pyx_t_10 = 0 ;
__pyx_t_5 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_11 , NULL ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 120 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_v_cnts = __pyx_t_5 ;
__pyx_t_5 = 0 ;
/* "detect.py":122
* cnts = cv2 . findContours ( edged . copy ( ) , cv2 . RETR_EXTERNAL ,
* cv2 . CHAIN_APPROX_SIMPLE )
* cnts = imutils . grab_contours ( cnts ) # < < < < < < < < < < < < < <
*
* # sort the contours from left - to - right and initialize the
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_imutils ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 122 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_grab_contours ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 122 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
}
}
__pyx_t_5 = ( __pyx_t_1 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_11 , __pyx_t_1 , __pyx_v_cnts ) : __Pyx_PyObject_CallOneArg ( __pyx_t_11 , __pyx_v_cnts ) ;
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 122 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_cnts , __pyx_t_5 ) ;
__pyx_t_5 = 0 ;
/* "detect.py":127
* # ' pixels per metric ' calibration variable
* # ( cnts , _ ) = contours . sort_contours ( cnts )
* pixelsPerMetric = None # < < < < < < < < < < < < < <
* num = 0
*
*/
__Pyx_INCREF ( Py_None ) ;
__pyx_v_pixelsPerMetric = Py_None ;
/* "detect.py":128
* # ( cnts , _ ) = contours . sort_contours ( cnts )
* pixelsPerMetric = None
* num = 0 # < < < < < < < < < < < < < <
*
*
*/
__Pyx_INCREF ( __pyx_int_0 ) ;
__pyx_v_num = __pyx_int_0 ;
/* "detect.py":132
*
* # Calibration loop
* for c in cnts : # < < < < < < < < < < < < < <
* # if the contour is not sufficiently large , ignore it
* if cv2 . contourArea ( c ) < 100 :
*/
if ( likely ( PyList_CheckExact ( __pyx_v_cnts ) ) | | PyTuple_CheckExact ( __pyx_v_cnts ) ) {
__pyx_t_5 = __pyx_v_cnts ; __Pyx_INCREF ( __pyx_t_5 ) ; __pyx_t_12 = 0 ;
__pyx_t_13 = NULL ;
} else {
__pyx_t_12 = - 1 ; __pyx_t_5 = PyObject_GetIter ( __pyx_v_cnts ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 132 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__pyx_t_13 = Py_TYPE ( __pyx_t_5 ) - > tp_iternext ; if ( unlikely ( ! __pyx_t_13 ) ) __PYX_ERR ( 0 , 132 , __pyx_L1_error )
}
for ( ; ; ) {
if ( likely ( ! __pyx_t_13 ) ) {
if ( likely ( PyList_CheckExact ( __pyx_t_5 ) ) ) {
if ( __pyx_t_12 > = PyList_GET_SIZE ( __pyx_t_5 ) ) break ;
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_11 = PyList_GET_ITEM ( __pyx_t_5 , __pyx_t_12 ) ; __Pyx_INCREF ( __pyx_t_11 ) ; __pyx_t_12 + + ; if ( unlikely ( 0 < 0 ) ) __PYX_ERR ( 0 , 132 , __pyx_L1_error )
# else
__pyx_t_11 = PySequence_ITEM ( __pyx_t_5 , __pyx_t_12 ) ; __pyx_t_12 + + ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 132 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
# endif
} else {
if ( __pyx_t_12 > = PyTuple_GET_SIZE ( __pyx_t_5 ) ) break ;
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_11 = PyTuple_GET_ITEM ( __pyx_t_5 , __pyx_t_12 ) ; __Pyx_INCREF ( __pyx_t_11 ) ; __pyx_t_12 + + ; if ( unlikely ( 0 < 0 ) ) __PYX_ERR ( 0 , 132 , __pyx_L1_error )
# else
__pyx_t_11 = PySequence_ITEM ( __pyx_t_5 , __pyx_t_12 ) ; __pyx_t_12 + + ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 132 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
# endif
}
} else {
__pyx_t_11 = __pyx_t_13 ( __pyx_t_5 ) ;
if ( unlikely ( ! __pyx_t_11 ) ) {
PyObject * exc_type = PyErr_Occurred ( ) ;
if ( exc_type ) {
if ( likely ( __Pyx_PyErr_GivenExceptionMatches ( exc_type , PyExc_StopIteration ) ) ) PyErr_Clear ( ) ;
else __PYX_ERR ( 0 , 132 , __pyx_L1_error )
}
break ;
}
__Pyx_GOTREF ( __pyx_t_11 ) ;
}
__Pyx_XDECREF_SET ( __pyx_v_c , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":134
* for c in cnts :
* # if the contour is not sufficiently large , ignore it
* if cv2 . contourArea ( c ) < 100 : # < < < < < < < < < < < < < <
* continue
* # compute the rotated bounding box of the contour
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 134 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_contourArea ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 134 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
}
}
__pyx_t_11 = ( __pyx_t_1 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_10 , __pyx_t_1 , __pyx_v_c ) : __Pyx_PyObject_CallOneArg ( __pyx_t_10 , __pyx_v_c ) ;
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 134 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = PyObject_RichCompare ( __pyx_t_11 , __pyx_int_100 , Py_LT ) ; __Pyx_XGOTREF ( __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 134 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_2 = __Pyx_PyObject_IsTrue ( __pyx_t_10 ) ; if ( unlikely ( __pyx_t_2 < 0 ) ) __PYX_ERR ( 0 , 134 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( __pyx_t_2 ) {
/* "detect.py":135
* # if the contour is not sufficiently large , ignore it
* if cv2 . contourArea ( c ) < 100 :
* continue # < < < < < < < < < < < < < <
* # compute the rotated bounding box of the contour
* orig = image . copy ( )
*/
goto __pyx_L16_continue ;
/* "detect.py":134
* for c in cnts :
* # if the contour is not sufficiently large , ignore it
* if cv2 . contourArea ( c ) < 100 : # < < < < < < < < < < < < < <
* continue
* # compute the rotated bounding box of the contour
*/
}
/* "detect.py":137
* continue
* # compute the rotated bounding box of the contour
* orig = image . copy ( ) # < < < < < < < < < < < < < <
* box = cv2 . minAreaRect ( c )
* # xpos , ypos , w , h = cv2 . boundingRect ( c )
*/
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_v_image , __pyx_n_s_copy ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 137 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_1 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
}
}
__pyx_t_10 = ( __pyx_t_1 ) ? __Pyx_PyObject_CallOneArg ( __pyx_t_11 , __pyx_t_1 ) : __Pyx_PyObject_CallNoArg ( __pyx_t_11 ) ;
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 137 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_orig , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
/* "detect.py":138
* # compute the rotated bounding box of the contour
* orig = image . copy ( )
* box = cv2 . minAreaRect ( c ) # < < < < < < < < < < < < < <
* # xpos , ypos , w , h = cv2 . boundingRect ( c )
* # crop_img = orig [ ypos : ypos + h , xpos : xpos + w ]
*/
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 138 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_minAreaRect ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 138 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
}
}
__pyx_t_10 = ( __pyx_t_11 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_1 , __pyx_t_11 , __pyx_v_c ) : __Pyx_PyObject_CallOneArg ( __pyx_t_1 , __pyx_v_c ) ;
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 138 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_box , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
/* "detect.py":142
* # crop_img = orig [ ypos : ypos + h , xpos : xpos + w ]
* # cv2 . imwrite ( " object_images/IMG_ " + str ( w * h ) + " .jpg " , crop_img ) # create training images
* box = cv2 . cv . BoxPoints ( box ) if imutils . is_cv2 ( ) else cv2 . boxPoints ( box ) # < < < < < < < < < < < < < <
* box = np . array ( box , dtype = " int " )
* # box = perspective . order_points ( box )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_imutils ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 142 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_is_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 142 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
}
}
__pyx_t_1 = ( __pyx_t_11 ) ? __Pyx_PyObject_CallOneArg ( __pyx_t_4 , __pyx_t_11 ) : __Pyx_PyObject_CallNoArg ( __pyx_t_4 ) ;
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 142 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_2 = __Pyx_PyObject_IsTrue ( __pyx_t_1 ) ; if ( unlikely ( __pyx_t_2 < 0 ) ) __PYX_ERR ( 0 , 142 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( __pyx_t_2 ) {
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 142 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_cv ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 142 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_BoxPoints ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 142 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
}
}
__pyx_t_1 = ( __pyx_t_11 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_4 , __pyx_t_11 , __pyx_v_box ) : __Pyx_PyObject_CallOneArg ( __pyx_t_4 , __pyx_v_box ) ;
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 142 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_10 = __pyx_t_1 ;
__pyx_t_1 = 0 ;
} else {
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 142 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_boxPoints ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 142 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
}
}
__pyx_t_1 = ( __pyx_t_4 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_11 , __pyx_t_4 , __pyx_v_box ) : __Pyx_PyObject_CallOneArg ( __pyx_t_11 , __pyx_v_box ) ;
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 142 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_10 = __pyx_t_1 ;
__pyx_t_1 = 0 ;
}
__Pyx_DECREF_SET ( __pyx_v_box , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
/* "detect.py":143
* # cv2 . imwrite ( " object_images/IMG_ " + str ( w * h ) + " .jpg " , crop_img ) # create training images
* box = cv2 . cv . BoxPoints ( box ) if imutils . is_cv2 ( ) else cv2 . boxPoints ( box )
* box = np . array ( box , dtype = " int " ) # < < < < < < < < < < < < < <
* # box = perspective . order_points ( box )
* ( tl , tr , br , bl ) = box
*/
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 143 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_10 , __pyx_n_s_array ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 143 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = PyTuple_New ( 1 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 143 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_v_box ) ;
__Pyx_GIVEREF ( __pyx_v_box ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 0 , __pyx_v_box ) ;
__pyx_t_11 = __Pyx_PyDict_NewPresized ( 1 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 143 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( PyDict_SetItem ( __pyx_t_11 , __pyx_n_s_dtype , __pyx_n_s_int ) < 0 ) __PYX_ERR ( 0 , 143 , __pyx_L1_error )
__pyx_t_4 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_10 , __pyx_t_11 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 143 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_box , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":145
* box = np . array ( box , dtype = " int " )
* # box = perspective . order_points ( box )
* ( tl , tr , br , bl ) = box # < < < < < < < < < < < < < <
* ( tltrX , tltrY ) = midpoint ( tl , tr )
* ( blbrX , blbrY ) = midpoint ( bl , br )
*/
if ( ( likely ( PyTuple_CheckExact ( __pyx_v_box ) ) ) | | ( PyList_CheckExact ( __pyx_v_box ) ) ) {
PyObject * sequence = __pyx_v_box ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 4 ) ) {
if ( size > 4 ) __Pyx_RaiseTooManyValuesError ( 4 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 145 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_4 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_11 = PyTuple_GET_ITEM ( sequence , 1 ) ;
__pyx_t_10 = PyTuple_GET_ITEM ( sequence , 2 ) ;
__pyx_t_1 = PyTuple_GET_ITEM ( sequence , 3 ) ;
} else {
__pyx_t_4 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_11 = PyList_GET_ITEM ( sequence , 1 ) ;
__pyx_t_10 = PyList_GET_ITEM ( sequence , 2 ) ;
__pyx_t_1 = PyList_GET_ITEM ( sequence , 3 ) ;
}
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
# else
{
Py_ssize_t i ;
PyObject * * temps [ 4 ] = { & __pyx_t_4 , & __pyx_t_11 , & __pyx_t_10 , & __pyx_t_1 } ;
for ( i = 0 ; i < 4 ; i + + ) {
PyObject * item = PySequence_ITEM ( sequence , i ) ; if ( unlikely ( ! item ) ) __PYX_ERR ( 0 , 145 , __pyx_L1_error )
__Pyx_GOTREF ( item ) ;
* ( temps [ i ] ) = item ;
}
}
# endif
} else {
Py_ssize_t index = - 1 ;
PyObject * * temps [ 4 ] = { & __pyx_t_4 , & __pyx_t_11 , & __pyx_t_10 , & __pyx_t_1 } ;
__pyx_t_3 = PyObject_GetIter ( __pyx_v_box ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 145 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_14 = Py_TYPE ( __pyx_t_3 ) - > tp_iternext ;
for ( index = 0 ; index < 4 ; index + + ) {
PyObject * item = __pyx_t_14 ( __pyx_t_3 ) ; if ( unlikely ( ! item ) ) goto __pyx_L19_unpacking_failed ;
__Pyx_GOTREF ( item ) ;
* ( temps [ index ] ) = item ;
}
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_3 ) , 4 ) < 0 ) __PYX_ERR ( 0 , 145 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
goto __pyx_L20_unpacking_done ;
__pyx_L19_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 145 , __pyx_L1_error )
__pyx_L20_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_tl , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_tr , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_br , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_bl , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":146
* # box = perspective . order_points ( box )
* ( tl , tr , br , bl ) = box
* ( tltrX , tltrY ) = midpoint ( tl , tr ) # < < < < < < < < < < < < < <
* ( blbrX , blbrY ) = midpoint ( bl , br )
* ( tlblX , tlblY ) = midpoint ( tl , bl )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_midpoint ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 146 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_11 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_v_tl , __pyx_v_tr } ;
__pyx_t_1 = __Pyx_PyFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 146 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_1 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_v_tl , __pyx_v_tr } ;
__pyx_t_1 = __Pyx_PyCFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 146 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_1 ) ;
} else
# endif
{
__pyx_t_4 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 146 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
if ( __pyx_t_11 ) {
__Pyx_GIVEREF ( __pyx_t_11 ) ; PyTuple_SET_ITEM ( __pyx_t_4 , 0 , __pyx_t_11 ) ; __pyx_t_11 = NULL ;
}
__Pyx_INCREF ( __pyx_v_tl ) ;
__Pyx_GIVEREF ( __pyx_v_tl ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 0 + __pyx_t_9 , __pyx_v_tl ) ;
__Pyx_INCREF ( __pyx_v_tr ) ;
__Pyx_GIVEREF ( __pyx_v_tr ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 1 + __pyx_t_9 , __pyx_v_tr ) ;
__pyx_t_1 = __Pyx_PyObject_Call ( __pyx_t_10 , __pyx_t_4 , NULL ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 146 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
}
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_1 ) ) ) | | ( PyList_CheckExact ( __pyx_t_1 ) ) ) {
PyObject * sequence = __pyx_t_1 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 2 ) ) {
if ( size > 2 ) __Pyx_RaiseTooManyValuesError ( 2 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 146 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_10 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_4 = PyTuple_GET_ITEM ( sequence , 1 ) ;
} else {
__pyx_t_10 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_4 = PyList_GET_ITEM ( sequence , 1 ) ;
}
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
# else
__pyx_t_10 = PySequence_ITEM ( sequence , 0 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 146 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_4 = PySequence_ITEM ( sequence , 1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 146 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
# endif
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else {
Py_ssize_t index = - 1 ;
__pyx_t_11 = PyObject_GetIter ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 146 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_11 ) - > tp_iternext ;
index = 0 ; __pyx_t_10 = __pyx_t_14 ( __pyx_t_11 ) ; if ( unlikely ( ! __pyx_t_10 ) ) goto __pyx_L21_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
index = 1 ; __pyx_t_4 = __pyx_t_14 ( __pyx_t_11 ) ; if ( unlikely ( ! __pyx_t_4 ) ) goto __pyx_L21_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_11 ) , 2 ) < 0 ) __PYX_ERR ( 0 , 146 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
goto __pyx_L22_unpacking_done ;
__pyx_L21_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 146 , __pyx_L1_error )
__pyx_L22_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_tltrX , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_tltrY , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":147
* ( tl , tr , br , bl ) = box
* ( tltrX , tltrY ) = midpoint ( tl , tr )
* ( blbrX , blbrY ) = midpoint ( bl , br ) # < < < < < < < < < < < < < <
* ( tlblX , tlblY ) = midpoint ( tl , bl )
* ( trbrX , trbrY ) = midpoint ( tr , br )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_midpoint ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 147 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_10 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_10 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_10 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_4 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_10 , __pyx_v_bl , __pyx_v_br } ;
__pyx_t_1 = __Pyx_PyFunction_FastCall ( __pyx_t_4 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 147 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_GOTREF ( __pyx_t_1 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_4 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_10 , __pyx_v_bl , __pyx_v_br } ;
__pyx_t_1 = __Pyx_PyCFunction_FastCall ( __pyx_t_4 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 147 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_GOTREF ( __pyx_t_1 ) ;
} else
# endif
{
__pyx_t_11 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 147 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __pyx_t_10 ) {
__Pyx_GIVEREF ( __pyx_t_10 ) ; PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_t_10 ) ; __pyx_t_10 = NULL ;
}
__Pyx_INCREF ( __pyx_v_bl ) ;
__Pyx_GIVEREF ( __pyx_v_bl ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 + __pyx_t_9 , __pyx_v_bl ) ;
__Pyx_INCREF ( __pyx_v_br ) ;
__Pyx_GIVEREF ( __pyx_v_br ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 1 + __pyx_t_9 , __pyx_v_br ) ;
__pyx_t_1 = __Pyx_PyObject_Call ( __pyx_t_4 , __pyx_t_11 , NULL ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 147 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
}
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_1 ) ) ) | | ( PyList_CheckExact ( __pyx_t_1 ) ) ) {
PyObject * sequence = __pyx_t_1 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 2 ) ) {
if ( size > 2 ) __Pyx_RaiseTooManyValuesError ( 2 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 147 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_4 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_11 = PyTuple_GET_ITEM ( sequence , 1 ) ;
} else {
__pyx_t_4 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_11 = PyList_GET_ITEM ( sequence , 1 ) ;
}
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
# else
__pyx_t_4 = PySequence_ITEM ( sequence , 0 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 147 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_11 = PySequence_ITEM ( sequence , 1 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 147 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
# endif
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else {
Py_ssize_t index = - 1 ;
__pyx_t_10 = PyObject_GetIter ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 147 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_10 ) - > tp_iternext ;
index = 0 ; __pyx_t_4 = __pyx_t_14 ( __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_4 ) ) goto __pyx_L23_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
index = 1 ; __pyx_t_11 = __pyx_t_14 ( __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_11 ) ) goto __pyx_L23_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_10 ) , 2 ) < 0 ) __PYX_ERR ( 0 , 147 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
goto __pyx_L24_unpacking_done ;
__pyx_L23_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 147 , __pyx_L1_error )
__pyx_L24_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_blbrX , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_blbrY , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":148
* ( tltrX , tltrY ) = midpoint ( tl , tr )
* ( blbrX , blbrY ) = midpoint ( bl , br )
* ( tlblX , tlblY ) = midpoint ( tl , bl ) # < < < < < < < < < < < < < <
* ( trbrX , trbrY ) = midpoint ( tr , br )
* dA = np . linalg . norm ( np . array ( ( tltrX , tltrY , 0 ) ) -
*/
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_midpoint ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 148 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_4 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_11 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_4 , __pyx_v_tl , __pyx_v_bl } ;
__pyx_t_1 = __Pyx_PyFunction_FastCall ( __pyx_t_11 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 148 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_1 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_11 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_4 , __pyx_v_tl , __pyx_v_bl } ;
__pyx_t_1 = __Pyx_PyCFunction_FastCall ( __pyx_t_11 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 148 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_1 ) ;
} else
# endif
{
__pyx_t_10 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 148 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
if ( __pyx_t_4 ) {
__Pyx_GIVEREF ( __pyx_t_4 ) ; PyTuple_SET_ITEM ( __pyx_t_10 , 0 , __pyx_t_4 ) ; __pyx_t_4 = NULL ;
}
__Pyx_INCREF ( __pyx_v_tl ) ;
__Pyx_GIVEREF ( __pyx_v_tl ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 0 + __pyx_t_9 , __pyx_v_tl ) ;
__Pyx_INCREF ( __pyx_v_bl ) ;
__Pyx_GIVEREF ( __pyx_v_bl ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 1 + __pyx_t_9 , __pyx_v_bl ) ;
__pyx_t_1 = __Pyx_PyObject_Call ( __pyx_t_11 , __pyx_t_10 , NULL ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 148 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
}
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_1 ) ) ) | | ( PyList_CheckExact ( __pyx_t_1 ) ) ) {
PyObject * sequence = __pyx_t_1 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 2 ) ) {
if ( size > 2 ) __Pyx_RaiseTooManyValuesError ( 2 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 148 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_11 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_10 = PyTuple_GET_ITEM ( sequence , 1 ) ;
} else {
__pyx_t_11 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_10 = PyList_GET_ITEM ( sequence , 1 ) ;
}
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
# else
__pyx_t_11 = PySequence_ITEM ( sequence , 0 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 148 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_10 = PySequence_ITEM ( sequence , 1 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 148 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
# endif
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else {
Py_ssize_t index = - 1 ;
__pyx_t_4 = PyObject_GetIter ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 148 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_4 ) - > tp_iternext ;
index = 0 ; __pyx_t_11 = __pyx_t_14 ( __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_11 ) ) goto __pyx_L25_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
index = 1 ; __pyx_t_10 = __pyx_t_14 ( __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_10 ) ) goto __pyx_L25_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_4 ) , 2 ) < 0 ) __PYX_ERR ( 0 , 148 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
goto __pyx_L26_unpacking_done ;
__pyx_L25_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 148 , __pyx_L1_error )
__pyx_L26_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_tlblX , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_tlblY , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
/* "detect.py":149
* ( blbrX , blbrY ) = midpoint ( bl , br )
* ( tlblX , tlblY ) = midpoint ( tl , bl )
* ( trbrX , trbrY ) = midpoint ( tr , br ) # < < < < < < < < < < < < < <
* dA = np . linalg . norm ( np . array ( ( tltrX , tltrY , 0 ) ) -
* np . array ( ( blbrX , blbrY , 0 ) ) )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_midpoint ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 149 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_11 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_v_tr , __pyx_v_br } ;
__pyx_t_1 = __Pyx_PyFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 149 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_1 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_v_tr , __pyx_v_br } ;
__pyx_t_1 = __Pyx_PyCFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 149 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_1 ) ;
} else
# endif
{
__pyx_t_4 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 149 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
if ( __pyx_t_11 ) {
__Pyx_GIVEREF ( __pyx_t_11 ) ; PyTuple_SET_ITEM ( __pyx_t_4 , 0 , __pyx_t_11 ) ; __pyx_t_11 = NULL ;
}
__Pyx_INCREF ( __pyx_v_tr ) ;
__Pyx_GIVEREF ( __pyx_v_tr ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 0 + __pyx_t_9 , __pyx_v_tr ) ;
__Pyx_INCREF ( __pyx_v_br ) ;
__Pyx_GIVEREF ( __pyx_v_br ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 1 + __pyx_t_9 , __pyx_v_br ) ;
__pyx_t_1 = __Pyx_PyObject_Call ( __pyx_t_10 , __pyx_t_4 , NULL ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 149 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
}
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_1 ) ) ) | | ( PyList_CheckExact ( __pyx_t_1 ) ) ) {
PyObject * sequence = __pyx_t_1 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 2 ) ) {
if ( size > 2 ) __Pyx_RaiseTooManyValuesError ( 2 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 149 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_10 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_4 = PyTuple_GET_ITEM ( sequence , 1 ) ;
} else {
__pyx_t_10 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_4 = PyList_GET_ITEM ( sequence , 1 ) ;
}
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
# else
__pyx_t_10 = PySequence_ITEM ( sequence , 0 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 149 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_4 = PySequence_ITEM ( sequence , 1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 149 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
# endif
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else {
Py_ssize_t index = - 1 ;
__pyx_t_11 = PyObject_GetIter ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 149 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_11 ) - > tp_iternext ;
index = 0 ; __pyx_t_10 = __pyx_t_14 ( __pyx_t_11 ) ; if ( unlikely ( ! __pyx_t_10 ) ) goto __pyx_L27_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
index = 1 ; __pyx_t_4 = __pyx_t_14 ( __pyx_t_11 ) ; if ( unlikely ( ! __pyx_t_4 ) ) goto __pyx_L27_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_11 ) , 2 ) < 0 ) __PYX_ERR ( 0 , 149 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
goto __pyx_L28_unpacking_done ;
__pyx_L27_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 149 , __pyx_L1_error )
__pyx_L28_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_trbrX , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_trbrY , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":150
* ( tlblX , tlblY ) = midpoint ( tl , bl )
* ( trbrX , trbrY ) = midpoint ( tr , br )
* dA = np . linalg . norm ( np . array ( ( tltrX , tltrY , 0 ) ) - # < < < < < < < < < < < < < <
* np . array ( ( blbrX , blbrY , 0 ) ) )
* dB = np . linalg . norm ( np . array ( ( tlblX , tlblY , 0 ) ) -
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 150 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_linalg ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 150 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_10 , __pyx_n_s_norm ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 150 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 150 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_array ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 150 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = PyTuple_New ( 3 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 150 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_v_tltrX ) ;
__Pyx_GIVEREF ( __pyx_v_tltrX ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_v_tltrX ) ;
__Pyx_INCREF ( __pyx_v_tltrY ) ;
__Pyx_GIVEREF ( __pyx_v_tltrY ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 1 , __pyx_v_tltrY ) ;
__Pyx_INCREF ( __pyx_int_0 ) ;
__Pyx_GIVEREF ( __pyx_int_0 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 2 , __pyx_int_0 ) ;
__pyx_t_6 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_3 ) ) ) {
__pyx_t_6 = PyMethod_GET_SELF ( __pyx_t_3 ) ;
if ( likely ( __pyx_t_6 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_t_6 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_3 , function ) ;
}
}
__pyx_t_10 = ( __pyx_t_6 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_3 , __pyx_t_6 , __pyx_t_11 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_3 , __pyx_t_11 ) ;
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 150 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
/* "detect.py":151
* ( trbrX , trbrY ) = midpoint ( tr , br )
* dA = np . linalg . norm ( np . array ( ( tltrX , tltrY , 0 ) ) -
* np . array ( ( blbrX , blbrY , 0 ) ) ) # < < < < < < < < < < < < < <
* dB = np . linalg . norm ( np . array ( ( tlblX , tlblY , 0 ) ) -
* np . array ( ( trbrX , trbrY , 0 ) ) )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 151 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_array ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 151 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = PyTuple_New ( 3 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 151 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_v_blbrX ) ;
__Pyx_GIVEREF ( __pyx_v_blbrX ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_v_blbrX ) ;
__Pyx_INCREF ( __pyx_v_blbrY ) ;
__Pyx_GIVEREF ( __pyx_v_blbrY ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 1 , __pyx_v_blbrY ) ;
__Pyx_INCREF ( __pyx_int_0 ) ;
__Pyx_GIVEREF ( __pyx_int_0 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 2 , __pyx_int_0 ) ;
__pyx_t_15 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_6 ) ) ) {
__pyx_t_15 = PyMethod_GET_SELF ( __pyx_t_6 ) ;
if ( likely ( __pyx_t_15 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_6 ) ;
__Pyx_INCREF ( __pyx_t_15 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_6 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_15 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_6 , __pyx_t_15 , __pyx_t_11 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_6 , __pyx_t_11 ) ;
__Pyx_XDECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 151 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":150
* ( tlblX , tlblY ) = midpoint ( tl , bl )
* ( trbrX , trbrY ) = midpoint ( tr , br )
* dA = np . linalg . norm ( np . array ( ( tltrX , tltrY , 0 ) ) - # < < < < < < < < < < < < < <
* np . array ( ( blbrX , blbrY , 0 ) ) )
* dB = np . linalg . norm ( np . array ( ( tlblX , tlblY , 0 ) ) -
*/
__pyx_t_6 = PyNumber_Subtract ( __pyx_t_10 , __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 150 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_3 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_3 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
}
}
__pyx_t_1 = ( __pyx_t_3 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_4 , __pyx_t_3 , __pyx_t_6 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_4 , __pyx_t_6 ) ;
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 150 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_dA , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":152
* dA = np . linalg . norm ( np . array ( ( tltrX , tltrY , 0 ) ) -
* np . array ( ( blbrX , blbrY , 0 ) ) )
* dB = np . linalg . norm ( np . array ( ( tlblX , tlblY , 0 ) ) - # < < < < < < < < < < < < < <
* np . array ( ( trbrX , trbrY , 0 ) ) )
* area_box = dA * dB
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 152 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_linalg ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 152 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_6 , __pyx_n_s_norm ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 152 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 152 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_array ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 152 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = PyTuple_New ( 3 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 152 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_v_tlblX ) ;
__Pyx_GIVEREF ( __pyx_v_tlblX ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 0 , __pyx_v_tlblX ) ;
__Pyx_INCREF ( __pyx_v_tlblY ) ;
__Pyx_GIVEREF ( __pyx_v_tlblY ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 1 , __pyx_v_tlblY ) ;
__Pyx_INCREF ( __pyx_int_0 ) ;
__Pyx_GIVEREF ( __pyx_int_0 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 2 , __pyx_int_0 ) ;
__pyx_t_11 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
}
}
__pyx_t_6 = ( __pyx_t_11 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_10 , __pyx_t_11 , __pyx_t_3 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_10 , __pyx_t_3 ) ;
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 152 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
/* "detect.py":153
* np . array ( ( blbrX , blbrY , 0 ) ) )
* dB = np . linalg . norm ( np . array ( ( tlblX , tlblY , 0 ) ) -
* np . array ( ( trbrX , trbrY , 0 ) ) ) # < < < < < < < < < < < < < <
* area_box = dA * dB
* ( x , y ) , radius = cv2 . minEnclosingCircle ( c )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 153 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_array ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 153 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = PyTuple_New ( 3 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 153 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_v_trbrX ) ;
__Pyx_GIVEREF ( __pyx_v_trbrX ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 0 , __pyx_v_trbrX ) ;
__Pyx_INCREF ( __pyx_v_trbrY ) ;
__Pyx_GIVEREF ( __pyx_v_trbrY ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 1 , __pyx_v_trbrY ) ;
__Pyx_INCREF ( __pyx_int_0 ) ;
__Pyx_GIVEREF ( __pyx_int_0 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 2 , __pyx_int_0 ) ;
__pyx_t_15 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_15 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_15 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_15 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
}
}
__pyx_t_10 = ( __pyx_t_15 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_11 , __pyx_t_15 , __pyx_t_3 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_11 , __pyx_t_3 ) ;
__Pyx_XDECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 153 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
/* "detect.py":152
* dA = np . linalg . norm ( np . array ( ( tltrX , tltrY , 0 ) ) -
* np . array ( ( blbrX , blbrY , 0 ) ) )
* dB = np . linalg . norm ( np . array ( ( tlblX , tlblY , 0 ) ) - # < < < < < < < < < < < < < <
* np . array ( ( trbrX , trbrY , 0 ) ) )
* area_box = dA * dB
*/
__pyx_t_11 = PyNumber_Subtract ( __pyx_t_6 , __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 152 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_10 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_10 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
}
}
__pyx_t_1 = ( __pyx_t_10 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_4 , __pyx_t_10 , __pyx_t_11 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_4 , __pyx_t_11 ) ;
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 152 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_dB , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":154
* dB = np . linalg . norm ( np . array ( ( tlblX , tlblY , 0 ) ) -
* np . array ( ( trbrX , trbrY , 0 ) ) )
* area_box = dA * dB # < < < < < < < < < < < < < <
* ( x , y ) , radius = cv2 . minEnclosingCircle ( c )
* area_contour = cv2 . contourArea ( c )
*/
__pyx_t_1 = PyNumber_Multiply ( __pyx_v_dA , __pyx_v_dB ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 154 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_XDECREF_SET ( __pyx_v_area_box , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":155
* np . array ( ( trbrX , trbrY , 0 ) ) )
* area_box = dA * dB
* ( x , y ) , radius = cv2 . minEnclosingCircle ( c ) # < < < < < < < < < < < < < <
* area_contour = cv2 . contourArea ( c )
* area_circle = math . pi * pow ( radius , 2 )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 155 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_minEnclosingCircle ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 155 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
}
}
__pyx_t_1 = ( __pyx_t_4 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_11 , __pyx_t_4 , __pyx_v_c ) : __Pyx_PyObject_CallOneArg ( __pyx_t_11 , __pyx_v_c ) ;
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 155 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_1 ) ) ) | | ( PyList_CheckExact ( __pyx_t_1 ) ) ) {
PyObject * sequence = __pyx_t_1 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 2 ) ) {
if ( size > 2 ) __Pyx_RaiseTooManyValuesError ( 2 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 155 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_11 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_4 = PyTuple_GET_ITEM ( sequence , 1 ) ;
} else {
__pyx_t_11 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_4 = PyList_GET_ITEM ( sequence , 1 ) ;
}
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
# else
__pyx_t_11 = PySequence_ITEM ( sequence , 0 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 155 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_4 = PySequence_ITEM ( sequence , 1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 155 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
# endif
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else {
Py_ssize_t index = - 1 ;
__pyx_t_10 = PyObject_GetIter ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 155 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_10 ) - > tp_iternext ;
index = 0 ; __pyx_t_11 = __pyx_t_14 ( __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_11 ) ) goto __pyx_L29_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
index = 1 ; __pyx_t_4 = __pyx_t_14 ( __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_4 ) ) goto __pyx_L29_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_10 ) , 2 ) < 0 ) __PYX_ERR ( 0 , 155 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
goto __pyx_L30_unpacking_done ;
__pyx_L29_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 155 , __pyx_L1_error )
__pyx_L30_unpacking_done : ;
}
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_11 ) ) ) | | ( PyList_CheckExact ( __pyx_t_11 ) ) ) {
PyObject * sequence = __pyx_t_11 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 2 ) ) {
if ( size > 2 ) __Pyx_RaiseTooManyValuesError ( 2 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 155 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_10 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_6 = PyTuple_GET_ITEM ( sequence , 1 ) ;
} else {
__pyx_t_10 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_6 = PyList_GET_ITEM ( sequence , 1 ) ;
}
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_6 ) ;
# else
__pyx_t_10 = PySequence_ITEM ( sequence , 0 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 155 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_6 = PySequence_ITEM ( sequence , 1 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 155 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
# endif
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
} else {
Py_ssize_t index = - 1 ;
__pyx_t_3 = PyObject_GetIter ( __pyx_t_11 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 155 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_3 ) - > tp_iternext ;
index = 0 ; __pyx_t_10 = __pyx_t_14 ( __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_10 ) ) goto __pyx_L31_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
index = 1 ; __pyx_t_6 = __pyx_t_14 ( __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_6 ) ) goto __pyx_L31_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_3 ) , 2 ) < 0 ) __PYX_ERR ( 0 , 155 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
goto __pyx_L32_unpacking_done ;
__pyx_L31_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 155 , __pyx_L1_error )
__pyx_L32_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_x , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_y , __pyx_t_6 ) ;
__pyx_t_6 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_radius , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":156
* area_box = dA * dB
* ( x , y ) , radius = cv2 . minEnclosingCircle ( c )
* area_contour = cv2 . contourArea ( c ) # < < < < < < < < < < < < < <
* area_circle = math . pi * pow ( radius , 2 )
* boxiness = area_contour / area_box
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 156 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_contourArea ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 156 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
}
}
__pyx_t_1 = ( __pyx_t_4 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_11 , __pyx_t_4 , __pyx_v_c ) : __Pyx_PyObject_CallOneArg ( __pyx_t_11 , __pyx_v_c ) ;
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 156 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_area_contour , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":157
* ( x , y ) , radius = cv2 . minEnclosingCircle ( c )
* area_contour = cv2 . contourArea ( c )
* area_circle = math . pi * pow ( radius , 2 ) # < < < < < < < < < < < < < <
* boxiness = area_contour / area_box
* circleness = area_contour / area_circle
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_math ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 157 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_pi ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 157 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = __Pyx_PyNumber_Power2 ( __pyx_v_radius , __pyx_int_2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 157 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_4 = PyNumber_Multiply ( __pyx_t_11 , __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 157 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_area_circle , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":158
* area_contour = cv2 . contourArea ( c )
* area_circle = math . pi * pow ( radius , 2 )
* boxiness = area_contour / area_box # < < < < < < < < < < < < < <
* circleness = area_contour / area_circle
* circular = False
*/
__pyx_t_4 = __Pyx_PyNumber_Divide ( __pyx_v_area_contour , __pyx_v_area_box ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 158 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_XDECREF_SET ( __pyx_v_boxiness , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":159
* area_circle = math . pi * pow ( radius , 2 )
* boxiness = area_contour / area_box
* circleness = area_contour / area_circle # < < < < < < < < < < < < < <
* circular = False
* rectangular = False
*/
__pyx_t_4 = __Pyx_PyNumber_Divide ( __pyx_v_area_contour , __pyx_v_area_circle ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 159 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_XDECREF_SET ( __pyx_v_circleness , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":160
* boxiness = area_contour / area_box
* circleness = area_contour / area_circle
* circular = False # < < < < < < < < < < < < < <
* rectangular = False
* if boxiness > circleness :
*/
__pyx_v_circular = 0 ;
/* "detect.py":161
* circleness = area_contour / area_circle
* circular = False
* rectangular = False # < < < < < < < < < < < < < <
* if boxiness > circleness :
* rectangular = True
*/
__pyx_v_rectangular = 0 ;
/* "detect.py":162
* circular = False
* rectangular = False
* if boxiness > circleness : # < < < < < < < < < < < < < <
* rectangular = True
* cv2 . drawContours ( orig , [ box . astype ( " int " ) ] , - 1 , ( 0 , 255 , 0 ) , 2 )
*/
__pyx_t_4 = PyObject_RichCompare ( __pyx_v_boxiness , __pyx_v_circleness , Py_GT ) ; __Pyx_XGOTREF ( __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 162 , __pyx_L1_error )
__pyx_t_2 = __Pyx_PyObject_IsTrue ( __pyx_t_4 ) ; if ( unlikely ( __pyx_t_2 < 0 ) ) __PYX_ERR ( 0 , 162 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( __pyx_t_2 ) {
/* "detect.py":163
* rectangular = False
* if boxiness > circleness :
* rectangular = True # < < < < < < < < < < < < < <
* cv2 . drawContours ( orig , [ box . astype ( " int " ) ] , - 1 , ( 0 , 255 , 0 ) , 2 )
* else :
*/
__pyx_v_rectangular = 1 ;
/* "detect.py":164
* if boxiness > circleness :
* rectangular = True
* cv2 . drawContours ( orig , [ box . astype ( " int " ) ] , - 1 , ( 0 , 255 , 0 ) , 2 ) # < < < < < < < < < < < < < <
* else :
* circular = True
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 164 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_drawContours ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 164 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr ( __pyx_v_box , __pyx_n_s_astype ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 164 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_10 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_6 ) ) ) {
__pyx_t_10 = PyMethod_GET_SELF ( __pyx_t_6 ) ;
if ( likely ( __pyx_t_10 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_6 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_6 , function ) ;
}
}
__pyx_t_1 = ( __pyx_t_10 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_6 , __pyx_t_10 , __pyx_n_s_int ) : __Pyx_PyObject_CallOneArg ( __pyx_t_6 , __pyx_n_s_int ) ;
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 164 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__pyx_t_6 = PyList_New ( 1 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 164 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyList_SET_ITEM ( __pyx_t_6 , 0 , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
__pyx_t_1 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_11 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_1 , __pyx_v_orig , __pyx_t_6 , __pyx_int_neg_1 , __pyx_tuple__2 , __pyx_int_2 } ;
__pyx_t_4 = __Pyx_PyFunction_FastCall ( __pyx_t_11 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 164 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_11 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_1 , __pyx_v_orig , __pyx_t_6 , __pyx_int_neg_1 , __pyx_tuple__2 , __pyx_int_2 } ;
__pyx_t_4 = __Pyx_PyCFunction_FastCall ( __pyx_t_11 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 164 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
} else
# endif
{
__pyx_t_10 = PyTuple_New ( 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 164 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
if ( __pyx_t_1 ) {
__Pyx_GIVEREF ( __pyx_t_1 ) ; PyTuple_SET_ITEM ( __pyx_t_10 , 0 , __pyx_t_1 ) ; __pyx_t_1 = NULL ;
}
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 0 + __pyx_t_9 , __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_t_6 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 1 + __pyx_t_9 , __pyx_t_6 ) ;
__Pyx_INCREF ( __pyx_int_neg_1 ) ;
__Pyx_GIVEREF ( __pyx_int_neg_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 2 + __pyx_t_9 , __pyx_int_neg_1 ) ;
__Pyx_INCREF ( __pyx_tuple__2 ) ;
__Pyx_GIVEREF ( __pyx_tuple__2 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 3 + __pyx_t_9 , __pyx_tuple__2 ) ;
__Pyx_INCREF ( __pyx_int_2 ) ;
__Pyx_GIVEREF ( __pyx_int_2 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 4 + __pyx_t_9 , __pyx_int_2 ) ;
__pyx_t_6 = 0 ;
__pyx_t_4 = __Pyx_PyObject_Call ( __pyx_t_11 , __pyx_t_10 , NULL ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 164 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
}
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
/* "detect.py":162
* circular = False
* rectangular = False
* if boxiness > circleness : # < < < < < < < < < < < < < <
* rectangular = True
* cv2 . drawContours ( orig , [ box . astype ( " int " ) ] , - 1 , ( 0 , 255 , 0 ) , 2 )
*/
goto __pyx_L33 ;
}
/* "detect.py":166
* cv2 . drawContours ( orig , [ box . astype ( " int " ) ] , - 1 , ( 0 , 255 , 0 ) , 2 )
* else :
* circular = True # < < < < < < < < < < < < < <
* cv2 . circle ( orig , ( int ( x ) , int ( y ) ) , int ( radius ) , ( 0 , 255 , 0 ) , 3 )
* mask = np . zeros ( gray . shape , np . uint8 )
*/
/*else*/ {
__pyx_v_circular = 1 ;
/* "detect.py":167
* else :
* circular = True
* cv2 . circle ( orig , ( int ( x ) , int ( y ) ) , int ( radius ) , ( 0 , 255 , 0 ) , 3 ) # < < < < < < < < < < < < < <
* mask = np . zeros ( gray . shape , np . uint8 )
* cv2 . drawContours ( mask , [ c ] , 0 , 255 , - 1 )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 167 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_circle ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 167 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = __Pyx_PyNumber_Int ( __pyx_v_x ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 167 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_6 = __Pyx_PyNumber_Int ( __pyx_v_y ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 167 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_1 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 167 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_GIVEREF ( __pyx_t_11 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_t_11 ) ;
__Pyx_GIVEREF ( __pyx_t_6 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 , __pyx_t_6 ) ;
__pyx_t_11 = 0 ;
__pyx_t_6 = 0 ;
__pyx_t_6 = __Pyx_PyNumber_Int ( __pyx_v_radius ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 167 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_11 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_11 , __pyx_v_orig , __pyx_t_1 , __pyx_t_6 , __pyx_tuple__2 , __pyx_int_3 } ;
__pyx_t_4 = __Pyx_PyFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 167 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_11 , __pyx_v_orig , __pyx_t_1 , __pyx_t_6 , __pyx_tuple__2 , __pyx_int_3 } ;
__pyx_t_4 = __Pyx_PyCFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 167 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
} else
# endif
{
__pyx_t_3 = PyTuple_New ( 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 167 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
if ( __pyx_t_11 ) {
__Pyx_GIVEREF ( __pyx_t_11 ) ; PyTuple_SET_ITEM ( __pyx_t_3 , 0 , __pyx_t_11 ) ; __pyx_t_11 = NULL ;
}
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 0 + __pyx_t_9 , __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 1 + __pyx_t_9 , __pyx_t_1 ) ;
__Pyx_GIVEREF ( __pyx_t_6 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 2 + __pyx_t_9 , __pyx_t_6 ) ;
__Pyx_INCREF ( __pyx_tuple__2 ) ;
__Pyx_GIVEREF ( __pyx_tuple__2 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 3 + __pyx_t_9 , __pyx_tuple__2 ) ;
__Pyx_INCREF ( __pyx_int_3 ) ;
__Pyx_GIVEREF ( __pyx_int_3 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 4 + __pyx_t_9 , __pyx_int_3 ) ;
__pyx_t_1 = 0 ;
__pyx_t_6 = 0 ;
__pyx_t_4 = __Pyx_PyObject_Call ( __pyx_t_10 , __pyx_t_3 , NULL ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 167 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
}
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
/* "detect.py":168
* circular = True
* cv2 . circle ( orig , ( int ( x ) , int ( y ) ) , int ( radius ) , ( 0 , 255 , 0 ) , 3 )
* mask = np . zeros ( gray . shape , np . uint8 ) # < < < < < < < < < < < < < <
* cv2 . drawContours ( mask , [ c ] , 0 , 255 , - 1 )
* # pixelpoints = np . transpose ( np . nonzero ( mask ) )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 168 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_10 , __pyx_n_s_zeros ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 168 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_v_gray , __pyx_n_s_shape ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 168 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_GetModuleGlobalName ( __pyx_t_6 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 168 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_6 , __pyx_n_s_uint8 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 168 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__pyx_t_6 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_3 ) ) ) {
__pyx_t_6 = PyMethod_GET_SELF ( __pyx_t_3 ) ;
if ( likely ( __pyx_t_6 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_t_6 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_3 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_6 , __pyx_t_10 , __pyx_t_1 } ;
__pyx_t_4 = __Pyx_PyFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 168 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_6 , __pyx_t_10 , __pyx_t_1 } ;
__pyx_t_4 = __Pyx_PyCFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 168 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else
# endif
{
__pyx_t_11 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 168 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __pyx_t_6 ) {
__Pyx_GIVEREF ( __pyx_t_6 ) ; PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_t_6 ) ; __pyx_t_6 = NULL ;
}
__Pyx_GIVEREF ( __pyx_t_10 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 + __pyx_t_9 , __pyx_t_10 ) ;
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 1 + __pyx_t_9 , __pyx_t_1 ) ;
__pyx_t_10 = 0 ;
__pyx_t_1 = 0 ;
__pyx_t_4 = __Pyx_PyObject_Call ( __pyx_t_3 , __pyx_t_11 , NULL ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 168 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
}
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_mask , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":169
* cv2 . circle ( orig , ( int ( x ) , int ( y ) ) , int ( radius ) , ( 0 , 255 , 0 ) , 3 )
* mask = np . zeros ( gray . shape , np . uint8 )
* cv2 . drawContours ( mask , [ c ] , 0 , 255 , - 1 ) # < < < < < < < < < < < < < <
* # pixelpoints = np . transpose ( np . nonzero ( mask ) )
* hsv = cv2 . cvtColor ( orig , cv2 . COLOR_BGR2HSV )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 169 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_drawContours ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 169 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = PyList_New ( 1 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 169 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_v_c ) ;
__Pyx_GIVEREF ( __pyx_v_c ) ;
PyList_SET_ITEM ( __pyx_t_3 , 0 , __pyx_v_c ) ;
__pyx_t_1 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_11 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_1 , __pyx_v_mask , __pyx_t_3 , __pyx_int_0 , __pyx_int_255 , __pyx_int_neg_1 } ;
__pyx_t_4 = __Pyx_PyFunction_FastCall ( __pyx_t_11 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 169 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_11 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_1 , __pyx_v_mask , __pyx_t_3 , __pyx_int_0 , __pyx_int_255 , __pyx_int_neg_1 } ;
__pyx_t_4 = __Pyx_PyCFunction_FastCall ( __pyx_t_11 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 169 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
} else
# endif
{
__pyx_t_10 = PyTuple_New ( 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 169 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
if ( __pyx_t_1 ) {
__Pyx_GIVEREF ( __pyx_t_1 ) ; PyTuple_SET_ITEM ( __pyx_t_10 , 0 , __pyx_t_1 ) ; __pyx_t_1 = NULL ;
}
__Pyx_INCREF ( __pyx_v_mask ) ;
__Pyx_GIVEREF ( __pyx_v_mask ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 0 + __pyx_t_9 , __pyx_v_mask ) ;
__Pyx_GIVEREF ( __pyx_t_3 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 1 + __pyx_t_9 , __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_int_0 ) ;
__Pyx_GIVEREF ( __pyx_int_0 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 2 + __pyx_t_9 , __pyx_int_0 ) ;
__Pyx_INCREF ( __pyx_int_255 ) ;
__Pyx_GIVEREF ( __pyx_int_255 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 3 + __pyx_t_9 , __pyx_int_255 ) ;
__Pyx_INCREF ( __pyx_int_neg_1 ) ;
__Pyx_GIVEREF ( __pyx_int_neg_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 4 + __pyx_t_9 , __pyx_int_neg_1 ) ;
__pyx_t_3 = 0 ;
__pyx_t_4 = __Pyx_PyObject_Call ( __pyx_t_11 , __pyx_t_10 , NULL ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 169 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
}
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
/* "detect.py":171
* cv2 . drawContours ( mask , [ c ] , 0 , 255 , - 1 )
* # pixelpoints = np . transpose ( np . nonzero ( mask ) )
* hsv = cv2 . cvtColor ( orig , cv2 . COLOR_BGR2HSV ) # < < < < < < < < < < < < < <
* mean_val = cv2 . mean ( hsv , mask = mask )
* # print ( str ( mean_val [ 0 ] ) )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 171 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_cvtColor ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 171 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 171 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_COLOR_BGR2HSV ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 171 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_v_orig , __pyx_t_3 } ;
__pyx_t_4 = __Pyx_PyFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 171 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_v_orig , __pyx_t_3 } ;
__pyx_t_4 = __Pyx_PyCFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 171 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
} else
# endif
{
__pyx_t_1 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 171 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
if ( __pyx_t_11 ) {
__Pyx_GIVEREF ( __pyx_t_11 ) ; PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_t_11 ) ; __pyx_t_11 = NULL ;
}
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 + __pyx_t_9 , __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_t_3 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 + __pyx_t_9 , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
__pyx_t_4 = __Pyx_PyObject_Call ( __pyx_t_10 , __pyx_t_1 , NULL ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 171 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
}
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_hsv , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":172
* # pixelpoints = np . transpose ( np . nonzero ( mask ) )
* hsv = cv2 . cvtColor ( orig , cv2 . COLOR_BGR2HSV )
* mean_val = cv2 . mean ( hsv , mask = mask ) # < < < < < < < < < < < < < <
* # print ( str ( mean_val [ 0 ] ) )
* # print ( " , " + str ( mean_val [ 0 ] / mean_val [ 2 ] ) )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 172 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_mean ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 172 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = PyTuple_New ( 1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 172 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_v_hsv ) ;
__Pyx_GIVEREF ( __pyx_v_hsv ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 0 , __pyx_v_hsv ) ;
__pyx_t_1 = __Pyx_PyDict_NewPresized ( 1 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 172 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
if ( PyDict_SetItem ( __pyx_t_1 , __pyx_n_s_mask , __pyx_v_mask ) < 0 ) __PYX_ERR ( 0 , 172 , __pyx_L1_error )
__pyx_t_3 = __Pyx_PyObject_Call ( __pyx_t_10 , __pyx_t_4 , __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 172 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_mean_val , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
}
__pyx_L33 : ;
/* "detect.py":176
* # print ( " , " + str ( mean_val [ 0 ] / mean_val [ 2 ] ) )
* # print ( " , " + str ( mean_val [ 2 ] / mean_val [ 1 ] ) )
* if pixelsPerMetric is None and circular is True and near ( mean_val [ 0 ] , 16 , 4.5 ) : # < < < < < < < < < < < < < <
* # and near ( mean_val [ 0 ] , 63 , 40 ) is True and near ( mean_val [ 1 ] , 108 , 40 ) is True and near ( mean_val [ 2 ] , 104 , 40 ) is True :
* pixelsPerMetric = smaller ( dA , dB ) / calibration_width
*/
__pyx_t_7 = ( __pyx_v_pixelsPerMetric = = Py_None ) ;
__pyx_t_8 = ( __pyx_t_7 ! = 0 ) ;
if ( __pyx_t_8 ) {
} else {
__pyx_t_2 = __pyx_t_8 ;
goto __pyx_L35_bool_binop_done ;
}
__pyx_t_8 = ( ( __pyx_v_circular = = 1 ) ! = 0 ) ;
if ( __pyx_t_8 ) {
} else {
__pyx_t_2 = __pyx_t_8 ;
goto __pyx_L35_bool_binop_done ;
}
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_near ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 176 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
if ( unlikely ( ! __pyx_v_mean_val ) ) { __Pyx_RaiseUnboundLocalError ( " mean_val " ) ; __PYX_ERR ( 0 , 176 , __pyx_L1_error ) }
__pyx_t_4 = __Pyx_GetItemInt ( __pyx_v_mean_val , 0 , long , 1 , __Pyx_PyInt_From_long , 0 , 0 , 1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 176 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_10 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_10 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_10 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_10 , __pyx_t_4 , __pyx_int_16 , __pyx_float_4_5 } ;
__pyx_t_3 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 176 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_10 , __pyx_t_4 , __pyx_int_16 , __pyx_float_4_5 } ;
__pyx_t_3 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 176 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
} else
# endif
{
__pyx_t_11 = PyTuple_New ( 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 176 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __pyx_t_10 ) {
__Pyx_GIVEREF ( __pyx_t_10 ) ; PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_t_10 ) ; __pyx_t_10 = NULL ;
}
__Pyx_GIVEREF ( __pyx_t_4 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 + __pyx_t_9 , __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_int_16 ) ;
__Pyx_GIVEREF ( __pyx_int_16 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 1 + __pyx_t_9 , __pyx_int_16 ) ;
__Pyx_INCREF ( __pyx_float_4_5 ) ;
__Pyx_GIVEREF ( __pyx_float_4_5 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 2 + __pyx_t_9 , __pyx_float_4_5 ) ;
__pyx_t_4 = 0 ;
__pyx_t_3 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_11 , NULL ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 176 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_8 = __Pyx_PyObject_IsTrue ( __pyx_t_3 ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 176 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_2 = __pyx_t_8 ;
__pyx_L35_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":178
* if pixelsPerMetric is None and circular is True and near ( mean_val [ 0 ] , 16 , 4.5 ) :
* # and near ( mean_val [ 0 ] , 63 , 40 ) is True and near ( mean_val [ 1 ] , 108 , 40 ) is True and near ( mean_val [ 2 ] , 104 , 40 ) is True :
* pixelsPerMetric = smaller ( dA , dB ) / calibration_width # < < < < < < < < < < < < < <
* continue
*
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_smaller ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 178 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_11 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_v_dA , __pyx_v_dB } ;
__pyx_t_3 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 178 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_v_dA , __pyx_v_dB } ;
__pyx_t_3 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 178 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
{
__pyx_t_4 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 178 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
if ( __pyx_t_11 ) {
__Pyx_GIVEREF ( __pyx_t_11 ) ; PyTuple_SET_ITEM ( __pyx_t_4 , 0 , __pyx_t_11 ) ; __pyx_t_11 = NULL ;
}
__Pyx_INCREF ( __pyx_v_dA ) ;
__Pyx_GIVEREF ( __pyx_v_dA ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 0 + __pyx_t_9 , __pyx_v_dA ) ;
__Pyx_INCREF ( __pyx_v_dB ) ;
__Pyx_GIVEREF ( __pyx_v_dB ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 1 + __pyx_t_9 , __pyx_v_dB ) ;
__pyx_t_3 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_4 , NULL ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 178 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = __Pyx_PyNumber_Divide ( __pyx_t_3 , __pyx_v_calibration_width ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 178 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_pixelsPerMetric , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":179
* # and near ( mean_val [ 0 ] , 63 , 40 ) is True and near ( mean_val [ 1 ] , 108 , 40 ) is True and near ( mean_val [ 2 ] , 104 , 40 ) is True :
* pixelsPerMetric = smaller ( dA , dB ) / calibration_width
* continue # < < < < < < < < < < < < < <
*
* # pixelsPerMetric = 25
*/
goto __pyx_L16_continue ;
/* "detect.py":176
* # print ( " , " + str ( mean_val [ 0 ] / mean_val [ 2 ] ) )
* # print ( " , " + str ( mean_val [ 2 ] / mean_val [ 1 ] ) )
* if pixelsPerMetric is None and circular is True and near ( mean_val [ 0 ] , 16 , 4.5 ) : # < < < < < < < < < < < < < <
* # and near ( mean_val [ 0 ] , 63 , 40 ) is True and near ( mean_val [ 1 ] , 108 , 40 ) is True and near ( mean_val [ 2 ] , 104 , 40 ) is True :
* pixelsPerMetric = smaller ( dA , dB ) / calibration_width
*/
}
/* "detect.py":132
*
* # Calibration loop
* for c in cnts : # < < < < < < < < < < < < < <
* # if the contour is not sufficiently large , ignore it
* if cv2 . contourArea ( c ) < 100 :
*/
__pyx_L16_continue : ;
}
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
/* "detect.py":182
*
* # pixelsPerMetric = 25
* orig = image . copy ( ) # < < < < < < < < < < < < < <
* objtype = " Unknown "
* objname = " "
*/
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_v_image , __pyx_n_s_copy ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 182 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_3 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_3 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_3 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
}
}
__pyx_t_5 = ( __pyx_t_3 ) ? __Pyx_PyObject_CallOneArg ( __pyx_t_1 , __pyx_t_3 ) : __Pyx_PyObject_CallNoArg ( __pyx_t_1 ) ;
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 182 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_orig , __pyx_t_5 ) ;
__pyx_t_5 = 0 ;
/* "detect.py":183
* # pixelsPerMetric = 25
* orig = image . copy ( )
* objtype = " Unknown " # < < < < < < < < < < < < < <
* objname = " "
* # loop over the contours individually
*/
__Pyx_INCREF ( __pyx_n_s_Unknown ) ;
__pyx_v_objtype = __pyx_n_s_Unknown ;
/* "detect.py":184
* orig = image . copy ( )
* objtype = " Unknown "
* objname = " " # < < < < < < < < < < < < < <
* # loop over the contours individually
* for c in cnts :
*/
__Pyx_INCREF ( __pyx_kp_s__3 ) ;
__pyx_v_objname = __pyx_kp_s__3 ;
/* "detect.py":186
* objname = " "
* # loop over the contours individually
* for c in cnts : # < < < < < < < < < < < < < <
* # orig = image . copy ( )
* num + = 1
*/
if ( likely ( PyList_CheckExact ( __pyx_v_cnts ) ) | | PyTuple_CheckExact ( __pyx_v_cnts ) ) {
__pyx_t_5 = __pyx_v_cnts ; __Pyx_INCREF ( __pyx_t_5 ) ; __pyx_t_12 = 0 ;
__pyx_t_13 = NULL ;
} else {
__pyx_t_12 = - 1 ; __pyx_t_5 = PyObject_GetIter ( __pyx_v_cnts ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 186 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__pyx_t_13 = Py_TYPE ( __pyx_t_5 ) - > tp_iternext ; if ( unlikely ( ! __pyx_t_13 ) ) __PYX_ERR ( 0 , 186 , __pyx_L1_error )
}
for ( ; ; ) {
if ( likely ( ! __pyx_t_13 ) ) {
if ( likely ( PyList_CheckExact ( __pyx_t_5 ) ) ) {
if ( __pyx_t_12 > = PyList_GET_SIZE ( __pyx_t_5 ) ) break ;
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyList_GET_ITEM ( __pyx_t_5 , __pyx_t_12 ) ; __Pyx_INCREF ( __pyx_t_1 ) ; __pyx_t_12 + + ; if ( unlikely ( 0 < 0 ) ) __PYX_ERR ( 0 , 186 , __pyx_L1_error )
# else
__pyx_t_1 = PySequence_ITEM ( __pyx_t_5 , __pyx_t_12 ) ; __pyx_t_12 + + ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 186 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
# endif
} else {
if ( __pyx_t_12 > = PyTuple_GET_SIZE ( __pyx_t_5 ) ) break ;
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyTuple_GET_ITEM ( __pyx_t_5 , __pyx_t_12 ) ; __Pyx_INCREF ( __pyx_t_1 ) ; __pyx_t_12 + + ; if ( unlikely ( 0 < 0 ) ) __PYX_ERR ( 0 , 186 , __pyx_L1_error )
# else
__pyx_t_1 = PySequence_ITEM ( __pyx_t_5 , __pyx_t_12 ) ; __pyx_t_12 + + ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 186 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
# endif
}
} else {
__pyx_t_1 = __pyx_t_13 ( __pyx_t_5 ) ;
if ( unlikely ( ! __pyx_t_1 ) ) {
PyObject * exc_type = PyErr_Occurred ( ) ;
if ( exc_type ) {
if ( likely ( __Pyx_PyErr_GivenExceptionMatches ( exc_type , PyExc_StopIteration ) ) ) PyErr_Clear ( ) ;
else __PYX_ERR ( 0 , 186 , __pyx_L1_error )
}
break ;
}
__Pyx_GOTREF ( __pyx_t_1 ) ;
}
__Pyx_XDECREF_SET ( __pyx_v_c , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":188
* for c in cnts :
* # orig = image . copy ( )
* num + = 1 # < < < < < < < < < < < < < <
* # if the contour is not sufficiently large , ignore it
* if cv2 . contourArea ( c ) < 100 or pixelsPerMetric is None :
*/
__pyx_t_1 = __Pyx_PyInt_AddObjC ( __pyx_v_num , __pyx_int_1 , 1 , 1 , 0 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 188 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF_SET ( __pyx_v_num , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":190
* num + = 1
* # if the contour is not sufficiently large , ignore it
* if cv2 . contourArea ( c ) < 100 or pixelsPerMetric is None : # < < < < < < < < < < < < < <
* continue
* # compute the rotated bounding box of the contour
*/
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 190 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_contourArea ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 190 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_3 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_3 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
}
}
__pyx_t_1 = ( __pyx_t_3 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_4 , __pyx_t_3 , __pyx_v_c ) : __Pyx_PyObject_CallOneArg ( __pyx_t_4 , __pyx_v_c ) ;
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 190 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = PyObject_RichCompare ( __pyx_t_1 , __pyx_int_100 , Py_LT ) ; __Pyx_XGOTREF ( __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 190 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_8 = __Pyx_PyObject_IsTrue ( __pyx_t_4 ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 190 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( ! __pyx_t_8 ) {
} else {
__pyx_t_2 = __pyx_t_8 ;
goto __pyx_L41_bool_binop_done ;
}
__pyx_t_8 = ( __pyx_v_pixelsPerMetric = = Py_None ) ;
__pyx_t_7 = ( __pyx_t_8 ! = 0 ) ;
__pyx_t_2 = __pyx_t_7 ;
__pyx_L41_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":191
* # if the contour is not sufficiently large , ignore it
* if cv2 . contourArea ( c ) < 100 or pixelsPerMetric is None :
* continue # < < < < < < < < < < < < < <
* # compute the rotated bounding box of the contour
*
*/
goto __pyx_L38_continue ;
/* "detect.py":190
* num + = 1
* # if the contour is not sufficiently large , ignore it
* if cv2 . contourArea ( c ) < 100 or pixelsPerMetric is None : # < < < < < < < < < < < < < <
* continue
* # compute the rotated bounding box of the contour
*/
}
/* "detect.py":194
* # compute the rotated bounding box of the contour
*
* box = cv2 . minAreaRect ( c ) # < < < < < < < < < < < < < <
* box = cv2 . cv . BoxPoints ( box ) if imutils . is_cv2 ( ) else cv2 . boxPoints ( box )
* box = np . array ( box , dtype = " int " )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 194 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_minAreaRect ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 194 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_3 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_3 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_3 , function ) ;
}
}
__pyx_t_4 = ( __pyx_t_1 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_3 , __pyx_t_1 , __pyx_v_c ) : __Pyx_PyObject_CallOneArg ( __pyx_t_3 , __pyx_v_c ) ;
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 194 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_box , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":195
*
* box = cv2 . minAreaRect ( c )
* box = cv2 . cv . BoxPoints ( box ) if imutils . is_cv2 ( ) else cv2 . boxPoints ( box ) # < < < < < < < < < < < < < <
* box = np . array ( box , dtype = " int " )
*
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_imutils ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 195 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_is_cv2 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 195 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_1 ) ? __Pyx_PyObject_CallOneArg ( __pyx_t_11 , __pyx_t_1 ) : __Pyx_PyObject_CallNoArg ( __pyx_t_11 ) ;
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 195 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_2 = __Pyx_PyObject_IsTrue ( __pyx_t_3 ) ; if ( unlikely ( __pyx_t_2 < 0 ) ) __PYX_ERR ( 0 , 195 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
if ( __pyx_t_2 ) {
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 195 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_cv ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 195 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_BoxPoints ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 195 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_1 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_11 , __pyx_t_1 , __pyx_v_box ) : __Pyx_PyObject_CallOneArg ( __pyx_t_11 , __pyx_v_box ) ;
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 195 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_4 = __pyx_t_3 ;
__pyx_t_3 = 0 ;
} else {
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 195 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_boxPoints ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 195 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_11 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_1 , __pyx_t_11 , __pyx_v_box ) : __Pyx_PyObject_CallOneArg ( __pyx_t_1 , __pyx_v_box ) ;
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 195 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_4 = __pyx_t_3 ;
__pyx_t_3 = 0 ;
}
__Pyx_DECREF_SET ( __pyx_v_box , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":196
* box = cv2 . minAreaRect ( c )
* box = cv2 . cv . BoxPoints ( box ) if imutils . is_cv2 ( ) else cv2 . boxPoints ( box )
* box = np . array ( box , dtype = " int " ) # < < < < < < < < < < < < < <
*
* # order the points in the contour such that they appear
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 196 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_array ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 196 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = PyTuple_New ( 1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 196 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_v_box ) ;
__Pyx_GIVEREF ( __pyx_v_box ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 0 , __pyx_v_box ) ;
__pyx_t_1 = __Pyx_PyDict_NewPresized ( 1 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 196 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
if ( PyDict_SetItem ( __pyx_t_1 , __pyx_n_s_dtype , __pyx_n_s_int ) < 0 ) __PYX_ERR ( 0 , 196 , __pyx_L1_error )
__pyx_t_11 = __Pyx_PyObject_Call ( __pyx_t_3 , __pyx_t_4 , __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 196 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_box , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":211
* # between the top - left and top - right coordinates , followed by
* # the midpoint between bottom - left and bottom - right coordinates
* ( tl , tr , br , bl ) = box # < < < < < < < < < < < < < <
* ( tltrX , tltrY ) = midpoint ( tl , tr )
* ( blbrX , blbrY ) = midpoint ( bl , br )
*/
if ( ( likely ( PyTuple_CheckExact ( __pyx_v_box ) ) ) | | ( PyList_CheckExact ( __pyx_v_box ) ) ) {
PyObject * sequence = __pyx_v_box ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 4 ) ) {
if ( size > 4 ) __Pyx_RaiseTooManyValuesError ( 4 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 211 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_11 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_1 = PyTuple_GET_ITEM ( sequence , 1 ) ;
__pyx_t_4 = PyTuple_GET_ITEM ( sequence , 2 ) ;
__pyx_t_3 = PyTuple_GET_ITEM ( sequence , 3 ) ;
} else {
__pyx_t_11 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_1 = PyList_GET_ITEM ( sequence , 1 ) ;
__pyx_t_4 = PyList_GET_ITEM ( sequence , 2 ) ;
__pyx_t_3 = PyList_GET_ITEM ( sequence , 3 ) ;
}
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
# else
{
Py_ssize_t i ;
PyObject * * temps [ 4 ] = { & __pyx_t_11 , & __pyx_t_1 , & __pyx_t_4 , & __pyx_t_3 } ;
for ( i = 0 ; i < 4 ; i + + ) {
PyObject * item = PySequence_ITEM ( sequence , i ) ; if ( unlikely ( ! item ) ) __PYX_ERR ( 0 , 211 , __pyx_L1_error )
__Pyx_GOTREF ( item ) ;
* ( temps [ i ] ) = item ;
}
}
# endif
} else {
Py_ssize_t index = - 1 ;
PyObject * * temps [ 4 ] = { & __pyx_t_11 , & __pyx_t_1 , & __pyx_t_4 , & __pyx_t_3 } ;
__pyx_t_10 = PyObject_GetIter ( __pyx_v_box ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 211 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_14 = Py_TYPE ( __pyx_t_10 ) - > tp_iternext ;
for ( index = 0 ; index < 4 ; index + + ) {
PyObject * item = __pyx_t_14 ( __pyx_t_10 ) ; if ( unlikely ( ! item ) ) goto __pyx_L43_unpacking_failed ;
__Pyx_GOTREF ( item ) ;
* ( temps [ index ] ) = item ;
}
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_10 ) , 4 ) < 0 ) __PYX_ERR ( 0 , 211 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
goto __pyx_L44_unpacking_done ;
__pyx_L43_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 211 , __pyx_L1_error )
__pyx_L44_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_tl , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_tr , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_br , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_bl , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
/* "detect.py":212
* # the midpoint between bottom - left and bottom - right coordinates
* ( tl , tr , br , bl ) = box
* ( tltrX , tltrY ) = midpoint ( tl , tr ) # < < < < < < < < < < < < < <
* ( blbrX , blbrY ) = midpoint ( bl , br )
*
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_midpoint ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 212 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_1 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_4 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_1 , __pyx_v_tl , __pyx_v_tr } ;
__pyx_t_3 = __Pyx_PyFunction_FastCall ( __pyx_t_4 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 212 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_4 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_1 , __pyx_v_tl , __pyx_v_tr } ;
__pyx_t_3 = __Pyx_PyCFunction_FastCall ( __pyx_t_4 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 212 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
{
__pyx_t_11 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 212 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __pyx_t_1 ) {
__Pyx_GIVEREF ( __pyx_t_1 ) ; PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_t_1 ) ; __pyx_t_1 = NULL ;
}
__Pyx_INCREF ( __pyx_v_tl ) ;
__Pyx_GIVEREF ( __pyx_v_tl ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 + __pyx_t_9 , __pyx_v_tl ) ;
__Pyx_INCREF ( __pyx_v_tr ) ;
__Pyx_GIVEREF ( __pyx_v_tr ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 1 + __pyx_t_9 , __pyx_v_tr ) ;
__pyx_t_3 = __Pyx_PyObject_Call ( __pyx_t_4 , __pyx_t_11 , NULL ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 212 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
}
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_3 ) ) ) | | ( PyList_CheckExact ( __pyx_t_3 ) ) ) {
PyObject * sequence = __pyx_t_3 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 2 ) ) {
if ( size > 2 ) __Pyx_RaiseTooManyValuesError ( 2 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 212 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_4 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_11 = PyTuple_GET_ITEM ( sequence , 1 ) ;
} else {
__pyx_t_4 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_11 = PyList_GET_ITEM ( sequence , 1 ) ;
}
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
# else
__pyx_t_4 = PySequence_ITEM ( sequence , 0 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 212 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_11 = PySequence_ITEM ( sequence , 1 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 212 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
# endif
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
} else {
Py_ssize_t index = - 1 ;
__pyx_t_1 = PyObject_GetIter ( __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 212 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_1 ) - > tp_iternext ;
index = 0 ; __pyx_t_4 = __pyx_t_14 ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) goto __pyx_L45_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
index = 1 ; __pyx_t_11 = __pyx_t_14 ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_11 ) ) goto __pyx_L45_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_1 ) , 2 ) < 0 ) __PYX_ERR ( 0 , 212 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
goto __pyx_L46_unpacking_done ;
__pyx_L45_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 212 , __pyx_L1_error )
__pyx_L46_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_tltrX , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_tltrY , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":213
* ( tl , tr , br , bl ) = box
* ( tltrX , tltrY ) = midpoint ( tl , tr )
* ( blbrX , blbrY ) = midpoint ( bl , br ) # < < < < < < < < < < < < < <
*
* # compute the midpoint between the top - left and top - right points ,
*/
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_midpoint ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 213 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_4 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_11 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_4 , __pyx_v_bl , __pyx_v_br } ;
__pyx_t_3 = __Pyx_PyFunction_FastCall ( __pyx_t_11 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 213 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_11 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_4 , __pyx_v_bl , __pyx_v_br } ;
__pyx_t_3 = __Pyx_PyCFunction_FastCall ( __pyx_t_11 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 213 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
{
__pyx_t_1 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 213 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
if ( __pyx_t_4 ) {
__Pyx_GIVEREF ( __pyx_t_4 ) ; PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_t_4 ) ; __pyx_t_4 = NULL ;
}
__Pyx_INCREF ( __pyx_v_bl ) ;
__Pyx_GIVEREF ( __pyx_v_bl ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 + __pyx_t_9 , __pyx_v_bl ) ;
__Pyx_INCREF ( __pyx_v_br ) ;
__Pyx_GIVEREF ( __pyx_v_br ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 + __pyx_t_9 , __pyx_v_br ) ;
__pyx_t_3 = __Pyx_PyObject_Call ( __pyx_t_11 , __pyx_t_1 , NULL ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 213 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
}
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_3 ) ) ) | | ( PyList_CheckExact ( __pyx_t_3 ) ) ) {
PyObject * sequence = __pyx_t_3 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 2 ) ) {
if ( size > 2 ) __Pyx_RaiseTooManyValuesError ( 2 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 213 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_11 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_1 = PyTuple_GET_ITEM ( sequence , 1 ) ;
} else {
__pyx_t_11 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_1 = PyList_GET_ITEM ( sequence , 1 ) ;
}
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
# else
__pyx_t_11 = PySequence_ITEM ( sequence , 0 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 213 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_1 = PySequence_ITEM ( sequence , 1 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 213 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
# endif
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
} else {
Py_ssize_t index = - 1 ;
__pyx_t_4 = PyObject_GetIter ( __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 213 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_4 ) - > tp_iternext ;
index = 0 ; __pyx_t_11 = __pyx_t_14 ( __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_11 ) ) goto __pyx_L47_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
index = 1 ; __pyx_t_1 = __pyx_t_14 ( __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_1 ) ) goto __pyx_L47_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_1 ) ;
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_4 ) , 2 ) < 0 ) __PYX_ERR ( 0 , 213 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
goto __pyx_L48_unpacking_done ;
__pyx_L47_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 213 , __pyx_L1_error )
__pyx_L48_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_blbrX , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_blbrY , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":217
* # compute the midpoint between the top - left and top - right points ,
* # followed by the midpoint between the top - right and bottom - right
* ( tlblX , tlblY ) = midpoint ( tl , bl ) # < < < < < < < < < < < < < <
* ( trbrX , trbrY ) = midpoint ( tr , br )
* # draw the midpoints on the image
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_midpoint ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 217 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_11 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_v_tl , __pyx_v_bl } ;
__pyx_t_3 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 217 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_v_tl , __pyx_v_bl } ;
__pyx_t_3 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 217 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
{
__pyx_t_4 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 217 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
if ( __pyx_t_11 ) {
__Pyx_GIVEREF ( __pyx_t_11 ) ; PyTuple_SET_ITEM ( __pyx_t_4 , 0 , __pyx_t_11 ) ; __pyx_t_11 = NULL ;
}
__Pyx_INCREF ( __pyx_v_tl ) ;
__Pyx_GIVEREF ( __pyx_v_tl ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 0 + __pyx_t_9 , __pyx_v_tl ) ;
__Pyx_INCREF ( __pyx_v_bl ) ;
__Pyx_GIVEREF ( __pyx_v_bl ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 1 + __pyx_t_9 , __pyx_v_bl ) ;
__pyx_t_3 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_4 , NULL ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 217 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_3 ) ) ) | | ( PyList_CheckExact ( __pyx_t_3 ) ) ) {
PyObject * sequence = __pyx_t_3 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 2 ) ) {
if ( size > 2 ) __Pyx_RaiseTooManyValuesError ( 2 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 217 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_1 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_4 = PyTuple_GET_ITEM ( sequence , 1 ) ;
} else {
__pyx_t_1 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_4 = PyList_GET_ITEM ( sequence , 1 ) ;
}
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
# else
__pyx_t_1 = PySequence_ITEM ( sequence , 0 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 217 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_4 = PySequence_ITEM ( sequence , 1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 217 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
# endif
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
} else {
Py_ssize_t index = - 1 ;
__pyx_t_11 = PyObject_GetIter ( __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 217 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_11 ) - > tp_iternext ;
index = 0 ; __pyx_t_1 = __pyx_t_14 ( __pyx_t_11 ) ; if ( unlikely ( ! __pyx_t_1 ) ) goto __pyx_L49_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_1 ) ;
index = 1 ; __pyx_t_4 = __pyx_t_14 ( __pyx_t_11 ) ; if ( unlikely ( ! __pyx_t_4 ) ) goto __pyx_L49_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_11 ) , 2 ) < 0 ) __PYX_ERR ( 0 , 217 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
goto __pyx_L50_unpacking_done ;
__pyx_L49_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 217 , __pyx_L1_error )
__pyx_L50_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_tlblX , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_tlblY , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":218
* # followed by the midpoint between the top - right and bottom - right
* ( tlblX , tlblY ) = midpoint ( tl , bl )
* ( trbrX , trbrY ) = midpoint ( tr , br ) # < < < < < < < < < < < < < <
* # draw the midpoints on the image
* # cv2 . circle ( orig , ( int ( tltrX ) , int ( tltrY ) ) , 5 , ( 255 , 0 , 0 ) , - 1 )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_midpoint ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 218 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_1 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_4 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_1 , __pyx_v_tr , __pyx_v_br } ;
__pyx_t_3 = __Pyx_PyFunction_FastCall ( __pyx_t_4 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 218 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_4 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_1 , __pyx_v_tr , __pyx_v_br } ;
__pyx_t_3 = __Pyx_PyCFunction_FastCall ( __pyx_t_4 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 218 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
{
__pyx_t_11 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 218 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __pyx_t_1 ) {
__Pyx_GIVEREF ( __pyx_t_1 ) ; PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_t_1 ) ; __pyx_t_1 = NULL ;
}
__Pyx_INCREF ( __pyx_v_tr ) ;
__Pyx_GIVEREF ( __pyx_v_tr ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 + __pyx_t_9 , __pyx_v_tr ) ;
__Pyx_INCREF ( __pyx_v_br ) ;
__Pyx_GIVEREF ( __pyx_v_br ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 1 + __pyx_t_9 , __pyx_v_br ) ;
__pyx_t_3 = __Pyx_PyObject_Call ( __pyx_t_4 , __pyx_t_11 , NULL ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 218 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
}
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_3 ) ) ) | | ( PyList_CheckExact ( __pyx_t_3 ) ) ) {
PyObject * sequence = __pyx_t_3 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 2 ) ) {
if ( size > 2 ) __Pyx_RaiseTooManyValuesError ( 2 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 218 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_4 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_11 = PyTuple_GET_ITEM ( sequence , 1 ) ;
} else {
__pyx_t_4 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_11 = PyList_GET_ITEM ( sequence , 1 ) ;
}
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
# else
__pyx_t_4 = PySequence_ITEM ( sequence , 0 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 218 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_11 = PySequence_ITEM ( sequence , 1 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 218 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
# endif
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
} else {
Py_ssize_t index = - 1 ;
__pyx_t_1 = PyObject_GetIter ( __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 218 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_1 ) - > tp_iternext ;
index = 0 ; __pyx_t_4 = __pyx_t_14 ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) goto __pyx_L51_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
index = 1 ; __pyx_t_11 = __pyx_t_14 ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_11 ) ) goto __pyx_L51_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_1 ) , 2 ) < 0 ) __PYX_ERR ( 0 , 218 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
goto __pyx_L52_unpacking_done ;
__pyx_L51_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 218 , __pyx_L1_error )
__pyx_L52_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_trbrX , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_trbrY , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":227
* # draw lines between the midpoints
* # compute the Euclidean distance between the midpoints
* dA = np . linalg . norm ( np . array ( ( tltrX , tltrY , 0 ) ) - # < < < < < < < < < < < < < <
* np . array ( ( blbrX , blbrY , 0 ) ) )
* dB = np . linalg . norm ( np . array ( ( tlblX , tlblY , 0 ) ) -
*/
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 227 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_linalg ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 227 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_norm ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 227 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 227 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_array ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 227 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = PyTuple_New ( 3 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 227 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_v_tltrX ) ;
__Pyx_GIVEREF ( __pyx_v_tltrX ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_v_tltrX ) ;
__Pyx_INCREF ( __pyx_v_tltrY ) ;
__Pyx_GIVEREF ( __pyx_v_tltrY ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 , __pyx_v_tltrY ) ;
__Pyx_INCREF ( __pyx_int_0 ) ;
__Pyx_GIVEREF ( __pyx_int_0 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 2 , __pyx_int_0 ) ;
__pyx_t_6 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_6 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_6 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_6 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
}
}
__pyx_t_4 = ( __pyx_t_6 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_10 , __pyx_t_6 , __pyx_t_1 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_10 , __pyx_t_1 ) ;
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 227 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
/* "detect.py":228
* # compute the Euclidean distance between the midpoints
* dA = np . linalg . norm ( np . array ( ( tltrX , tltrY , 0 ) ) -
* np . array ( ( blbrX , blbrY , 0 ) ) ) # < < < < < < < < < < < < < <
* dB = np . linalg . norm ( np . array ( ( tlblX , tlblY , 0 ) ) -
* np . array ( ( trbrX , trbrY , 0 ) ) )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 228 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_array ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 228 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = PyTuple_New ( 3 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 228 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_v_blbrX ) ;
__Pyx_GIVEREF ( __pyx_v_blbrX ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_v_blbrX ) ;
__Pyx_INCREF ( __pyx_v_blbrY ) ;
__Pyx_GIVEREF ( __pyx_v_blbrY ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 , __pyx_v_blbrY ) ;
__Pyx_INCREF ( __pyx_int_0 ) ;
__Pyx_GIVEREF ( __pyx_int_0 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 2 , __pyx_int_0 ) ;
__pyx_t_15 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_6 ) ) ) {
__pyx_t_15 = PyMethod_GET_SELF ( __pyx_t_6 ) ;
if ( likely ( __pyx_t_15 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_6 ) ;
__Pyx_INCREF ( __pyx_t_15 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_6 , function ) ;
}
}
__pyx_t_10 = ( __pyx_t_15 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_6 , __pyx_t_15 , __pyx_t_1 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_6 , __pyx_t_1 ) ;
__Pyx_XDECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 228 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":227
* # draw lines between the midpoints
* # compute the Euclidean distance between the midpoints
* dA = np . linalg . norm ( np . array ( ( tltrX , tltrY , 0 ) ) - # < < < < < < < < < < < < < <
* np . array ( ( blbrX , blbrY , 0 ) ) )
* dB = np . linalg . norm ( np . array ( ( tlblX , tlblY , 0 ) ) -
*/
__pyx_t_6 = PyNumber_Subtract ( __pyx_t_4 , __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 227 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_10 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_10 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_10 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_11 , __pyx_t_10 , __pyx_t_6 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_11 , __pyx_t_6 ) ;
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 227 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_dA , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
/* "detect.py":229
* dA = np . linalg . norm ( np . array ( ( tltrX , tltrY , 0 ) ) -
* np . array ( ( blbrX , blbrY , 0 ) ) )
* dB = np . linalg . norm ( np . array ( ( tlblX , tlblY , 0 ) ) - # < < < < < < < < < < < < < <
* np . array ( ( trbrX , trbrY , 0 ) ) )
*
*/
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 229 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_linalg ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 229 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_6 , __pyx_n_s_norm ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 229 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 229 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_10 , __pyx_n_s_array ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 229 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = PyTuple_New ( 3 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 229 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_v_tlblX ) ;
__Pyx_GIVEREF ( __pyx_v_tlblX ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 0 , __pyx_v_tlblX ) ;
__Pyx_INCREF ( __pyx_v_tlblY ) ;
__Pyx_GIVEREF ( __pyx_v_tlblY ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 1 , __pyx_v_tlblY ) ;
__Pyx_INCREF ( __pyx_int_0 ) ;
__Pyx_GIVEREF ( __pyx_int_0 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 2 , __pyx_int_0 ) ;
__pyx_t_1 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
}
}
__pyx_t_6 = ( __pyx_t_1 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_4 , __pyx_t_1 , __pyx_t_10 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_4 , __pyx_t_10 ) ;
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 229 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
/* "detect.py":230
* np . array ( ( blbrX , blbrY , 0 ) ) )
* dB = np . linalg . norm ( np . array ( ( tlblX , tlblY , 0 ) ) -
* np . array ( ( trbrX , trbrY , 0 ) ) ) # < < < < < < < < < < < < < <
*
* dimA = dA / pixelsPerMetric
*/
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 230 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_10 , __pyx_n_s_array ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 230 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = PyTuple_New ( 3 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 230 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_v_trbrX ) ;
__Pyx_GIVEREF ( __pyx_v_trbrX ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 0 , __pyx_v_trbrX ) ;
__Pyx_INCREF ( __pyx_v_trbrY ) ;
__Pyx_GIVEREF ( __pyx_v_trbrY ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 1 , __pyx_v_trbrY ) ;
__Pyx_INCREF ( __pyx_int_0 ) ;
__Pyx_GIVEREF ( __pyx_int_0 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 2 , __pyx_int_0 ) ;
__pyx_t_15 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_15 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_15 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_15 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
}
}
__pyx_t_4 = ( __pyx_t_15 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_1 , __pyx_t_15 , __pyx_t_10 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_1 , __pyx_t_10 ) ;
__Pyx_XDECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 230 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
/* "detect.py":229
* dA = np . linalg . norm ( np . array ( ( tltrX , tltrY , 0 ) ) -
* np . array ( ( blbrX , blbrY , 0 ) ) )
* dB = np . linalg . norm ( np . array ( ( tlblX , tlblY , 0 ) ) - # < < < < < < < < < < < < < <
* np . array ( ( trbrX , trbrY , 0 ) ) )
*
*/
__pyx_t_1 = PyNumber_Subtract ( __pyx_t_6 , __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 229 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_4 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_11 , __pyx_t_4 , __pyx_t_1 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_11 , __pyx_t_1 ) ;
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 229 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_dB , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
/* "detect.py":232
* np . array ( ( trbrX , trbrY , 0 ) ) )
*
* dimA = dA / pixelsPerMetric # < < < < < < < < < < < < < <
* dimB = dB / pixelsPerMetric
*
*/
__pyx_t_3 = __Pyx_PyNumber_Divide ( __pyx_v_dA , __pyx_v_pixelsPerMetric ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 232 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_XDECREF_SET ( __pyx_v_dimA , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
/* "detect.py":233
*
* dimA = dA / pixelsPerMetric
* dimB = dB / pixelsPerMetric # < < < < < < < < < < < < < <
*
* # Item detection
*/
__pyx_t_3 = __Pyx_PyNumber_Divide ( __pyx_v_dB , __pyx_v_pixelsPerMetric ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 233 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_XDECREF_SET ( __pyx_v_dimB , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
/* "detect.py":236
*
* # Item detection
* area_box = dA * dB # < < < < < < < < < < < < < <
* ( x , y ) , radius = cv2 . minEnclosingCircle ( c )
* area_contour = cv2 . contourArea ( c )
*/
__pyx_t_3 = PyNumber_Multiply ( __pyx_v_dA , __pyx_v_dB ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 236 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_XDECREF_SET ( __pyx_v_area_box , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
/* "detect.py":237
* # Item detection
* area_box = dA * dB
* ( x , y ) , radius = cv2 . minEnclosingCircle ( c ) # < < < < < < < < < < < < < <
* area_contour = cv2 . contourArea ( c )
* area_circle = math . pi * pow ( radius , 2 )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 237 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_minEnclosingCircle ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 237 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_11 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_1 , __pyx_t_11 , __pyx_v_c ) : __Pyx_PyObject_CallOneArg ( __pyx_t_1 , __pyx_v_c ) ;
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 237 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_3 ) ) ) | | ( PyList_CheckExact ( __pyx_t_3 ) ) ) {
PyObject * sequence = __pyx_t_3 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 2 ) ) {
if ( size > 2 ) __Pyx_RaiseTooManyValuesError ( 2 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 237 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_1 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_11 = PyTuple_GET_ITEM ( sequence , 1 ) ;
} else {
__pyx_t_1 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_11 = PyList_GET_ITEM ( sequence , 1 ) ;
}
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
# else
__pyx_t_1 = PySequence_ITEM ( sequence , 0 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 237 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_11 = PySequence_ITEM ( sequence , 1 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 237 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
# endif
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
} else {
Py_ssize_t index = - 1 ;
__pyx_t_4 = PyObject_GetIter ( __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 237 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_4 ) - > tp_iternext ;
index = 0 ; __pyx_t_1 = __pyx_t_14 ( __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_1 ) ) goto __pyx_L53_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_1 ) ;
index = 1 ; __pyx_t_11 = __pyx_t_14 ( __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_11 ) ) goto __pyx_L53_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_4 ) , 2 ) < 0 ) __PYX_ERR ( 0 , 237 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
goto __pyx_L54_unpacking_done ;
__pyx_L53_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 237 , __pyx_L1_error )
__pyx_L54_unpacking_done : ;
}
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_1 ) ) ) | | ( PyList_CheckExact ( __pyx_t_1 ) ) ) {
PyObject * sequence = __pyx_t_1 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 2 ) ) {
if ( size > 2 ) __Pyx_RaiseTooManyValuesError ( 2 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 237 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_4 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_6 = PyTuple_GET_ITEM ( sequence , 1 ) ;
} else {
__pyx_t_4 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_6 = PyList_GET_ITEM ( sequence , 1 ) ;
}
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_6 ) ;
# else
__pyx_t_4 = PySequence_ITEM ( sequence , 0 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 237 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_6 = PySequence_ITEM ( sequence , 1 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 237 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
# endif
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else {
Py_ssize_t index = - 1 ;
__pyx_t_10 = PyObject_GetIter ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 237 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_10 ) - > tp_iternext ;
index = 0 ; __pyx_t_4 = __pyx_t_14 ( __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_4 ) ) goto __pyx_L55_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
index = 1 ; __pyx_t_6 = __pyx_t_14 ( __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_6 ) ) goto __pyx_L55_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_6 ) ;
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_10 ) , 2 ) < 0 ) __PYX_ERR ( 0 , 237 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
goto __pyx_L56_unpacking_done ;
__pyx_L55_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 237 , __pyx_L1_error )
__pyx_L56_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_x , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_y , __pyx_t_6 ) ;
__pyx_t_6 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_radius , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":238
* area_box = dA * dB
* ( x , y ) , radius = cv2 . minEnclosingCircle ( c )
* area_contour = cv2 . contourArea ( c ) # < < < < < < < < < < < < < <
* area_circle = math . pi * pow ( radius , 2 )
* boxiness = area_contour / area_box
*/
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 238 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_contourArea ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 238 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_11 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_1 , __pyx_t_11 , __pyx_v_c ) : __Pyx_PyObject_CallOneArg ( __pyx_t_1 , __pyx_v_c ) ;
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 238 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_area_contour , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
/* "detect.py":239
* ( x , y ) , radius = cv2 . minEnclosingCircle ( c )
* area_contour = cv2 . contourArea ( c )
* area_circle = math . pi * pow ( radius , 2 ) # < < < < < < < < < < < < < <
* boxiness = area_contour / area_box
* circleness = area_contour / area_circle
*/
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_math ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 239 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_pi ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 239 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = __Pyx_PyNumber_Power2 ( __pyx_v_radius , __pyx_int_2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 239 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_11 = PyNumber_Multiply ( __pyx_t_1 , __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 239 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_area_circle , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":240
* area_contour = cv2 . contourArea ( c )
* area_circle = math . pi * pow ( radius , 2 )
* boxiness = area_contour / area_box # < < < < < < < < < < < < < <
* circleness = area_contour / area_circle
* circular = False
*/
__pyx_t_11 = __Pyx_PyNumber_Divide ( __pyx_v_area_contour , __pyx_v_area_box ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 240 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_XDECREF_SET ( __pyx_v_boxiness , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":241
* area_circle = math . pi * pow ( radius , 2 )
* boxiness = area_contour / area_box
* circleness = area_contour / area_circle # < < < < < < < < < < < < < <
* circular = False
* rectangular = False
*/
__pyx_t_11 = __Pyx_PyNumber_Divide ( __pyx_v_area_contour , __pyx_v_area_circle ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 241 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_XDECREF_SET ( __pyx_v_circleness , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":242
* boxiness = area_contour / area_box
* circleness = area_contour / area_circle
* circular = False # < < < < < < < < < < < < < <
* rectangular = False
* if boxiness > circleness :
*/
__pyx_v_circular = 0 ;
/* "detect.py":243
* circleness = area_contour / area_circle
* circular = False
* rectangular = False # < < < < < < < < < < < < < <
* if boxiness > circleness :
* rectangular = True
*/
__pyx_v_rectangular = 0 ;
/* "detect.py":244
* circular = False
* rectangular = False
* if boxiness > circleness : # < < < < < < < < < < < < < <
* rectangular = True
* # cv2 . drawContours ( orig , [ box . astype ( " int " ) ] , - 1 , ( 0 , 255 , 0 ) , 2 )
*/
__pyx_t_11 = PyObject_RichCompare ( __pyx_v_boxiness , __pyx_v_circleness , Py_GT ) ; __Pyx_XGOTREF ( __pyx_t_11 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 244 , __pyx_L1_error )
__pyx_t_2 = __Pyx_PyObject_IsTrue ( __pyx_t_11 ) ; if ( unlikely ( __pyx_t_2 < 0 ) ) __PYX_ERR ( 0 , 244 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
if ( __pyx_t_2 ) {
/* "detect.py":245
* rectangular = False
* if boxiness > circleness :
* rectangular = True # < < < < < < < < < < < < < <
* # cv2 . drawContours ( orig , [ box . astype ( " int " ) ] , - 1 , ( 0 , 255 , 0 ) , 2 )
* else :
*/
__pyx_v_rectangular = 1 ;
/* "detect.py":244
* circular = False
* rectangular = False
* if boxiness > circleness : # < < < < < < < < < < < < < <
* rectangular = True
* # cv2 . drawContours ( orig , [ box . astype ( " int " ) ] , - 1 , ( 0 , 255 , 0 ) , 2 )
*/
goto __pyx_L57 ;
}
/* "detect.py":248
* # cv2 . drawContours ( orig , [ box . astype ( " int " ) ] , - 1 , ( 0 , 255 , 0 ) , 2 )
* else :
* circular = True # < < < < < < < < < < < < < <
* cv2 . circle ( orig , ( int ( x ) , int ( y ) ) , int ( radius ) , ( 255 , 0 , 0 ) , 2 )
* objtype = " Unknown "
*/
/*else*/ {
__pyx_v_circular = 1 ;
/* "detect.py":249
* else :
* circular = True
* cv2 . circle ( orig , ( int ( x ) , int ( y ) ) , int ( radius ) , ( 255 , 0 , 0 ) , 2 ) # < < < < < < < < < < < < < <
* objtype = " Unknown "
* itemw = larger ( dimA , dimB )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 249 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_circle ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 249 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = __Pyx_PyNumber_Int ( __pyx_v_x ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 249 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_6 = __Pyx_PyNumber_Int ( __pyx_v_y ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 249 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_4 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 249 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_GIVEREF ( __pyx_t_3 ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 0 , __pyx_t_3 ) ;
__Pyx_GIVEREF ( __pyx_t_6 ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 1 , __pyx_t_6 ) ;
__pyx_t_3 = 0 ;
__pyx_t_6 = 0 ;
__pyx_t_6 = __Pyx_PyNumber_Int ( __pyx_v_radius ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 249 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_3 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_3 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_3 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_3 , __pyx_v_orig , __pyx_t_4 , __pyx_t_6 , __pyx_tuple__4 , __pyx_int_2 } ;
__pyx_t_11 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 249 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_3 , __pyx_v_orig , __pyx_t_4 , __pyx_t_6 , __pyx_tuple__4 , __pyx_int_2 } ;
__pyx_t_11 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 249 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
} else
# endif
{
__pyx_t_10 = PyTuple_New ( 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 249 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
if ( __pyx_t_3 ) {
__Pyx_GIVEREF ( __pyx_t_3 ) ; PyTuple_SET_ITEM ( __pyx_t_10 , 0 , __pyx_t_3 ) ; __pyx_t_3 = NULL ;
}
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 0 + __pyx_t_9 , __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_t_4 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 1 + __pyx_t_9 , __pyx_t_4 ) ;
__Pyx_GIVEREF ( __pyx_t_6 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 2 + __pyx_t_9 , __pyx_t_6 ) ;
__Pyx_INCREF ( __pyx_tuple__4 ) ;
__Pyx_GIVEREF ( __pyx_tuple__4 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 3 + __pyx_t_9 , __pyx_tuple__4 ) ;
__Pyx_INCREF ( __pyx_int_2 ) ;
__Pyx_GIVEREF ( __pyx_int_2 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 4 + __pyx_t_9 , __pyx_int_2 ) ;
__pyx_t_4 = 0 ;
__pyx_t_6 = 0 ;
__pyx_t_11 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_10 , NULL ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 249 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
}
__pyx_L57 : ;
/* "detect.py":250
* circular = True
* cv2 . circle ( orig , ( int ( x ) , int ( y ) ) , int ( radius ) , ( 255 , 0 , 0 ) , 2 )
* objtype = " Unknown " # < < < < < < < < < < < < < <
* itemw = larger ( dimA , dimB )
* itemwr = itemw
*/
__Pyx_INCREF ( __pyx_n_s_Unknown ) ;
__Pyx_DECREF_SET ( __pyx_v_objtype , __pyx_n_s_Unknown ) ;
/* "detect.py":251
* cv2 . circle ( orig , ( int ( x ) , int ( y ) ) , int ( radius ) , ( 255 , 0 , 0 ) , 2 )
* objtype = " Unknown "
* itemw = larger ( dimA , dimB ) # < < < < < < < < < < < < < <
* itemwr = itemw
* itemwr * = 8
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_larger ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 251 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_10 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_10 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_10 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_10 , __pyx_v_dimA , __pyx_v_dimB } ;
__pyx_t_11 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 251 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_10 , __pyx_v_dimA , __pyx_v_dimB } ;
__pyx_t_11 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 251 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
} else
# endif
{
__pyx_t_6 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 251 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
if ( __pyx_t_10 ) {
__Pyx_GIVEREF ( __pyx_t_10 ) ; PyTuple_SET_ITEM ( __pyx_t_6 , 0 , __pyx_t_10 ) ; __pyx_t_10 = NULL ;
}
__Pyx_INCREF ( __pyx_v_dimA ) ;
__Pyx_GIVEREF ( __pyx_v_dimA ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 0 + __pyx_t_9 , __pyx_v_dimA ) ;
__Pyx_INCREF ( __pyx_v_dimB ) ;
__Pyx_GIVEREF ( __pyx_v_dimB ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 1 + __pyx_t_9 , __pyx_v_dimB ) ;
__pyx_t_11 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_6 , NULL ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 251 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_itemw , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":252
* objtype = " Unknown "
* itemw = larger ( dimA , dimB )
* itemwr = itemw # < < < < < < < < < < < < < <
* itemwr * = 8
* itemwr = round ( itemwr )
*/
__Pyx_INCREF ( __pyx_v_itemw ) ;
__Pyx_XDECREF_SET ( __pyx_v_itemwr , __pyx_v_itemw ) ;
/* "detect.py":253
* itemw = larger ( dimA , dimB )
* itemwr = itemw
* itemwr * = 8 # < < < < < < < < < < < < < <
* itemwr = round ( itemwr )
* itemwr / = 8
*/
__pyx_t_11 = PyNumber_InPlaceMultiply ( __pyx_v_itemwr , __pyx_int_8 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 253 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF_SET ( __pyx_v_itemwr , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":254
* itemwr = itemw
* itemwr * = 8
* itemwr = round ( itemwr ) # < < < < < < < < < < < < < <
* itemwr / = 8
* itemh = smaller ( dimA , dimB )
*/
__pyx_t_11 = __Pyx_PyObject_CallOneArg ( __pyx_builtin_round , __pyx_v_itemwr ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 254 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF_SET ( __pyx_v_itemwr , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":255
* itemwr * = 8
* itemwr = round ( itemwr )
* itemwr / = 8 # < < < < < < < < < < < < < <
* itemh = smaller ( dimA , dimB )
* itemhr = itemh
*/
__pyx_t_11 = __Pyx_PyNumber_InPlaceDivide ( __pyx_v_itemwr , __pyx_int_8 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 255 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF_SET ( __pyx_v_itemwr , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":256
* itemwr = round ( itemwr )
* itemwr / = 8
* itemh = smaller ( dimA , dimB ) # < < < < < < < < < < < < < <
* itemhr = itemh
* itemhr * = 16
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_smaller ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 256 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_6 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_6 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_6 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_6 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_6 , __pyx_v_dimA , __pyx_v_dimB } ;
__pyx_t_11 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 256 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_6 , __pyx_v_dimA , __pyx_v_dimB } ;
__pyx_t_11 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 256 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
} else
# endif
{
__pyx_t_10 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 256 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
if ( __pyx_t_6 ) {
__Pyx_GIVEREF ( __pyx_t_6 ) ; PyTuple_SET_ITEM ( __pyx_t_10 , 0 , __pyx_t_6 ) ; __pyx_t_6 = NULL ;
}
__Pyx_INCREF ( __pyx_v_dimA ) ;
__Pyx_GIVEREF ( __pyx_v_dimA ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 0 + __pyx_t_9 , __pyx_v_dimA ) ;
__Pyx_INCREF ( __pyx_v_dimB ) ;
__Pyx_GIVEREF ( __pyx_v_dimB ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 1 + __pyx_t_9 , __pyx_v_dimB ) ;
__pyx_t_11 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_10 , NULL ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 256 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_itemh , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":257
* itemwr / = 8
* itemh = smaller ( dimA , dimB )
* itemhr = itemh # < < < < < < < < < < < < < <
* itemhr * = 16
* itemhr = round ( itemhr )
*/
__Pyx_INCREF ( __pyx_v_itemh ) ;
__Pyx_XDECREF_SET ( __pyx_v_itemhr , __pyx_v_itemh ) ;
/* "detect.py":258
* itemh = smaller ( dimA , dimB )
* itemhr = itemh
* itemhr * = 16 # < < < < < < < < < < < < < <
* itemhr = round ( itemhr )
* itemhr / = 16
*/
__pyx_t_11 = PyNumber_InPlaceMultiply ( __pyx_v_itemhr , __pyx_int_16 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 258 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF_SET ( __pyx_v_itemhr , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":259
* itemhr = itemh
* itemhr * = 16
* itemhr = round ( itemhr ) # < < < < < < < < < < < < < <
* itemhr / = 16
* if circular and itemwr = = 0.75 :
*/
__pyx_t_11 = __Pyx_PyObject_CallOneArg ( __pyx_builtin_round , __pyx_v_itemhr ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 259 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF_SET ( __pyx_v_itemhr , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":260
* itemhr * = 16
* itemhr = round ( itemhr )
* itemhr / = 16 # < < < < < < < < < < < < < <
* if circular and itemwr = = 0.75 :
* objtype = " Penny "
*/
__pyx_t_11 = __Pyx_PyNumber_InPlaceDivide ( __pyx_v_itemhr , __pyx_int_16 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 260 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF_SET ( __pyx_v_itemhr , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":261
* itemhr = round ( itemhr )
* itemhr / = 16
* if circular and itemwr = = 0.75 : # < < < < < < < < < < < < < <
* objtype = " Penny "
* iteml = 0
*/
__pyx_t_7 = ( __pyx_v_circular ! = 0 ) ;
if ( __pyx_t_7 ) {
} else {
__pyx_t_2 = __pyx_t_7 ;
goto __pyx_L59_bool_binop_done ;
}
__pyx_t_11 = __Pyx_PyFloat_EqObjC ( __pyx_v_itemwr , __pyx_float_0_75 , 0.75 , 0 , 0 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 261 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_7 = __Pyx_PyObject_IsTrue ( __pyx_t_11 ) ; if ( unlikely ( __pyx_t_7 < 0 ) ) __PYX_ERR ( 0 , 261 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_2 = __pyx_t_7 ;
__pyx_L59_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":262
* itemhr / = 16
* if circular and itemwr = = 0.75 :
* objtype = " Penny " # < < < < < < < < < < < < < <
* iteml = 0
* else :
*/
__Pyx_INCREF ( __pyx_n_s_Penny ) ;
__Pyx_DECREF_SET ( __pyx_v_objtype , __pyx_n_s_Penny ) ;
/* "detect.py":263
* if circular and itemwr = = 0.75 :
* objtype = " Penny "
* iteml = 0 # < < < < < < < < < < < < < <
* else :
* if circular and near ( radius * 2 / pixelsPerMetric , 0.38 , 0.03 ) :
*/
__Pyx_INCREF ( __pyx_int_0 ) ;
__Pyx_XDECREF_SET ( __pyx_v_iteml , __pyx_int_0 ) ;
/* "detect.py":261
* itemhr = round ( itemhr )
* itemhr / = 16
* if circular and itemwr = = 0.75 : # < < < < < < < < < < < < < <
* objtype = " Penny "
* iteml = 0
*/
goto __pyx_L58 ;
}
/* "detect.py":265
* iteml = 0
* else :
* if circular and near ( radius * 2 / pixelsPerMetric , 0.38 , 0.03 ) : # < < < < < < < < < < < < < <
* # Keps nut or spacer
* objtype = " Spacer "
*/
/*else*/ {
__pyx_t_7 = ( __pyx_v_circular ! = 0 ) ;
if ( __pyx_t_7 ) {
} else {
__pyx_t_2 = __pyx_t_7 ;
goto __pyx_L62_bool_binop_done ;
}
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_near ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 265 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_10 = PyNumber_Multiply ( __pyx_v_radius , __pyx_int_2 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 265 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_6 = __Pyx_PyNumber_Divide ( __pyx_t_10 , __pyx_v_pixelsPerMetric ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 265 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_10 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_10 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_10 , __pyx_t_6 , __pyx_float_0_38 , __pyx_float_0_03 } ;
__pyx_t_11 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 265 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_10 , __pyx_t_6 , __pyx_float_0_38 , __pyx_float_0_03 } ;
__pyx_t_11 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 265 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
} else
# endif
{
__pyx_t_4 = PyTuple_New ( 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 265 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
if ( __pyx_t_10 ) {
__Pyx_GIVEREF ( __pyx_t_10 ) ; PyTuple_SET_ITEM ( __pyx_t_4 , 0 , __pyx_t_10 ) ; __pyx_t_10 = NULL ;
}
__Pyx_GIVEREF ( __pyx_t_6 ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 0 + __pyx_t_9 , __pyx_t_6 ) ;
__Pyx_INCREF ( __pyx_float_0_38 ) ;
__Pyx_GIVEREF ( __pyx_float_0_38 ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 1 + __pyx_t_9 , __pyx_float_0_38 ) ;
__Pyx_INCREF ( __pyx_float_0_03 ) ;
__Pyx_GIVEREF ( __pyx_float_0_03 ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 2 + __pyx_t_9 , __pyx_float_0_03 ) ;
__pyx_t_6 = 0 ;
__pyx_t_11 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_4 , NULL ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 265 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_7 = __Pyx_PyObject_IsTrue ( __pyx_t_11 ) ; if ( unlikely ( __pyx_t_7 < 0 ) ) __PYX_ERR ( 0 , 265 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_2 = __pyx_t_7 ;
__pyx_L62_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":267
* if circular and near ( radius * 2 / pixelsPerMetric , 0.38 , 0.03 ) :
* # Keps nut or spacer
* objtype = " Spacer " # < < < < < < < < < < < < < <
* mask = np . zeros ( gray . shape , np . uint8 )
* cv2 . drawContours ( mask , [ c ] , 0 , 255 , - 1 )
*/
__Pyx_INCREF ( __pyx_n_s_Spacer ) ;
__Pyx_DECREF_SET ( __pyx_v_objtype , __pyx_n_s_Spacer ) ;
/* "detect.py":268
* # Keps nut or spacer
* objtype = " Spacer "
* mask = np . zeros ( gray . shape , np . uint8 ) # < < < < < < < < < < < < < <
* cv2 . drawContours ( mask , [ c ] , 0 , 255 , - 1 )
* # pixelpoints = np . transpose ( np . nonzero ( mask ) )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 268 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_zeros ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 268 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_v_gray , __pyx_n_s_shape ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 268 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_GetModuleGlobalName ( __pyx_t_6 , __pyx_n_s_np ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 268 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_6 , __pyx_n_s_uint8 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 268 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__pyx_t_6 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_6 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_6 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_6 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_4 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_6 , __pyx_t_1 , __pyx_t_10 } ;
__pyx_t_11 = __Pyx_PyFunction_FastCall ( __pyx_t_4 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 268 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_4 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_6 , __pyx_t_1 , __pyx_t_10 } ;
__pyx_t_11 = __Pyx_PyCFunction_FastCall ( __pyx_t_4 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 268 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else
# endif
{
__pyx_t_3 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 268 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
if ( __pyx_t_6 ) {
__Pyx_GIVEREF ( __pyx_t_6 ) ; PyTuple_SET_ITEM ( __pyx_t_3 , 0 , __pyx_t_6 ) ; __pyx_t_6 = NULL ;
}
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 0 + __pyx_t_9 , __pyx_t_1 ) ;
__Pyx_GIVEREF ( __pyx_t_10 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 1 + __pyx_t_9 , __pyx_t_10 ) ;
__pyx_t_1 = 0 ;
__pyx_t_10 = 0 ;
__pyx_t_11 = __Pyx_PyObject_Call ( __pyx_t_4 , __pyx_t_3 , NULL ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 268 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
}
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_mask , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":269
* objtype = " Spacer "
* mask = np . zeros ( gray . shape , np . uint8 )
* cv2 . drawContours ( mask , [ c ] , 0 , 255 , - 1 ) # < < < < < < < < < < < < < <
* # pixelpoints = np . transpose ( np . nonzero ( mask ) )
* hsv = cv2 . cvtColor ( orig , cv2 . COLOR_BGR2HSV )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 269 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_drawContours ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 269 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = PyList_New ( 1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 269 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_v_c ) ;
__Pyx_GIVEREF ( __pyx_v_c ) ;
PyList_SET_ITEM ( __pyx_t_4 , 0 , __pyx_v_c ) ;
__pyx_t_10 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_3 ) ) ) {
__pyx_t_10 = PyMethod_GET_SELF ( __pyx_t_3 ) ;
if ( likely ( __pyx_t_10 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_3 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_10 , __pyx_v_mask , __pyx_t_4 , __pyx_int_0 , __pyx_int_255 , __pyx_int_neg_1 } ;
__pyx_t_11 = __Pyx_PyFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 269 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_10 , __pyx_v_mask , __pyx_t_4 , __pyx_int_0 , __pyx_int_255 , __pyx_int_neg_1 } ;
__pyx_t_11 = __Pyx_PyCFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 269 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
} else
# endif
{
__pyx_t_1 = PyTuple_New ( 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 269 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
if ( __pyx_t_10 ) {
__Pyx_GIVEREF ( __pyx_t_10 ) ; PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_t_10 ) ; __pyx_t_10 = NULL ;
}
__Pyx_INCREF ( __pyx_v_mask ) ;
__Pyx_GIVEREF ( __pyx_v_mask ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 + __pyx_t_9 , __pyx_v_mask ) ;
__Pyx_GIVEREF ( __pyx_t_4 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 + __pyx_t_9 , __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_int_0 ) ;
__Pyx_GIVEREF ( __pyx_int_0 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 2 + __pyx_t_9 , __pyx_int_0 ) ;
__Pyx_INCREF ( __pyx_int_255 ) ;
__Pyx_GIVEREF ( __pyx_int_255 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 3 + __pyx_t_9 , __pyx_int_255 ) ;
__Pyx_INCREF ( __pyx_int_neg_1 ) ;
__Pyx_GIVEREF ( __pyx_int_neg_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 4 + __pyx_t_9 , __pyx_int_neg_1 ) ;
__pyx_t_4 = 0 ;
__pyx_t_11 = __Pyx_PyObject_Call ( __pyx_t_3 , __pyx_t_1 , NULL ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 269 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
}
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
/* "detect.py":271
* cv2 . drawContours ( mask , [ c ] , 0 , 255 , - 1 )
* # pixelpoints = np . transpose ( np . nonzero ( mask ) )
* hsv = cv2 . cvtColor ( orig , cv2 . COLOR_BGR2HSV ) # < < < < < < < < < < < < < <
* mean_val = cv2 . mean ( hsv , mask = mask )
* # print ( str ( mean_val [ 0 ] ) )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 271 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_cvtColor ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 271 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 271 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_COLOR_BGR2HSV ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 271 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_3 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_3 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_3 , __pyx_v_orig , __pyx_t_4 } ;
__pyx_t_11 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 271 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_3 , __pyx_v_orig , __pyx_t_4 } ;
__pyx_t_11 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 271 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
} else
# endif
{
__pyx_t_10 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 271 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
if ( __pyx_t_3 ) {
__Pyx_GIVEREF ( __pyx_t_3 ) ; PyTuple_SET_ITEM ( __pyx_t_10 , 0 , __pyx_t_3 ) ; __pyx_t_3 = NULL ;
}
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 0 + __pyx_t_9 , __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_t_4 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 1 + __pyx_t_9 , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
__pyx_t_11 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_10 , NULL ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 271 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_hsv , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
/* "detect.py":272
* # pixelpoints = np . transpose ( np . nonzero ( mask ) )
* hsv = cv2 . cvtColor ( orig , cv2 . COLOR_BGR2HSV )
* mean_val = cv2 . mean ( hsv , mask = mask ) # < < < < < < < < < < < < < <
* # print ( str ( mean_val [ 0 ] ) )
* if near ( mean_val [ 0 ] , 47 , 5 ) and near ( mean_val [ 1 ] , 70 , 5 ) and near ( mean_val [ 2 ] , 78 , 5 ) :
*/
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 272 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_mean ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 272 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = PyTuple_New ( 1 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 272 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_v_hsv ) ;
__Pyx_GIVEREF ( __pyx_v_hsv ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_v_hsv ) ;
__pyx_t_10 = __Pyx_PyDict_NewPresized ( 1 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 272 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
if ( PyDict_SetItem ( __pyx_t_10 , __pyx_n_s_mask , __pyx_v_mask ) < 0 ) __PYX_ERR ( 0 , 272 , __pyx_L1_error )
__pyx_t_4 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_11 , __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 272 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_mean_val , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":274
* mean_val = cv2 . mean ( hsv , mask = mask )
* # print ( str ( mean_val [ 0 ] ) )
* if near ( mean_val [ 0 ] , 47 , 5 ) and near ( mean_val [ 1 ] , 70 , 5 ) and near ( mean_val [ 2 ] , 78 , 5 ) : # < < < < < < < < < < < < < <
* objtype = " Keps Nut "
* if circular and near ( radius / pixelsPerMetric , 0.23 , 0.02 ) :
*/
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_near ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_11 = __Pyx_GetItemInt ( __pyx_v_mean_val , 0 , long , 1 , __Pyx_PyInt_From_long , 0 , 0 , 1 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_1 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_1 , __pyx_t_11 , __pyx_int_47 , __pyx_int_5 } ;
__pyx_t_4 = __Pyx_PyFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_1 , __pyx_t_11 , __pyx_int_47 , __pyx_int_5 } ;
__pyx_t_4 = __Pyx_PyCFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
} else
# endif
{
__pyx_t_3 = PyTuple_New ( 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
if ( __pyx_t_1 ) {
__Pyx_GIVEREF ( __pyx_t_1 ) ; PyTuple_SET_ITEM ( __pyx_t_3 , 0 , __pyx_t_1 ) ; __pyx_t_1 = NULL ;
}
__Pyx_GIVEREF ( __pyx_t_11 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 0 + __pyx_t_9 , __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_int_47 ) ;
__Pyx_GIVEREF ( __pyx_int_47 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 1 + __pyx_t_9 , __pyx_int_47 ) ;
__Pyx_INCREF ( __pyx_int_5 ) ;
__Pyx_GIVEREF ( __pyx_int_5 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 2 + __pyx_t_9 , __pyx_int_5 ) ;
__pyx_t_11 = 0 ;
__pyx_t_4 = __Pyx_PyObject_Call ( __pyx_t_10 , __pyx_t_3 , NULL ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
}
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_7 = __Pyx_PyObject_IsTrue ( __pyx_t_4 ) ; if ( unlikely ( __pyx_t_7 < 0 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( __pyx_t_7 ) {
} else {
__pyx_t_2 = __pyx_t_7 ;
goto __pyx_L65_bool_binop_done ;
}
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_near ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_3 = __Pyx_GetItemInt ( __pyx_v_mean_val , 1 , long , 1 , __Pyx_PyInt_From_long , 0 , 0 , 1 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_11 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_11 , __pyx_t_3 , __pyx_int_70 , __pyx_int_5 } ;
__pyx_t_4 = __Pyx_PyFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_11 , __pyx_t_3 , __pyx_int_70 , __pyx_int_5 } ;
__pyx_t_4 = __Pyx_PyCFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
} else
# endif
{
__pyx_t_1 = PyTuple_New ( 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
if ( __pyx_t_11 ) {
__Pyx_GIVEREF ( __pyx_t_11 ) ; PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_t_11 ) ; __pyx_t_11 = NULL ;
}
__Pyx_GIVEREF ( __pyx_t_3 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 + __pyx_t_9 , __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_int_70 ) ;
__Pyx_GIVEREF ( __pyx_int_70 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 + __pyx_t_9 , __pyx_int_70 ) ;
__Pyx_INCREF ( __pyx_int_5 ) ;
__Pyx_GIVEREF ( __pyx_int_5 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 2 + __pyx_t_9 , __pyx_int_5 ) ;
__pyx_t_3 = 0 ;
__pyx_t_4 = __Pyx_PyObject_Call ( __pyx_t_10 , __pyx_t_1 , NULL ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
}
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_7 = __Pyx_PyObject_IsTrue ( __pyx_t_4 ) ; if ( unlikely ( __pyx_t_7 < 0 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( __pyx_t_7 ) {
} else {
__pyx_t_2 = __pyx_t_7 ;
goto __pyx_L65_bool_binop_done ;
}
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_near ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_1 = __Pyx_GetItemInt ( __pyx_v_mean_val , 2 , long , 1 , __Pyx_PyInt_From_long , 0 , 0 , 1 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_3 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_3 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_3 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_3 , __pyx_t_1 , __pyx_int_78 , __pyx_int_5 } ;
__pyx_t_4 = __Pyx_PyFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_3 , __pyx_t_1 , __pyx_int_78 , __pyx_int_5 } ;
__pyx_t_4 = __Pyx_PyCFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else
# endif
{
__pyx_t_11 = PyTuple_New ( 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __pyx_t_3 ) {
__Pyx_GIVEREF ( __pyx_t_3 ) ; PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_t_3 ) ; __pyx_t_3 = NULL ;
}
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 + __pyx_t_9 , __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_int_78 ) ;
__Pyx_GIVEREF ( __pyx_int_78 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 1 + __pyx_t_9 , __pyx_int_78 ) ;
__Pyx_INCREF ( __pyx_int_5 ) ;
__Pyx_GIVEREF ( __pyx_int_5 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 2 + __pyx_t_9 , __pyx_int_5 ) ;
__pyx_t_1 = 0 ;
__pyx_t_4 = __Pyx_PyObject_Call ( __pyx_t_10 , __pyx_t_11 , NULL ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
}
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_7 = __Pyx_PyObject_IsTrue ( __pyx_t_4 ) ; if ( unlikely ( __pyx_t_7 < 0 ) ) __PYX_ERR ( 0 , 274 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_2 = __pyx_t_7 ;
__pyx_L65_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":275
* # print ( str ( mean_val [ 0 ] ) )
* if near ( mean_val [ 0 ] , 47 , 5 ) and near ( mean_val [ 1 ] , 70 , 5 ) and near ( mean_val [ 2 ] , 78 , 5 ) :
* objtype = " Keps Nut " # < < < < < < < < < < < < < <
* if circular and near ( radius / pixelsPerMetric , 0.23 , 0.02 ) :
* objtype = " Washer "
*/
__Pyx_INCREF ( __pyx_kp_s_Keps_Nut ) ;
__Pyx_DECREF_SET ( __pyx_v_objtype , __pyx_kp_s_Keps_Nut ) ;
/* "detect.py":274
* mean_val = cv2 . mean ( hsv , mask = mask )
* # print ( str ( mean_val [ 0 ] ) )
* if near ( mean_val [ 0 ] , 47 , 5 ) and near ( mean_val [ 1 ] , 70 , 5 ) and near ( mean_val [ 2 ] , 78 , 5 ) : # < < < < < < < < < < < < < <
* objtype = " Keps Nut "
* if circular and near ( radius / pixelsPerMetric , 0.23 , 0.02 ) :
*/
}
/* "detect.py":265
* iteml = 0
* else :
* if circular and near ( radius * 2 / pixelsPerMetric , 0.38 , 0.03 ) : # < < < < < < < < < < < < < <
* # Keps nut or spacer
* objtype = " Spacer "
*/
}
/* "detect.py":276
* if near ( mean_val [ 0 ] , 47 , 5 ) and near ( mean_val [ 1 ] , 70 , 5 ) and near ( mean_val [ 2 ] , 78 , 5 ) :
* objtype = " Keps Nut "
* if circular and near ( radius / pixelsPerMetric , 0.23 , 0.02 ) : # < < < < < < < < < < < < < <
* objtype = " Washer "
* epsilon = 3 # 0.02 * cv2 . arcLength ( c , True )
*/
__pyx_t_7 = ( __pyx_v_circular ! = 0 ) ;
if ( __pyx_t_7 ) {
} else {
__pyx_t_2 = __pyx_t_7 ;
goto __pyx_L69_bool_binop_done ;
}
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_near ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 276 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_11 = __Pyx_PyNumber_Divide ( __pyx_v_radius , __pyx_v_pixelsPerMetric ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 276 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_1 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_1 , __pyx_t_11 , __pyx_float_0_23 , __pyx_float_0_02 } ;
__pyx_t_4 = __Pyx_PyFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 276 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_1 , __pyx_t_11 , __pyx_float_0_23 , __pyx_float_0_02 } ;
__pyx_t_4 = __Pyx_PyCFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 276 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
} else
# endif
{
__pyx_t_3 = PyTuple_New ( 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 276 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
if ( __pyx_t_1 ) {
__Pyx_GIVEREF ( __pyx_t_1 ) ; PyTuple_SET_ITEM ( __pyx_t_3 , 0 , __pyx_t_1 ) ; __pyx_t_1 = NULL ;
}
__Pyx_GIVEREF ( __pyx_t_11 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 0 + __pyx_t_9 , __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_float_0_23 ) ;
__Pyx_GIVEREF ( __pyx_float_0_23 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 1 + __pyx_t_9 , __pyx_float_0_23 ) ;
__Pyx_INCREF ( __pyx_float_0_02 ) ;
__Pyx_GIVEREF ( __pyx_float_0_02 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 2 + __pyx_t_9 , __pyx_float_0_02 ) ;
__pyx_t_11 = 0 ;
__pyx_t_4 = __Pyx_PyObject_Call ( __pyx_t_10 , __pyx_t_3 , NULL ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 276 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
}
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_7 = __Pyx_PyObject_IsTrue ( __pyx_t_4 ) ; if ( unlikely ( __pyx_t_7 < 0 ) ) __PYX_ERR ( 0 , 276 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_2 = __pyx_t_7 ;
__pyx_L69_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":277
* objtype = " Keps Nut "
* if circular and near ( radius / pixelsPerMetric , 0.23 , 0.02 ) :
* objtype = " Washer " # < < < < < < < < < < < < < <
* epsilon = 3 # 0.02 * cv2 . arcLength ( c , True )
* # print ( str ( epsilon ) )
*/
__Pyx_INCREF ( __pyx_n_s_Washer ) ;
__Pyx_DECREF_SET ( __pyx_v_objtype , __pyx_n_s_Washer ) ;
/* "detect.py":276
* if near ( mean_val [ 0 ] , 47 , 5 ) and near ( mean_val [ 1 ] , 70 , 5 ) and near ( mean_val [ 2 ] , 78 , 5 ) :
* objtype = " Keps Nut "
* if circular and near ( radius / pixelsPerMetric , 0.23 , 0.02 ) : # < < < < < < < < < < < < < <
* objtype = " Washer "
* epsilon = 3 # 0.02 * cv2 . arcLength ( c , True )
*/
}
/* "detect.py":278
* if circular and near ( radius / pixelsPerMetric , 0.23 , 0.02 ) :
* objtype = " Washer "
* epsilon = 3 # 0.02 * cv2 . arcLength ( c , True ) # < < < < < < < < < < < < < <
* # print ( str ( epsilon ) )
* approx = cv2 . approxPolyDP ( c , epsilon , True )
*/
__pyx_v_epsilon = 3 ;
/* "detect.py":280
* epsilon = 3 # 0.02 * cv2 . arcLength ( c , True )
* # print ( str ( epsilon ) )
* approx = cv2 . approxPolyDP ( c , epsilon , True ) # < < < < < < < < < < < < < <
* hull = cv2 . convexHull ( approx , returnPoints = False )
* hull2 = cv2 . convexHull ( c )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 280 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_10 , __pyx_n_s_approxPolyDP ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 280 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = __Pyx_PyInt_From_long ( __pyx_v_epsilon ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 280 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_11 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_3 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_3 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_3 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_11 , __pyx_v_c , __pyx_t_10 , Py_True } ;
__pyx_t_4 = __Pyx_PyFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 280 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 4 ] = { __pyx_t_11 , __pyx_v_c , __pyx_t_10 , Py_True } ;
__pyx_t_4 = __Pyx_PyCFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 280 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else
# endif
{
__pyx_t_1 = PyTuple_New ( 3 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 280 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
if ( __pyx_t_11 ) {
__Pyx_GIVEREF ( __pyx_t_11 ) ; PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_t_11 ) ; __pyx_t_11 = NULL ;
}
__Pyx_INCREF ( __pyx_v_c ) ;
__Pyx_GIVEREF ( __pyx_v_c ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 + __pyx_t_9 , __pyx_v_c ) ;
__Pyx_GIVEREF ( __pyx_t_10 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 + __pyx_t_9 , __pyx_t_10 ) ;
__Pyx_INCREF ( Py_True ) ;
__Pyx_GIVEREF ( Py_True ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 2 + __pyx_t_9 , Py_True ) ;
__pyx_t_10 = 0 ;
__pyx_t_4 = __Pyx_PyObject_Call ( __pyx_t_3 , __pyx_t_1 , NULL ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 280 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
}
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_approx , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":281
* # print ( str ( epsilon ) )
* approx = cv2 . approxPolyDP ( c , epsilon , True )
* hull = cv2 . convexHull ( approx , returnPoints = False ) # < < < < < < < < < < < < < <
* hull2 = cv2 . convexHull ( c )
* defects = cv2 . convexityDefects ( c , hull )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 281 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_convexHull ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 281 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = PyTuple_New ( 1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 281 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_v_approx ) ;
__Pyx_GIVEREF ( __pyx_v_approx ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 0 , __pyx_v_approx ) ;
__pyx_t_1 = __Pyx_PyDict_NewPresized ( 1 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 281 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
if ( PyDict_SetItem ( __pyx_t_1 , __pyx_n_s_returnPoints , Py_False ) < 0 ) __PYX_ERR ( 0 , 281 , __pyx_L1_error )
__pyx_t_10 = __Pyx_PyObject_Call ( __pyx_t_3 , __pyx_t_4 , __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 281 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_hull , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
/* "detect.py":282
* approx = cv2 . approxPolyDP ( c , epsilon , True )
* hull = cv2 . convexHull ( approx , returnPoints = False )
* hull2 = cv2 . convexHull ( c ) # < < < < < < < < < < < < < <
* defects = cv2 . convexityDefects ( c , hull )
* # print ( str ( defects . size ) + " match " )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 282 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_convexHull ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 282 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
}
}
__pyx_t_10 = ( __pyx_t_1 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_4 , __pyx_t_1 , __pyx_v_c ) : __Pyx_PyObject_CallOneArg ( __pyx_t_4 , __pyx_v_c ) ;
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 282 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_hull2 , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
/* "detect.py":283
* hull = cv2 . convexHull ( approx , returnPoints = False )
* hull2 = cv2 . convexHull ( c )
* defects = cv2 . convexityDefects ( c , hull ) # < < < < < < < < < < < < < <
* # print ( str ( defects . size ) + " match " )
* cv2 . drawContours ( orig , ( hull2 ) , - 1 , ( 0 , 0 , 255 ) , 3 )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 283 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_convexityDefects ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 283 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_4 , __pyx_v_c , __pyx_v_hull } ;
__pyx_t_10 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 283 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_4 , __pyx_v_c , __pyx_v_hull } ;
__pyx_t_10 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 283 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
} else
# endif
{
__pyx_t_3 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 283 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
if ( __pyx_t_4 ) {
__Pyx_GIVEREF ( __pyx_t_4 ) ; PyTuple_SET_ITEM ( __pyx_t_3 , 0 , __pyx_t_4 ) ; __pyx_t_4 = NULL ;
}
__Pyx_INCREF ( __pyx_v_c ) ;
__Pyx_GIVEREF ( __pyx_v_c ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 0 + __pyx_t_9 , __pyx_v_c ) ;
__Pyx_INCREF ( __pyx_v_hull ) ;
__Pyx_GIVEREF ( __pyx_v_hull ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 1 + __pyx_t_9 , __pyx_v_hull ) ;
__pyx_t_10 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_3 , NULL ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 283 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_defects , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
/* "detect.py":285
* defects = cv2 . convexityDefects ( c , hull )
* # print ( str ( defects . size ) + " match " )
* cv2 . drawContours ( orig , ( hull2 ) , - 1 , ( 0 , 0 , 255 ) , 3 ) # < < < < < < < < < < < < < <
* cv2 . drawContours ( orig , ( approx ) , - 1 , ( 255 , 0 , 0 ) , 3 )
* convexness = area_contour / cv2 . contourArea ( hull2 )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 285 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_drawContours ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 285 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_3 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_3 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_3 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_1 , __pyx_v_orig , __pyx_v_hull2 , __pyx_int_neg_1 , __pyx_tuple__5 , __pyx_int_3 } ;
__pyx_t_10 = __Pyx_PyFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 285 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_1 , __pyx_v_orig , __pyx_v_hull2 , __pyx_int_neg_1 , __pyx_tuple__5 , __pyx_int_3 } ;
__pyx_t_10 = __Pyx_PyCFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 285 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
} else
# endif
{
__pyx_t_4 = PyTuple_New ( 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 285 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
if ( __pyx_t_1 ) {
__Pyx_GIVEREF ( __pyx_t_1 ) ; PyTuple_SET_ITEM ( __pyx_t_4 , 0 , __pyx_t_1 ) ; __pyx_t_1 = NULL ;
}
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 0 + __pyx_t_9 , __pyx_v_orig ) ;
__Pyx_INCREF ( __pyx_v_hull2 ) ;
__Pyx_GIVEREF ( __pyx_v_hull2 ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 1 + __pyx_t_9 , __pyx_v_hull2 ) ;
__Pyx_INCREF ( __pyx_int_neg_1 ) ;
__Pyx_GIVEREF ( __pyx_int_neg_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 2 + __pyx_t_9 , __pyx_int_neg_1 ) ;
__Pyx_INCREF ( __pyx_tuple__5 ) ;
__Pyx_GIVEREF ( __pyx_tuple__5 ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 3 + __pyx_t_9 , __pyx_tuple__5 ) ;
__Pyx_INCREF ( __pyx_int_3 ) ;
__Pyx_GIVEREF ( __pyx_int_3 ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 4 + __pyx_t_9 , __pyx_int_3 ) ;
__pyx_t_10 = __Pyx_PyObject_Call ( __pyx_t_3 , __pyx_t_4 , NULL ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 285 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
}
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
/* "detect.py":286
* # print ( str ( defects . size ) + " match " )
* cv2 . drawContours ( orig , ( hull2 ) , - 1 , ( 0 , 0 , 255 ) , 3 )
* cv2 . drawContours ( orig , ( approx ) , - 1 , ( 255 , 0 , 0 ) , 3 ) # < < < < < < < < < < < < < <
* convexness = area_contour / cv2 . contourArea ( hull2 )
* # print ( str ( convexness ) + " % fill " )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 286 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_drawContours ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 286 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_3 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_3 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_4 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_3 , __pyx_v_orig , __pyx_v_approx , __pyx_int_neg_1 , __pyx_tuple__4 , __pyx_int_3 } ;
__pyx_t_10 = __Pyx_PyFunction_FastCall ( __pyx_t_4 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 286 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_4 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_3 , __pyx_v_orig , __pyx_v_approx , __pyx_int_neg_1 , __pyx_tuple__4 , __pyx_int_3 } ;
__pyx_t_10 = __Pyx_PyCFunction_FastCall ( __pyx_t_4 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 286 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
} else
# endif
{
__pyx_t_1 = PyTuple_New ( 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 286 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
if ( __pyx_t_3 ) {
__Pyx_GIVEREF ( __pyx_t_3 ) ; PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_t_3 ) ; __pyx_t_3 = NULL ;
}
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 + __pyx_t_9 , __pyx_v_orig ) ;
__Pyx_INCREF ( __pyx_v_approx ) ;
__Pyx_GIVEREF ( __pyx_v_approx ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 + __pyx_t_9 , __pyx_v_approx ) ;
__Pyx_INCREF ( __pyx_int_neg_1 ) ;
__Pyx_GIVEREF ( __pyx_int_neg_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 2 + __pyx_t_9 , __pyx_int_neg_1 ) ;
__Pyx_INCREF ( __pyx_tuple__4 ) ;
__Pyx_GIVEREF ( __pyx_tuple__4 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 3 + __pyx_t_9 , __pyx_tuple__4 ) ;
__Pyx_INCREF ( __pyx_int_3 ) ;
__Pyx_GIVEREF ( __pyx_int_3 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 4 + __pyx_t_9 , __pyx_int_3 ) ;
__pyx_t_10 = __Pyx_PyObject_Call ( __pyx_t_4 , __pyx_t_1 , NULL ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 286 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
}
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
/* "detect.py":287
* cv2 . drawContours ( orig , ( hull2 ) , - 1 , ( 0 , 0 , 255 ) , 3 )
* cv2 . drawContours ( orig , ( approx ) , - 1 , ( 255 , 0 , 0 ) , 3 )
* convexness = area_contour / cv2 . contourArea ( hull2 ) # < < < < < < < < < < < < < <
* # print ( str ( convexness ) + " % fill " )
* # if not cv2 . isContourConvex ( approx ) :
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 287 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_contourArea ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 287 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
}
}
__pyx_t_10 = ( __pyx_t_4 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_1 , __pyx_t_4 , __pyx_v_hull2 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_1 , __pyx_v_hull2 ) ;
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 287 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = __Pyx_PyNumber_Divide ( __pyx_v_area_contour , __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 287 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_convexness , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":291
* # if not cv2 . isContourConvex ( approx ) :
* # if cv2 . matchShapes ( hull , c , 1 , 0.0 ) > 1 :
* if defects is not None and defects . size > 5 and ( convexness < 0.9 or boxiness < 0.75 ) and rectangular : # < < < < < < < < < < < < < <
* objtype = " Screw "
* iteml = larger ( dimA , dimB )
*/
__pyx_t_7 = ( __pyx_v_defects ! = Py_None ) ;
__pyx_t_8 = ( __pyx_t_7 ! = 0 ) ;
if ( __pyx_t_8 ) {
} else {
__pyx_t_2 = __pyx_t_8 ;
goto __pyx_L72_bool_binop_done ;
}
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_v_defects , __pyx_n_s_size ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 291 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_10 = PyObject_RichCompare ( __pyx_t_1 , __pyx_int_5 , Py_GT ) ; __Pyx_XGOTREF ( __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 291 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_8 = __Pyx_PyObject_IsTrue ( __pyx_t_10 ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 291 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( __pyx_t_8 ) {
} else {
__pyx_t_2 = __pyx_t_8 ;
goto __pyx_L72_bool_binop_done ;
}
__pyx_t_10 = PyObject_RichCompare ( __pyx_v_convexness , __pyx_float_0_9 , Py_LT ) ; __Pyx_XGOTREF ( __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 291 , __pyx_L1_error )
__pyx_t_8 = __Pyx_PyObject_IsTrue ( __pyx_t_10 ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 291 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( ! __pyx_t_8 ) {
} else {
goto __pyx_L75_next_and ;
}
__pyx_t_10 = PyObject_RichCompare ( __pyx_v_boxiness , __pyx_float_0_75 , Py_LT ) ; __Pyx_XGOTREF ( __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 291 , __pyx_L1_error )
__pyx_t_8 = __Pyx_PyObject_IsTrue ( __pyx_t_10 ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 291 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( __pyx_t_8 ) {
} else {
__pyx_t_2 = __pyx_t_8 ;
goto __pyx_L72_bool_binop_done ;
}
__pyx_L75_next_and : ;
__pyx_t_8 = ( __pyx_v_rectangular ! = 0 ) ;
__pyx_t_2 = __pyx_t_8 ;
__pyx_L72_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":292
* # if cv2 . matchShapes ( hull , c , 1 , 0.0 ) > 1 :
* if defects is not None and defects . size > 5 and ( convexness < 0.9 or boxiness < 0.75 ) and rectangular :
* objtype = " Screw " # < < < < < < < < < < < < < <
* iteml = larger ( dimA , dimB )
* # print ( " Screw Length (RAW): " + str ( iteml ) )
*/
__Pyx_INCREF ( __pyx_n_s_Screw ) ;
__Pyx_DECREF_SET ( __pyx_v_objtype , __pyx_n_s_Screw ) ;
/* "detect.py":293
* if defects is not None and defects . size > 5 and ( convexness < 0.9 or boxiness < 0.75 ) and rectangular :
* objtype = " Screw "
* iteml = larger ( dimA , dimB ) # < < < < < < < < < < < < < <
* # print ( " Screw Length (RAW): " + str ( iteml ) )
* iteml = sizeVexScrew ( radius * 2 / pixelsPerMetric )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_larger ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 293 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_4 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_4 , __pyx_v_dimA , __pyx_v_dimB } ;
__pyx_t_10 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 293 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_4 , __pyx_v_dimA , __pyx_v_dimB } ;
__pyx_t_10 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 293 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
} else
# endif
{
__pyx_t_3 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 293 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
if ( __pyx_t_4 ) {
__Pyx_GIVEREF ( __pyx_t_4 ) ; PyTuple_SET_ITEM ( __pyx_t_3 , 0 , __pyx_t_4 ) ; __pyx_t_4 = NULL ;
}
__Pyx_INCREF ( __pyx_v_dimA ) ;
__Pyx_GIVEREF ( __pyx_v_dimA ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 0 + __pyx_t_9 , __pyx_v_dimA ) ;
__Pyx_INCREF ( __pyx_v_dimB ) ;
__Pyx_GIVEREF ( __pyx_v_dimB ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 1 + __pyx_t_9 , __pyx_v_dimB ) ;
__pyx_t_10 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_3 , NULL ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 293 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_iteml , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
/* "detect.py":295
* iteml = larger ( dimA , dimB )
* # print ( " Screw Length (RAW): " + str ( iteml ) )
* iteml = sizeVexScrew ( radius * 2 / pixelsPerMetric ) # < < < < < < < < < < < < < <
* # print ( " Rounded Length: " + str ( iteml ) )
* else :
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_sizeVexScrew ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 295 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_3 = PyNumber_Multiply ( __pyx_v_radius , __pyx_int_2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 295 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_4 = __Pyx_PyNumber_Divide ( __pyx_t_3 , __pyx_v_pixelsPerMetric ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 295 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_3 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_3 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
}
}
__pyx_t_10 = ( __pyx_t_3 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_1 , __pyx_t_3 , __pyx_t_4 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_1 , __pyx_t_4 ) ;
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 295 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_iteml , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
/* "detect.py":291
* # if not cv2 . isContourConvex ( approx ) :
* # if cv2 . matchShapes ( hull , c , 1 , 0.0 ) > 1 :
* if defects is not None and defects . size > 5 and ( convexness < 0.9 or boxiness < 0.75 ) and rectangular : # < < < < < < < < < < < < < <
* objtype = " Screw "
* iteml = larger ( dimA , dimB )
*/
goto __pyx_L71 ;
}
/* "detect.py":298
* # print ( " Rounded Length: " + str ( iteml ) )
* else :
* if itemhr = = 0.3125 and rectangular : # < < < < < < < < < < < < < <
* objtype = " Standoff "
* iteml = sizeStandoff ( itemw )
*/
/*else*/ {
__pyx_t_10 = __Pyx_PyFloat_EqObjC ( __pyx_v_itemhr , __pyx_float_0_3125 , 0.3125 , 0 , 0 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 298 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_8 = __Pyx_PyObject_IsTrue ( __pyx_t_10 ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 298 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( __pyx_t_8 ) {
} else {
__pyx_t_2 = __pyx_t_8 ;
goto __pyx_L78_bool_binop_done ;
}
__pyx_t_8 = ( __pyx_v_rectangular ! = 0 ) ;
__pyx_t_2 = __pyx_t_8 ;
__pyx_L78_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":299
* else :
* if itemhr = = 0.3125 and rectangular :
* objtype = " Standoff " # < < < < < < < < < < < < < <
* iteml = sizeStandoff ( itemw )
* if itemhr = = 0.1875 and rectangular :
*/
__Pyx_INCREF ( __pyx_n_s_Standoff ) ;
__Pyx_DECREF_SET ( __pyx_v_objtype , __pyx_n_s_Standoff ) ;
/* "detect.py":300
* if itemhr = = 0.3125 and rectangular :
* objtype = " Standoff "
* iteml = sizeStandoff ( itemw ) # < < < < < < < < < < < < < <
* if itemhr = = 0.1875 and rectangular :
* objtype = " Axle "
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_sizeStandoff ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 300 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_4 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
}
}
__pyx_t_10 = ( __pyx_t_4 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_1 , __pyx_t_4 , __pyx_v_itemw ) : __Pyx_PyObject_CallOneArg ( __pyx_t_1 , __pyx_v_itemw ) ;
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 300 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_iteml , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
/* "detect.py":298
* # print ( " Rounded Length: " + str ( iteml ) )
* else :
* if itemhr = = 0.3125 and rectangular : # < < < < < < < < < < < < < <
* objtype = " Standoff "
* iteml = sizeStandoff ( itemw )
*/
}
/* "detect.py":301
* objtype = " Standoff "
* iteml = sizeStandoff ( itemw )
* if itemhr = = 0.1875 and rectangular : # < < < < < < < < < < < < < <
* objtype = " Axle "
* iteml = ( radius * 2 / pixelsPerMetric + itemw ) / 2
*/
__pyx_t_10 = __Pyx_PyFloat_EqObjC ( __pyx_v_itemhr , __pyx_float_0_1875 , 0.1875 , 0 , 0 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 301 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_8 = __Pyx_PyObject_IsTrue ( __pyx_t_10 ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 301 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( __pyx_t_8 ) {
} else {
__pyx_t_2 = __pyx_t_8 ;
goto __pyx_L81_bool_binop_done ;
}
__pyx_t_8 = ( __pyx_v_rectangular ! = 0 ) ;
__pyx_t_2 = __pyx_t_8 ;
__pyx_L81_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":302
* iteml = sizeStandoff ( itemw )
* if itemhr = = 0.1875 and rectangular :
* objtype = " Axle " # < < < < < < < < < < < < < <
* iteml = ( radius * 2 / pixelsPerMetric + itemw ) / 2
* rows , cols = orig . shape [ : 2 ]
*/
__Pyx_INCREF ( __pyx_n_s_Axle ) ;
__Pyx_DECREF_SET ( __pyx_v_objtype , __pyx_n_s_Axle ) ;
/* "detect.py":303
* if itemhr = = 0.1875 and rectangular :
* objtype = " Axle "
* iteml = ( radius * 2 / pixelsPerMetric + itemw ) / 2 # < < < < < < < < < < < < < <
* rows , cols = orig . shape [ : 2 ]
* [ vx , vy , xx , yy ] = cv2 . fitLine ( c , cv2 . DIST_L2 , 0 , 0.01 , 0.01 )
*/
__pyx_t_10 = PyNumber_Multiply ( __pyx_v_radius , __pyx_int_2 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 303 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_1 = __Pyx_PyNumber_Divide ( __pyx_t_10 , __pyx_v_pixelsPerMetric ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 303 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = PyNumber_Add ( __pyx_t_1 , __pyx_v_itemw ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 303 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = __Pyx_PyNumber_Divide ( __pyx_t_10 , __pyx_int_2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 303 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_iteml , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
/* "detect.py":301
* objtype = " Standoff "
* iteml = sizeStandoff ( itemw )
* if itemhr = = 0.1875 and rectangular : # < < < < < < < < < < < < < <
* objtype = " Axle "
* iteml = ( radius * 2 / pixelsPerMetric + itemw ) / 2
*/
}
}
__pyx_L71 : ;
}
__pyx_L58 : ;
/* "detect.py":304
* objtype = " Axle "
* iteml = ( radius * 2 / pixelsPerMetric + itemw ) / 2
* rows , cols = orig . shape [ : 2 ] # < < < < < < < < < < < < < <
* [ vx , vy , xx , yy ] = cv2 . fitLine ( c , cv2 . DIST_L2 , 0 , 0.01 , 0.01 )
* lefty = int ( ( - xx * vy / vx ) + yy )
*/
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_v_orig , __pyx_n_s_shape ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 304 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_10 = __Pyx_PyObject_GetSlice ( __pyx_t_1 , 0 , 2 , NULL , NULL , & __pyx_slice__6 , 0 , 1 , 1 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 304 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_10 ) ) ) | | ( PyList_CheckExact ( __pyx_t_10 ) ) ) {
PyObject * sequence = __pyx_t_10 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 2 ) ) {
if ( size > 2 ) __Pyx_RaiseTooManyValuesError ( 2 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 304 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_1 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_4 = PyTuple_GET_ITEM ( sequence , 1 ) ;
} else {
__pyx_t_1 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_4 = PyList_GET_ITEM ( sequence , 1 ) ;
}
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
# else
__pyx_t_1 = PySequence_ITEM ( sequence , 0 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 304 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_4 = PySequence_ITEM ( sequence , 1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 304 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
# endif
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else {
Py_ssize_t index = - 1 ;
__pyx_t_3 = PyObject_GetIter ( __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 304 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_3 ) - > tp_iternext ;
index = 0 ; __pyx_t_1 = __pyx_t_14 ( __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_1 ) ) goto __pyx_L83_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_1 ) ;
index = 1 ; __pyx_t_4 = __pyx_t_14 ( __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_4 ) ) goto __pyx_L83_unpacking_failed ;
__Pyx_GOTREF ( __pyx_t_4 ) ;
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_3 ) , 2 ) < 0 ) __PYX_ERR ( 0 , 304 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
goto __pyx_L84_unpacking_done ;
__pyx_L83_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 304 , __pyx_L1_error )
__pyx_L84_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_rows , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_cols , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":305
* iteml = ( radius * 2 / pixelsPerMetric + itemw ) / 2
* rows , cols = orig . shape [ : 2 ]
* [ vx , vy , xx , yy ] = cv2 . fitLine ( c , cv2 . DIST_L2 , 0 , 0.01 , 0.01 ) # < < < < < < < < < < < < < <
* lefty = int ( ( - xx * vy / vx ) + yy )
* righty = int ( ( ( cols - xx ) * vy / vx ) + yy )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 305 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_fitLine ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 305 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 305 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_DIST_L2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 305 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_1 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_1 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_1 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_4 , __pyx_v_c , __pyx_t_3 , __pyx_int_0 , __pyx_float_0_01 , __pyx_float_0_01 } ;
__pyx_t_10 = __Pyx_PyFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 305 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_1 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_4 , __pyx_v_c , __pyx_t_3 , __pyx_int_0 , __pyx_float_0_01 , __pyx_float_0_01 } ;
__pyx_t_10 = __Pyx_PyCFunction_FastCall ( __pyx_t_1 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 305 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
} else
# endif
{
__pyx_t_11 = PyTuple_New ( 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 305 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __pyx_t_4 ) {
__Pyx_GIVEREF ( __pyx_t_4 ) ; PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_t_4 ) ; __pyx_t_4 = NULL ;
}
__Pyx_INCREF ( __pyx_v_c ) ;
__Pyx_GIVEREF ( __pyx_v_c ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 + __pyx_t_9 , __pyx_v_c ) ;
__Pyx_GIVEREF ( __pyx_t_3 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 1 + __pyx_t_9 , __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_int_0 ) ;
__Pyx_GIVEREF ( __pyx_int_0 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 2 + __pyx_t_9 , __pyx_int_0 ) ;
__Pyx_INCREF ( __pyx_float_0_01 ) ;
__Pyx_GIVEREF ( __pyx_float_0_01 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 3 + __pyx_t_9 , __pyx_float_0_01 ) ;
__Pyx_INCREF ( __pyx_float_0_01 ) ;
__Pyx_GIVEREF ( __pyx_float_0_01 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 4 + __pyx_t_9 , __pyx_float_0_01 ) ;
__pyx_t_3 = 0 ;
__pyx_t_10 = __Pyx_PyObject_Call ( __pyx_t_1 , __pyx_t_11 , NULL ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 305 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
}
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
if ( ( likely ( PyTuple_CheckExact ( __pyx_t_10 ) ) ) | | ( PyList_CheckExact ( __pyx_t_10 ) ) ) {
PyObject * sequence = __pyx_t_10 ;
Py_ssize_t size = __Pyx_PySequence_SIZE ( sequence ) ;
if ( unlikely ( size ! = 4 ) ) {
if ( size > 4 ) __Pyx_RaiseTooManyValuesError ( 4 ) ;
else if ( size > = 0 ) __Pyx_RaiseNeedMoreValuesError ( size ) ;
__PYX_ERR ( 0 , 305 , __pyx_L1_error )
}
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if ( likely ( PyTuple_CheckExact ( sequence ) ) ) {
__pyx_t_1 = PyTuple_GET_ITEM ( sequence , 0 ) ;
__pyx_t_11 = PyTuple_GET_ITEM ( sequence , 1 ) ;
__pyx_t_3 = PyTuple_GET_ITEM ( sequence , 2 ) ;
__pyx_t_4 = PyTuple_GET_ITEM ( sequence , 3 ) ;
} else {
__pyx_t_1 = PyList_GET_ITEM ( sequence , 0 ) ;
__pyx_t_11 = PyList_GET_ITEM ( sequence , 1 ) ;
__pyx_t_3 = PyList_GET_ITEM ( sequence , 2 ) ;
__pyx_t_4 = PyList_GET_ITEM ( sequence , 3 ) ;
}
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
# else
{
Py_ssize_t i ;
PyObject * * temps [ 4 ] = { & __pyx_t_1 , & __pyx_t_11 , & __pyx_t_3 , & __pyx_t_4 } ;
for ( i = 0 ; i < 4 ; i + + ) {
PyObject * item = PySequence_ITEM ( sequence , i ) ; if ( unlikely ( ! item ) ) __PYX_ERR ( 0 , 305 , __pyx_L1_error )
__Pyx_GOTREF ( item ) ;
* ( temps [ i ] ) = item ;
}
}
# endif
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else {
Py_ssize_t index = - 1 ;
PyObject * * temps [ 4 ] = { & __pyx_t_1 , & __pyx_t_11 , & __pyx_t_3 , & __pyx_t_4 } ;
__pyx_t_6 = PyObject_GetIter ( __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 305 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_14 = Py_TYPE ( __pyx_t_6 ) - > tp_iternext ;
for ( index = 0 ; index < 4 ; index + + ) {
PyObject * item = __pyx_t_14 ( __pyx_t_6 ) ; if ( unlikely ( ! item ) ) goto __pyx_L85_unpacking_failed ;
__Pyx_GOTREF ( item ) ;
* ( temps [ index ] ) = item ;
}
if ( __Pyx_IternextUnpackEndCheck ( __pyx_t_14 ( __pyx_t_6 ) , 4 ) < 0 ) __PYX_ERR ( 0 , 305 , __pyx_L1_error )
__pyx_t_14 = NULL ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
goto __pyx_L86_unpacking_done ;
__pyx_L85_unpacking_failed : ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__pyx_t_14 = NULL ;
if ( __Pyx_IterFinish ( ) = = 0 ) __Pyx_RaiseNeedMoreValuesError ( index ) ;
__PYX_ERR ( 0 , 305 , __pyx_L1_error )
__pyx_L86_unpacking_done : ;
}
__Pyx_XDECREF_SET ( __pyx_v_vx , __pyx_t_1 ) ;
__pyx_t_1 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_vy , __pyx_t_11 ) ;
__pyx_t_11 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_xx , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_yy , __pyx_t_4 ) ;
__pyx_t_4 = 0 ;
/* "detect.py":306
* rows , cols = orig . shape [ : 2 ]
* [ vx , vy , xx , yy ] = cv2 . fitLine ( c , cv2 . DIST_L2 , 0 , 0.01 , 0.01 )
* lefty = int ( ( - xx * vy / vx ) + yy ) # < < < < < < < < < < < < < <
* righty = int ( ( ( cols - xx ) * vy / vx ) + yy )
* # cv2 . line ( orig , ( cols - 1 , righty ) , ( 0 , lefty ) , ( 0 , 255 , 0 ) , 2 )
*/
__pyx_t_10 = PyNumber_Negative ( __pyx_v_xx ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 306 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_4 = PyNumber_Multiply ( __pyx_t_10 , __pyx_v_vy ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 306 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = __Pyx_PyNumber_Divide ( __pyx_t_4 , __pyx_v_vx ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 306 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = PyNumber_Add ( __pyx_t_10 , __pyx_v_yy ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 306 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = __Pyx_PyNumber_Int ( __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 306 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_lefty , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
/* "detect.py":307
* [ vx , vy , xx , yy ] = cv2 . fitLine ( c , cv2 . DIST_L2 , 0 , 0.01 , 0.01 )
* lefty = int ( ( - xx * vy / vx ) + yy )
* righty = int ( ( ( cols - xx ) * vy / vx ) + yy ) # < < < < < < < < < < < < < <
* # cv2 . line ( orig , ( cols - 1 , righty ) , ( 0 , lefty ) , ( 0 , 255 , 0 ) , 2 )
* slope = ( lefty - righty ) / ( 1 - cols )
*/
__pyx_t_10 = PyNumber_Subtract ( __pyx_v_cols , __pyx_v_xx ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 307 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_4 = PyNumber_Multiply ( __pyx_t_10 , __pyx_v_vy ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 307 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = __Pyx_PyNumber_Divide ( __pyx_t_4 , __pyx_v_vx ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 307 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = PyNumber_Add ( __pyx_t_10 , __pyx_v_yy ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 307 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = __Pyx_PyNumber_Int ( __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 307 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_righty , __pyx_t_10 ) ;
__pyx_t_10 = 0 ;
/* "detect.py":309
* righty = int ( ( ( cols - xx ) * vy / vx ) + yy )
* # cv2 . line ( orig , ( cols - 1 , righty ) , ( 0 , lefty ) , ( 0 , 255 , 0 ) , 2 )
* slope = ( lefty - righty ) / ( 1 - cols ) # < < < < < < < < < < < < < <
* angle = math . atan ( slope )
* xpos = x - math . cos ( angle ) * radius
*/
__pyx_t_10 = PyNumber_Subtract ( __pyx_v_lefty , __pyx_v_righty ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 309 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_4 = __Pyx_PyInt_SubtractCObj ( __pyx_int_1 , __pyx_v_cols , 1 , 0 , 0 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 309 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_3 = __Pyx_PyNumber_Divide ( __pyx_t_10 , __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 309 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_slope , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
/* "detect.py":310
* # cv2 . line ( orig , ( cols - 1 , righty ) , ( 0 , lefty ) , ( 0 , 255 , 0 ) , 2 )
* slope = ( lefty - righty ) / ( 1 - cols )
* angle = math . atan ( slope ) # < < < < < < < < < < < < < <
* xpos = x - math . cos ( angle ) * radius
* ypos = y - math . sin ( angle ) * radius
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_math ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 310 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_atan ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 310 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_4 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_10 , __pyx_t_4 , __pyx_v_slope ) : __Pyx_PyObject_CallOneArg ( __pyx_t_10 , __pyx_v_slope ) ;
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 310 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_angle , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
/* "detect.py":311
* slope = ( lefty - righty ) / ( 1 - cols )
* angle = math . atan ( slope )
* xpos = x - math . cos ( angle ) * radius # < < < < < < < < < < < < < <
* ypos = y - math . sin ( angle ) * radius
* xpos2 = x + math . cos ( angle ) * radius
*/
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_math ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 311 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_10 , __pyx_n_s_cos ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 311 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_10 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_10 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_10 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_4 , __pyx_t_10 , __pyx_v_angle ) : __Pyx_PyObject_CallOneArg ( __pyx_t_4 , __pyx_v_angle ) ;
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 311 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = PyNumber_Multiply ( __pyx_t_3 , __pyx_v_radius ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 311 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = PyNumber_Subtract ( __pyx_v_x , __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 311 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_xpos , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
/* "detect.py":312
* angle = math . atan ( slope )
* xpos = x - math . cos ( angle ) * radius
* ypos = y - math . sin ( angle ) * radius # < < < < < < < < < < < < < <
* xpos2 = x + math . cos ( angle ) * radius
* ypos2 = y + math . sin ( angle ) * radius
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_math ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 312 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_sin ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 312 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_4 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_10 , __pyx_t_4 , __pyx_v_angle ) : __Pyx_PyObject_CallOneArg ( __pyx_t_10 , __pyx_v_angle ) ;
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 312 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = PyNumber_Multiply ( __pyx_t_3 , __pyx_v_radius ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 312 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = PyNumber_Subtract ( __pyx_v_y , __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 312 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_ypos , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
/* "detect.py":313
* xpos = x - math . cos ( angle ) * radius
* ypos = y - math . sin ( angle ) * radius
* xpos2 = x + math . cos ( angle ) * radius # < < < < < < < < < < < < < <
* ypos2 = y + math . sin ( angle ) * radius
* if xpos > xpos2 :
*/
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_math ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 313 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_10 , __pyx_n_s_cos ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 313 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_10 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_10 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_10 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_4 , __pyx_t_10 , __pyx_v_angle ) : __Pyx_PyObject_CallOneArg ( __pyx_t_4 , __pyx_v_angle ) ;
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 313 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = PyNumber_Multiply ( __pyx_t_3 , __pyx_v_radius ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 313 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = PyNumber_Add ( __pyx_v_x , __pyx_t_4 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 313 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_xpos2 , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
/* "detect.py":314
* ypos = y - math . sin ( angle ) * radius
* xpos2 = x + math . cos ( angle ) * radius
* ypos2 = y + math . sin ( angle ) * radius # < < < < < < < < < < < < < <
* if xpos > xpos2 :
* swap ( xpos , xpos2 )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_math ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 314 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_sin ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 314 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_4 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_10 , __pyx_t_4 , __pyx_v_angle ) : __Pyx_PyObject_CallOneArg ( __pyx_t_10 , __pyx_v_angle ) ;
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 314 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = PyNumber_Multiply ( __pyx_t_3 , __pyx_v_radius ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 314 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = PyNumber_Add ( __pyx_v_y , __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 314 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_XDECREF_SET ( __pyx_v_ypos2 , __pyx_t_3 ) ;
__pyx_t_3 = 0 ;
/* "detect.py":315
* xpos2 = x + math . cos ( angle ) * radius
* ypos2 = y + math . sin ( angle ) * radius
* if xpos > xpos2 : # < < < < < < < < < < < < < <
* swap ( xpos , xpos2 )
* swap ( ypos , ypos2 )
*/
__pyx_t_3 = PyObject_RichCompare ( __pyx_v_xpos , __pyx_v_xpos2 , Py_GT ) ; __Pyx_XGOTREF ( __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 315 , __pyx_L1_error )
__pyx_t_2 = __Pyx_PyObject_IsTrue ( __pyx_t_3 ) ; if ( unlikely ( __pyx_t_2 < 0 ) ) __PYX_ERR ( 0 , 315 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
if ( __pyx_t_2 ) {
/* "detect.py":316
* ypos2 = y + math . sin ( angle ) * radius
* if xpos > xpos2 :
* swap ( xpos , xpos2 ) # < < < < < < < < < < < < < <
* swap ( ypos , ypos2 )
* if rectangular :
*/
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_swap ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 316 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_4 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_4 , __pyx_v_xpos , __pyx_v_xpos2 } ;
__pyx_t_3 = __Pyx_PyFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 316 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_4 , __pyx_v_xpos , __pyx_v_xpos2 } ;
__pyx_t_3 = __Pyx_PyCFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 316 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
{
__pyx_t_11 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 316 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __pyx_t_4 ) {
__Pyx_GIVEREF ( __pyx_t_4 ) ; PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_t_4 ) ; __pyx_t_4 = NULL ;
}
__Pyx_INCREF ( __pyx_v_xpos ) ;
__Pyx_GIVEREF ( __pyx_v_xpos ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 + __pyx_t_9 , __pyx_v_xpos ) ;
__Pyx_INCREF ( __pyx_v_xpos2 ) ;
__Pyx_GIVEREF ( __pyx_v_xpos2 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 1 + __pyx_t_9 , __pyx_v_xpos2 ) ;
__pyx_t_3 = __Pyx_PyObject_Call ( __pyx_t_10 , __pyx_t_11 , NULL ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 316 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
}
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
/* "detect.py":317
* if xpos > xpos2 :
* swap ( xpos , xpos2 )
* swap ( ypos , ypos2 ) # < < < < < < < < < < < < < <
* if rectangular :
* cv2 . line ( orig , ( int ( xpos ) , int ( ypos ) ) ,
*/
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_swap ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 317 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_11 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_10 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_10 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_10 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_v_ypos , __pyx_v_ypos2 } ;
__pyx_t_3 = __Pyx_PyFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 317 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_10 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_v_ypos , __pyx_v_ypos2 } ;
__pyx_t_3 = __Pyx_PyCFunction_FastCall ( __pyx_t_10 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 317 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
} else
# endif
{
__pyx_t_4 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 317 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
if ( __pyx_t_11 ) {
__Pyx_GIVEREF ( __pyx_t_11 ) ; PyTuple_SET_ITEM ( __pyx_t_4 , 0 , __pyx_t_11 ) ; __pyx_t_11 = NULL ;
}
__Pyx_INCREF ( __pyx_v_ypos ) ;
__Pyx_GIVEREF ( __pyx_v_ypos ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 0 + __pyx_t_9 , __pyx_v_ypos ) ;
__Pyx_INCREF ( __pyx_v_ypos2 ) ;
__Pyx_GIVEREF ( __pyx_v_ypos2 ) ;
PyTuple_SET_ITEM ( __pyx_t_4 , 1 + __pyx_t_9 , __pyx_v_ypos2 ) ;
__pyx_t_3 = __Pyx_PyObject_Call ( __pyx_t_10 , __pyx_t_4 , NULL ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 317 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
}
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
/* "detect.py":315
* xpos2 = x + math . cos ( angle ) * radius
* ypos2 = y + math . sin ( angle ) * radius
* if xpos > xpos2 : # < < < < < < < < < < < < < <
* swap ( xpos , xpos2 )
* swap ( ypos , ypos2 )
*/
}
/* "detect.py":318
* swap ( xpos , xpos2 )
* swap ( ypos , ypos2 )
* if rectangular : # < < < < < < < < < < < < < <
* cv2 . line ( orig , ( int ( xpos ) , int ( ypos ) ) ,
* ( int ( xpos2 ) , int ( ypos2 ) ) , ( 255 , 127 , 0 ) , 2 )
*/
__pyx_t_2 = ( __pyx_v_rectangular ! = 0 ) ;
if ( __pyx_t_2 ) {
/* "detect.py":319
* swap ( ypos , ypos2 )
* if rectangular :
* cv2 . line ( orig , ( int ( xpos ) , int ( ypos ) ) , # < < < < < < < < < < < < < <
* ( int ( xpos2 ) , int ( ypos2 ) ) , ( 255 , 127 , 0 ) , 2 )
* # print ( str ( iteml ) )
*/
__Pyx_GetModuleGlobalName ( __pyx_t_10 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 319 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr ( __pyx_t_10 , __pyx_n_s_line ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 319 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = __Pyx_PyNumber_Int ( __pyx_v_xpos ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 319 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_11 = __Pyx_PyNumber_Int ( __pyx_v_ypos ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 319 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_1 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 319 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_GIVEREF ( __pyx_t_10 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_t_10 ) ;
__Pyx_GIVEREF ( __pyx_t_11 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 , __pyx_t_11 ) ;
__pyx_t_10 = 0 ;
__pyx_t_11 = 0 ;
/* "detect.py":320
* if rectangular :
* cv2 . line ( orig , ( int ( xpos ) , int ( ypos ) ) ,
* ( int ( xpos2 ) , int ( ypos2 ) ) , ( 255 , 127 , 0 ) , 2 ) # < < < < < < < < < < < < < <
* # print ( str ( iteml ) )
* # draw the object sizes on the image
*/
__pyx_t_11 = __Pyx_PyNumber_Int ( __pyx_v_xpos2 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 320 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_10 = __Pyx_PyNumber_Int ( __pyx_v_ypos2 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 320 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__pyx_t_6 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 320 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_GIVEREF ( __pyx_t_11 ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 0 , __pyx_t_11 ) ;
__Pyx_GIVEREF ( __pyx_t_10 ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 1 , __pyx_t_10 ) ;
__pyx_t_11 = 0 ;
__pyx_t_10 = 0 ;
__pyx_t_10 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_4 ) ) ) {
__pyx_t_10 = PyMethod_GET_SELF ( __pyx_t_4 ) ;
if ( likely ( __pyx_t_10 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_4 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_4 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_4 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_10 , __pyx_v_orig , __pyx_t_1 , __pyx_t_6 , __pyx_tuple__7 , __pyx_int_2 } ;
__pyx_t_3 = __Pyx_PyFunction_FastCall ( __pyx_t_4 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 319 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_4 ) ) {
PyObject * __pyx_temp [ 6 ] = { __pyx_t_10 , __pyx_v_orig , __pyx_t_1 , __pyx_t_6 , __pyx_tuple__7 , __pyx_int_2 } ;
__pyx_t_3 = __Pyx_PyCFunction_FastCall ( __pyx_t_4 , __pyx_temp + 1 - __pyx_t_9 , 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 319 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
} else
# endif
{
__pyx_t_11 = PyTuple_New ( 5 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 319 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __pyx_t_10 ) {
__Pyx_GIVEREF ( __pyx_t_10 ) ; PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_t_10 ) ; __pyx_t_10 = NULL ;
}
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 + __pyx_t_9 , __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 1 + __pyx_t_9 , __pyx_t_1 ) ;
__Pyx_GIVEREF ( __pyx_t_6 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 2 + __pyx_t_9 , __pyx_t_6 ) ;
__Pyx_INCREF ( __pyx_tuple__7 ) ;
__Pyx_GIVEREF ( __pyx_tuple__7 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 3 + __pyx_t_9 , __pyx_tuple__7 ) ;
__Pyx_INCREF ( __pyx_int_2 ) ;
__Pyx_GIVEREF ( __pyx_int_2 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 4 + __pyx_t_9 , __pyx_int_2 ) ;
__pyx_t_1 = 0 ;
__pyx_t_6 = 0 ;
__pyx_t_3 = __Pyx_PyObject_Call ( __pyx_t_4 , __pyx_t_11 , NULL ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 319 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
}
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
/* "detect.py":318
* swap ( xpos , xpos2 )
* swap ( ypos , ypos2 )
* if rectangular : # < < < < < < < < < < < < < <
* cv2 . line ( orig , ( int ( xpos ) , int ( ypos ) ) ,
* ( int ( xpos2 ) , int ( ypos2 ) ) , ( 255 , 127 , 0 ) , 2 )
*/
}
/* "detect.py":326
* # ( int ( trbrX + 20 ) , int ( trbrY ) ) , cv2 . FONT_HERSHEY_SIMPLEX ,
* # 0.65 , ( 255 , 255 , 255 ) , 2 )
* if circular : # < < < < < < < < < < < < < <
* cv2 . putText ( orig , str ( objtype ) ,
* ( int ( x - 25 ) , int ( y + radius + 20 )
*/
__pyx_t_2 = ( __pyx_v_circular ! = 0 ) ;
if ( __pyx_t_2 ) {
/* "detect.py":327
* # 0.65 , ( 255 , 255 , 255 ) , 2 )
* if circular :
* cv2 . putText ( orig , str ( objtype ) , # < < < < < < < < < < < < < <
* ( int ( x - 25 ) , int ( y + radius + 20 )
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 327 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_putText ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 327 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__pyx_t_4 = __Pyx_PyObject_CallOneArg ( ( ( PyObject * ) ( & PyString_Type ) ) , __pyx_v_objtype ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 327 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
/* "detect.py":328
* if circular :
* cv2 . putText ( orig , str ( objtype ) ,
* ( int ( x - 25 ) , int ( y + radius + 20 ) # < < < < < < < < < < < < < <
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
* 0.6 , ( 50 , 50 , 220 ) , 2 )
*/
__pyx_t_6 = __Pyx_PyInt_SubtractObjC ( __pyx_v_x , __pyx_int_25 , 25 , 0 , 0 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 328 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_1 = __Pyx_PyNumber_Int ( __pyx_t_6 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 328 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__pyx_t_6 = PyNumber_Add ( __pyx_v_y , __pyx_v_radius ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 328 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_10 = __Pyx_PyInt_AddObjC ( __pyx_t_6 , __pyx_int_20 , 20 , 0 , 0 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 328 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__pyx_t_6 = __Pyx_PyNumber_Int ( __pyx_t_10 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 328 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__pyx_t_10 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 328 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 0 , __pyx_t_1 ) ;
__Pyx_GIVEREF ( __pyx_t_6 ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 1 , __pyx_t_6 ) ;
__pyx_t_1 = 0 ;
__pyx_t_6 = 0 ;
/* "detect.py":329
* cv2 . putText ( orig , str ( objtype ) ,
* ( int ( x - 25 ) , int ( y + radius + 20 )
* ) , cv2 . FONT_HERSHEY_SIMPLEX , # < < < < < < < < < < < < < <
* 0.6 , ( 50 , 50 , 220 ) , 2 )
* else :
*/
__Pyx_GetModuleGlobalName ( __pyx_t_6 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 329 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr ( __pyx_t_6 , __pyx_n_s_FONT_HERSHEY_SIMPLEX ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 329 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":330
* ( int ( x - 25 ) , int ( y + radius + 20 )
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
* 0.6 , ( 50 , 50 , 220 ) , 2 ) # < < < < < < < < < < < < < <
* else :
* cv2 . putText ( orig , str ( objtype ) ,
*/
__pyx_t_6 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_6 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_6 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_6 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_11 ) ) {
PyObject * __pyx_temp [ 8 ] = { __pyx_t_6 , __pyx_v_orig , __pyx_t_4 , __pyx_t_10 , __pyx_t_1 , __pyx_float_0_6 , __pyx_tuple__8 , __pyx_int_2 } ;
__pyx_t_3 = __Pyx_PyFunction_FastCall ( __pyx_t_11 , __pyx_temp + 1 - __pyx_t_9 , 7 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 327 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_11 ) ) {
PyObject * __pyx_temp [ 8 ] = { __pyx_t_6 , __pyx_v_orig , __pyx_t_4 , __pyx_t_10 , __pyx_t_1 , __pyx_float_0_6 , __pyx_tuple__8 , __pyx_int_2 } ;
__pyx_t_3 = __Pyx_PyCFunction_FastCall ( __pyx_t_11 , __pyx_temp + 1 - __pyx_t_9 , 7 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 327 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
} else
# endif
{
__pyx_t_15 = PyTuple_New ( 7 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 327 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_15 ) ;
if ( __pyx_t_6 ) {
__Pyx_GIVEREF ( __pyx_t_6 ) ; PyTuple_SET_ITEM ( __pyx_t_15 , 0 , __pyx_t_6 ) ; __pyx_t_6 = NULL ;
}
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_15 , 0 + __pyx_t_9 , __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_t_4 ) ;
PyTuple_SET_ITEM ( __pyx_t_15 , 1 + __pyx_t_9 , __pyx_t_4 ) ;
__Pyx_GIVEREF ( __pyx_t_10 ) ;
PyTuple_SET_ITEM ( __pyx_t_15 , 2 + __pyx_t_9 , __pyx_t_10 ) ;
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_15 , 3 + __pyx_t_9 , __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_float_0_6 ) ;
__Pyx_GIVEREF ( __pyx_float_0_6 ) ;
PyTuple_SET_ITEM ( __pyx_t_15 , 4 + __pyx_t_9 , __pyx_float_0_6 ) ;
__Pyx_INCREF ( __pyx_tuple__8 ) ;
__Pyx_GIVEREF ( __pyx_tuple__8 ) ;
PyTuple_SET_ITEM ( __pyx_t_15 , 5 + __pyx_t_9 , __pyx_tuple__8 ) ;
__Pyx_INCREF ( __pyx_int_2 ) ;
__Pyx_GIVEREF ( __pyx_int_2 ) ;
PyTuple_SET_ITEM ( __pyx_t_15 , 6 + __pyx_t_9 , __pyx_int_2 ) ;
__pyx_t_4 = 0 ;
__pyx_t_10 = 0 ;
__pyx_t_1 = 0 ;
__pyx_t_3 = __Pyx_PyObject_Call ( __pyx_t_11 , __pyx_t_15 , NULL ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 327 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
}
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
/* "detect.py":326
* # ( int ( trbrX + 20 ) , int ( trbrY ) ) , cv2 . FONT_HERSHEY_SIMPLEX ,
* # 0.65 , ( 255 , 255 , 255 ) , 2 )
* if circular : # < < < < < < < < < < < < < <
* cv2 . putText ( orig , str ( objtype ) ,
* ( int ( x - 25 ) , int ( y + radius + 20 )
*/
goto __pyx_L89 ;
}
/* "detect.py":332
* 0.6 , ( 50 , 50 , 220 ) , 2 )
* else :
* cv2 . putText ( orig , str ( objtype ) , # < < < < < < < < < < < < < <
* ( int ( xpos2 + 10 ) , int ( ypos2 + 20 )
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
*/
/*else*/ {
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 332 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_15 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_putText ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 332 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_15 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = __Pyx_PyObject_CallOneArg ( ( ( PyObject * ) ( & PyString_Type ) ) , __pyx_v_objtype ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 332 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
/* "detect.py":333
* else :
* cv2 . putText ( orig , str ( objtype ) ,
* ( int ( xpos2 + 10 ) , int ( ypos2 + 20 ) # < < < < < < < < < < < < < <
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
* 0.6 , ( 50 , 50 , 220 ) , 2 )
*/
__pyx_t_1 = __Pyx_PyInt_AddObjC ( __pyx_v_xpos2 , __pyx_int_10 , 10 , 0 , 0 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 333 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_10 = __Pyx_PyNumber_Int ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 333 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = __Pyx_PyInt_AddObjC ( __pyx_v_ypos2 , __pyx_int_20 , 20 , 0 , 0 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 333 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_4 = __Pyx_PyNumber_Int ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 333 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 333 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_GIVEREF ( __pyx_t_10 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_t_10 ) ;
__Pyx_GIVEREF ( __pyx_t_4 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 , __pyx_t_4 ) ;
__pyx_t_10 = 0 ;
__pyx_t_4 = 0 ;
/* "detect.py":334
* cv2 . putText ( orig , str ( objtype ) ,
* ( int ( xpos2 + 10 ) , int ( ypos2 + 20 )
* ) , cv2 . FONT_HERSHEY_SIMPLEX , # < < < < < < < < < < < < < <
* 0.6 , ( 50 , 50 , 220 ) , 2 )
* output = " "
*/
__Pyx_GetModuleGlobalName ( __pyx_t_4 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_4 ) ) __PYX_ERR ( 0 , 334 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_4 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_4 , __pyx_n_s_FONT_HERSHEY_SIMPLEX ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 334 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
/* "detect.py":335
* ( int ( xpos2 + 10 ) , int ( ypos2 + 20 )
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
* 0.6 , ( 50 , 50 , 220 ) , 2 ) # < < < < < < < < < < < < < <
* output = " "
* objname = objtype ;
*/
__pyx_t_4 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_15 ) ) ) {
__pyx_t_4 = PyMethod_GET_SELF ( __pyx_t_15 ) ;
if ( likely ( __pyx_t_4 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_15 ) ;
__Pyx_INCREF ( __pyx_t_4 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_15 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_15 ) ) {
PyObject * __pyx_temp [ 8 ] = { __pyx_t_4 , __pyx_v_orig , __pyx_t_11 , __pyx_t_1 , __pyx_t_10 , __pyx_float_0_6 , __pyx_tuple__8 , __pyx_int_2 } ;
__pyx_t_3 = __Pyx_PyFunction_FastCall ( __pyx_t_15 , __pyx_temp + 1 - __pyx_t_9 , 7 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 332 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_15 ) ) {
PyObject * __pyx_temp [ 8 ] = { __pyx_t_4 , __pyx_v_orig , __pyx_t_11 , __pyx_t_1 , __pyx_t_10 , __pyx_float_0_6 , __pyx_tuple__8 , __pyx_int_2 } ;
__pyx_t_3 = __Pyx_PyCFunction_FastCall ( __pyx_t_15 , __pyx_temp + 1 - __pyx_t_9 , 7 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 332 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_4 ) ; __pyx_t_4 = 0 ;
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else
# endif
{
__pyx_t_6 = PyTuple_New ( 7 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 332 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
if ( __pyx_t_4 ) {
__Pyx_GIVEREF ( __pyx_t_4 ) ; PyTuple_SET_ITEM ( __pyx_t_6 , 0 , __pyx_t_4 ) ; __pyx_t_4 = NULL ;
}
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 0 + __pyx_t_9 , __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_t_11 ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 1 + __pyx_t_9 , __pyx_t_11 ) ;
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 2 + __pyx_t_9 , __pyx_t_1 ) ;
__Pyx_GIVEREF ( __pyx_t_10 ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 3 + __pyx_t_9 , __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_float_0_6 ) ;
__Pyx_GIVEREF ( __pyx_float_0_6 ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 4 + __pyx_t_9 , __pyx_float_0_6 ) ;
__Pyx_INCREF ( __pyx_tuple__8 ) ;
__Pyx_GIVEREF ( __pyx_tuple__8 ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 5 + __pyx_t_9 , __pyx_tuple__8 ) ;
__Pyx_INCREF ( __pyx_int_2 ) ;
__Pyx_GIVEREF ( __pyx_int_2 ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 6 + __pyx_t_9 , __pyx_int_2 ) ;
__pyx_t_11 = 0 ;
__pyx_t_1 = 0 ;
__pyx_t_10 = 0 ;
__pyx_t_3 = __Pyx_PyObject_Call ( __pyx_t_15 , __pyx_t_6 , NULL ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 332 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
}
__Pyx_DECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
}
__pyx_L89 : ;
/* "detect.py":336
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
* 0.6 , ( 50 , 50 , 220 ) , 2 )
* output = " " # < < < < < < < < < < < < < <
* objname = objtype ;
* if objtype = = " Unknown " :
*/
__Pyx_INCREF ( __pyx_kp_s__3 ) ;
__Pyx_XDECREF_SET ( __pyx_v_output , __pyx_kp_s__3 ) ;
/* "detect.py":337
* 0.6 , ( 50 , 50 , 220 ) , 2 )
* output = " "
* objname = objtype ; # < < < < < < < < < < < < < <
* if objtype = = " Unknown " :
* output = " {:.2f}in " . format ( itemw ) + " x {:.2f}in " . format ( itemh )
*/
__Pyx_INCREF ( __pyx_v_objtype ) ;
__Pyx_DECREF_SET ( __pyx_v_objname , __pyx_v_objtype ) ;
/* "detect.py":338
* output = " "
* objname = objtype ;
* if objtype = = " Unknown " : # < < < < < < < < < < < < < <
* output = " {:.2f}in " . format ( itemw ) + " x {:.2f}in " . format ( itemh )
* if objtype = = " Screw " or objtype = = " Standoff " :
*/
__pyx_t_2 = ( __Pyx_PyString_Equals ( __pyx_v_objtype , __pyx_n_s_Unknown , Py_EQ ) ) ; if ( unlikely ( __pyx_t_2 < 0 ) ) __PYX_ERR ( 0 , 338 , __pyx_L1_error )
if ( __pyx_t_2 ) {
/* "detect.py":339
* objname = objtype ;
* if objtype = = " Unknown " :
* output = " {:.2f}in " . format ( itemw ) + " x {:.2f}in " . format ( itemh ) # < < < < < < < < < < < < < <
* if objtype = = " Screw " or objtype = = " Standoff " :
* output = str ( iteml ) + " in "
*/
__pyx_t_15 = __Pyx_PyObject_GetAttrStr ( __pyx_kp_s_2f_in , __pyx_n_s_format ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 339 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_15 ) ;
__pyx_t_6 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_15 ) ) ) {
__pyx_t_6 = PyMethod_GET_SELF ( __pyx_t_15 ) ;
if ( likely ( __pyx_t_6 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_15 ) ;
__Pyx_INCREF ( __pyx_t_6 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_15 , function ) ;
}
}
__pyx_t_3 = ( __pyx_t_6 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_15 , __pyx_t_6 , __pyx_v_itemw ) : __Pyx_PyObject_CallOneArg ( __pyx_t_15 , __pyx_v_itemw ) ;
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 339 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr ( __pyx_kp_s_x_2f_in , __pyx_n_s_format ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 339 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_10 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_6 ) ) ) {
__pyx_t_10 = PyMethod_GET_SELF ( __pyx_t_6 ) ;
if ( likely ( __pyx_t_10 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_6 ) ;
__Pyx_INCREF ( __pyx_t_10 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_6 , function ) ;
}
}
__pyx_t_15 = ( __pyx_t_10 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_6 , __pyx_t_10 , __pyx_v_itemh ) : __Pyx_PyObject_CallOneArg ( __pyx_t_6 , __pyx_v_itemh ) ;
__Pyx_XDECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 339 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_15 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__pyx_t_6 = PyNumber_Add ( __pyx_t_3 , __pyx_t_15 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 339 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_output , __pyx_t_6 ) ;
__pyx_t_6 = 0 ;
/* "detect.py":338
* output = " "
* objname = objtype ;
* if objtype = = " Unknown " : # < < < < < < < < < < < < < <
* output = " {:.2f}in " . format ( itemw ) + " x {:.2f}in " . format ( itemh )
* if objtype = = " Screw " or objtype = = " Standoff " :
*/
}
/* "detect.py":340
* if objtype = = " Unknown " :
* output = " {:.2f}in " . format ( itemw ) + " x {:.2f}in " . format ( itemh )
* if objtype = = " Screw " or objtype = = " Standoff " : # < < < < < < < < < < < < < <
* output = str ( iteml ) + " in "
* objname + = str ( iteml )
*/
__pyx_t_8 = ( __Pyx_PyString_Equals ( __pyx_v_objtype , __pyx_n_s_Screw , Py_EQ ) ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 340 , __pyx_L1_error )
if ( ! __pyx_t_8 ) {
} else {
__pyx_t_2 = __pyx_t_8 ;
goto __pyx_L92_bool_binop_done ;
}
__pyx_t_8 = ( __Pyx_PyString_Equals ( __pyx_v_objtype , __pyx_n_s_Standoff , Py_EQ ) ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 340 , __pyx_L1_error )
__pyx_t_2 = __pyx_t_8 ;
__pyx_L92_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":341
* output = " {:.2f}in " . format ( itemw ) + " x {:.2f}in " . format ( itemh )
* if objtype = = " Screw " or objtype = = " Standoff " :
* output = str ( iteml ) + " in " # < < < < < < < < < < < < < <
* objname + = str ( iteml )
* if objtype = = " Axle " :
*/
if ( unlikely ( ! __pyx_v_iteml ) ) { __Pyx_RaiseUnboundLocalError ( " iteml " ) ; __PYX_ERR ( 0 , 341 , __pyx_L1_error ) }
__pyx_t_6 = __Pyx_PyObject_CallOneArg ( ( ( PyObject * ) ( & PyString_Type ) ) , __pyx_v_iteml ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 341 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_15 = PyNumber_Add ( __pyx_t_6 , __pyx_n_s_in ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 341 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_15 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_output , __pyx_t_15 ) ;
__pyx_t_15 = 0 ;
/* "detect.py":342
* if objtype = = " Screw " or objtype = = " Standoff " :
* output = str ( iteml ) + " in "
* objname + = str ( iteml ) # < < < < < < < < < < < < < <
* if objtype = = " Axle " :
* output = " {:.2f}in " . format ( iteml )
*/
if ( unlikely ( ! __pyx_v_iteml ) ) { __Pyx_RaiseUnboundLocalError ( " iteml " ) ; __PYX_ERR ( 0 , 342 , __pyx_L1_error ) }
__pyx_t_15 = __Pyx_PyObject_CallOneArg ( ( ( PyObject * ) ( & PyString_Type ) ) , __pyx_v_iteml ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 342 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_15 ) ;
__pyx_t_6 = PyNumber_InPlaceAdd ( __pyx_v_objname , __pyx_t_15 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 342 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_objname , __pyx_t_6 ) ;
__pyx_t_6 = 0 ;
/* "detect.py":340
* if objtype = = " Unknown " :
* output = " {:.2f}in " . format ( itemw ) + " x {:.2f}in " . format ( itemh )
* if objtype = = " Screw " or objtype = = " Standoff " : # < < < < < < < < < < < < < <
* output = str ( iteml ) + " in "
* objname + = str ( iteml )
*/
}
/* "detect.py":343
* output = str ( iteml ) + " in "
* objname + = str ( iteml )
* if objtype = = " Axle " : # < < < < < < < < < < < < < <
* output = " {:.2f}in " . format ( iteml )
* objname + = str ( itemwr )
*/
__pyx_t_2 = ( __Pyx_PyString_Equals ( __pyx_v_objtype , __pyx_n_s_Axle , Py_EQ ) ) ; if ( unlikely ( __pyx_t_2 < 0 ) ) __PYX_ERR ( 0 , 343 , __pyx_L1_error )
if ( __pyx_t_2 ) {
/* "detect.py":344
* objname + = str ( iteml )
* if objtype = = " Axle " :
* output = " {:.2f}in " . format ( iteml ) # < < < < < < < < < < < < < <
* objname + = str ( itemwr )
* # print ( objname )
*/
__pyx_t_15 = __Pyx_PyObject_GetAttrStr ( __pyx_kp_s_2f_in , __pyx_n_s_format ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 344 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_15 ) ;
if ( unlikely ( ! __pyx_v_iteml ) ) { __Pyx_RaiseUnboundLocalError ( " iteml " ) ; __PYX_ERR ( 0 , 344 , __pyx_L1_error ) }
__pyx_t_3 = NULL ;
if ( CYTHON_UNPACK_METHODS & & likely ( PyMethod_Check ( __pyx_t_15 ) ) ) {
__pyx_t_3 = PyMethod_GET_SELF ( __pyx_t_15 ) ;
if ( likely ( __pyx_t_3 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_15 ) ;
__Pyx_INCREF ( __pyx_t_3 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_15 , function ) ;
}
}
__pyx_t_6 = ( __pyx_t_3 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_15 , __pyx_t_3 , __pyx_v_iteml ) : __Pyx_PyObject_CallOneArg ( __pyx_t_15 , __pyx_v_iteml ) ;
__Pyx_XDECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 344 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_output , __pyx_t_6 ) ;
__pyx_t_6 = 0 ;
/* "detect.py":345
* if objtype = = " Axle " :
* output = " {:.2f}in " . format ( iteml )
* objname + = str ( itemwr ) # < < < < < < < < < < < < < <
* # print ( objname )
* list . append ( objname )
*/
__pyx_t_6 = __Pyx_PyObject_CallOneArg ( ( ( PyObject * ) ( & PyString_Type ) ) , __pyx_v_itemwr ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 345 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_15 = PyNumber_InPlaceAdd ( __pyx_v_objname , __pyx_t_6 ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 345 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_15 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_DECREF_SET ( __pyx_v_objname , __pyx_t_15 ) ;
__pyx_t_15 = 0 ;
/* "detect.py":343
* output = str ( iteml ) + " in "
* objname + = str ( iteml )
* if objtype = = " Axle " : # < < < < < < < < < < < < < <
* output = " {:.2f}in " . format ( iteml )
* objname + = str ( itemwr )
*/
}
/* "detect.py":347
* objname + = str ( itemwr )
* # print ( objname )
* list . append ( objname ) # < < < < < < < < < < < < < <
* if circular :
* cv2 . putText ( orig , output , # print data
*/
__pyx_t_16 = __Pyx_PyList_Append ( __pyx_v_list , __pyx_v_objname ) ; if ( unlikely ( __pyx_t_16 = = ( ( int ) - 1 ) ) ) __PYX_ERR ( 0 , 347 , __pyx_L1_error )
/* "detect.py":348
* # print ( objname )
* list . append ( objname )
* if circular : # < < < < < < < < < < < < < <
* cv2 . putText ( orig , output , # print data
* ( int ( x - 25 ) , int ( y + radius + 40 )
*/
__pyx_t_2 = ( __pyx_v_circular ! = 0 ) ;
if ( __pyx_t_2 ) {
/* "detect.py":349
* list . append ( objname )
* if circular :
* cv2 . putText ( orig , output , # print data # < < < < < < < < < < < < < <
* ( int ( x - 25 ) , int ( y + radius + 40 )
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
*/
__Pyx_GetModuleGlobalName ( __pyx_t_6 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 349 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr ( __pyx_t_6 , __pyx_n_s_putText ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 349 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":350
* if circular :
* cv2 . putText ( orig , output , # print data
* ( int ( x - 25 ) , int ( y + radius + 40 ) # < < < < < < < < < < < < < <
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
* 0.5 , ( 50 , 50 , 220 ) , 1 )
*/
__pyx_t_6 = __Pyx_PyInt_SubtractObjC ( __pyx_v_x , __pyx_int_25 , 25 , 0 , 0 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 350 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_10 = __Pyx_PyNumber_Int ( __pyx_t_6 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 350 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__pyx_t_6 = PyNumber_Add ( __pyx_v_y , __pyx_v_radius ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 350 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_1 = __Pyx_PyInt_AddObjC ( __pyx_t_6 , __pyx_int_40 , 40 , 0 , 0 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 350 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__pyx_t_6 = __Pyx_PyNumber_Int ( __pyx_t_1 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 350 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 350 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_GIVEREF ( __pyx_t_10 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 0 , __pyx_t_10 ) ;
__Pyx_GIVEREF ( __pyx_t_6 ) ;
PyTuple_SET_ITEM ( __pyx_t_1 , 1 , __pyx_t_6 ) ;
__pyx_t_10 = 0 ;
__pyx_t_6 = 0 ;
/* "detect.py":351
* cv2 . putText ( orig , output , # print data
* ( int ( x - 25 ) , int ( y + radius + 40 )
* ) , cv2 . FONT_HERSHEY_SIMPLEX , # < < < < < < < < < < < < < <
* 0.5 , ( 50 , 50 , 220 ) , 1 )
* else :
*/
__Pyx_GetModuleGlobalName ( __pyx_t_6 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 351 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_6 , __pyx_n_s_FONT_HERSHEY_SIMPLEX ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 351 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
/* "detect.py":352
* ( int ( x - 25 ) , int ( y + radius + 40 )
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
* 0.5 , ( 50 , 50 , 220 ) , 1 ) # < < < < < < < < < < < < < <
* else :
* cv2 . putText ( orig , output , # print data
*/
__pyx_t_6 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_3 ) ) ) {
__pyx_t_6 = PyMethod_GET_SELF ( __pyx_t_3 ) ;
if ( likely ( __pyx_t_6 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_3 ) ;
__Pyx_INCREF ( __pyx_t_6 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_3 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 8 ] = { __pyx_t_6 , __pyx_v_orig , __pyx_v_output , __pyx_t_1 , __pyx_t_10 , __pyx_float_0_5 , __pyx_tuple__8 , __pyx_int_1 } ;
__pyx_t_15 = __Pyx_PyFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 7 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 349 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_15 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_3 ) ) {
PyObject * __pyx_temp [ 8 ] = { __pyx_t_6 , __pyx_v_orig , __pyx_v_output , __pyx_t_1 , __pyx_t_10 , __pyx_float_0_5 , __pyx_tuple__8 , __pyx_int_1 } ;
__pyx_t_15 = __Pyx_PyCFunction_FastCall ( __pyx_t_3 , __pyx_temp + 1 - __pyx_t_9 , 7 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 349 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_GOTREF ( __pyx_t_15 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else
# endif
{
__pyx_t_11 = PyTuple_New ( 7 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 349 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
if ( __pyx_t_6 ) {
__Pyx_GIVEREF ( __pyx_t_6 ) ; PyTuple_SET_ITEM ( __pyx_t_11 , 0 , __pyx_t_6 ) ; __pyx_t_6 = NULL ;
}
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 0 + __pyx_t_9 , __pyx_v_orig ) ;
__Pyx_INCREF ( __pyx_v_output ) ;
__Pyx_GIVEREF ( __pyx_v_output ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 1 + __pyx_t_9 , __pyx_v_output ) ;
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 2 + __pyx_t_9 , __pyx_t_1 ) ;
__Pyx_GIVEREF ( __pyx_t_10 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 3 + __pyx_t_9 , __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_float_0_5 ) ;
__Pyx_GIVEREF ( __pyx_float_0_5 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 4 + __pyx_t_9 , __pyx_float_0_5 ) ;
__Pyx_INCREF ( __pyx_tuple__8 ) ;
__Pyx_GIVEREF ( __pyx_tuple__8 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 5 + __pyx_t_9 , __pyx_tuple__8 ) ;
__Pyx_INCREF ( __pyx_int_1 ) ;
__Pyx_GIVEREF ( __pyx_int_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_11 , 6 + __pyx_t_9 , __pyx_int_1 ) ;
__pyx_t_1 = 0 ;
__pyx_t_10 = 0 ;
__pyx_t_15 = __Pyx_PyObject_Call ( __pyx_t_3 , __pyx_t_11 , NULL ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 349 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_15 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
}
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
/* "detect.py":348
* # print ( objname )
* list . append ( objname )
* if circular : # < < < < < < < < < < < < < <
* cv2 . putText ( orig , output , # print data
* ( int ( x - 25 ) , int ( y + radius + 40 )
*/
goto __pyx_L95 ;
}
/* "detect.py":354
* 0.5 , ( 50 , 50 , 220 ) , 1 )
* else :
* cv2 . putText ( orig , output , # print data # < < < < < < < < < < < < < <
* ( int ( xpos2 + 10 ) , int ( ypos2 + 40 )
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
*/
/*else*/ {
__Pyx_GetModuleGlobalName ( __pyx_t_3 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 354 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_11 = __Pyx_PyObject_GetAttrStr ( __pyx_t_3 , __pyx_n_s_putText ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 354 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
/* "detect.py":355
* else :
* cv2 . putText ( orig , output , # print data
* ( int ( xpos2 + 10 ) , int ( ypos2 + 40 ) # < < < < < < < < < < < < < <
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
* 0.5 , ( 50 , 50 , 220 ) , 1 )
*/
__pyx_t_3 = __Pyx_PyInt_AddObjC ( __pyx_v_xpos2 , __pyx_int_10 , 10 , 0 , 0 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 355 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_10 = __Pyx_PyNumber_Int ( __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 355 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = __Pyx_PyInt_AddObjC ( __pyx_v_ypos2 , __pyx_int_40 , 40 , 0 , 0 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 355 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__pyx_t_1 = __Pyx_PyNumber_Int ( __pyx_t_3 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 355 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__pyx_t_3 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_3 ) ) __PYX_ERR ( 0 , 355 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_3 ) ;
__Pyx_GIVEREF ( __pyx_t_10 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 0 , __pyx_t_10 ) ;
__Pyx_GIVEREF ( __pyx_t_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_3 , 1 , __pyx_t_1 ) ;
__pyx_t_10 = 0 ;
__pyx_t_1 = 0 ;
/* "detect.py":356
* cv2 . putText ( orig , output , # print data
* ( int ( xpos2 + 10 ) , int ( ypos2 + 40 )
* ) , cv2 . FONT_HERSHEY_SIMPLEX , # < < < < < < < < < < < < < <
* 0.5 , ( 50 , 50 , 220 ) , 1 )
* # show the output image
*/
__Pyx_GetModuleGlobalName ( __pyx_t_1 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 356 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__pyx_t_10 = __Pyx_PyObject_GetAttrStr ( __pyx_t_1 , __pyx_n_s_FONT_HERSHEY_SIMPLEX ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 356 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
/* "detect.py":357
* ( int ( xpos2 + 10 ) , int ( ypos2 + 40 )
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
* 0.5 , ( 50 , 50 , 220 ) , 1 ) # < < < < < < < < < < < < < <
* # show the output image
* if show and not quick :
*/
__pyx_t_1 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_11 ) ) ) {
__pyx_t_1 = PyMethod_GET_SELF ( __pyx_t_11 ) ;
if ( likely ( __pyx_t_1 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_11 ) ;
__Pyx_INCREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_11 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_11 ) ) {
PyObject * __pyx_temp [ 8 ] = { __pyx_t_1 , __pyx_v_orig , __pyx_v_output , __pyx_t_3 , __pyx_t_10 , __pyx_float_0_5 , __pyx_tuple__8 , __pyx_int_1 } ;
__pyx_t_15 = __Pyx_PyFunction_FastCall ( __pyx_t_11 , __pyx_temp + 1 - __pyx_t_9 , 7 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 354 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_15 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_11 ) ) {
PyObject * __pyx_temp [ 8 ] = { __pyx_t_1 , __pyx_v_orig , __pyx_v_output , __pyx_t_3 , __pyx_t_10 , __pyx_float_0_5 , __pyx_tuple__8 , __pyx_int_1 } ;
__pyx_t_15 = __Pyx_PyCFunction_FastCall ( __pyx_t_11 , __pyx_temp + 1 - __pyx_t_9 , 7 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 354 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_GOTREF ( __pyx_t_15 ) ;
__Pyx_DECREF ( __pyx_t_3 ) ; __pyx_t_3 = 0 ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
} else
# endif
{
__pyx_t_6 = PyTuple_New ( 7 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 354 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
if ( __pyx_t_1 ) {
__Pyx_GIVEREF ( __pyx_t_1 ) ; PyTuple_SET_ITEM ( __pyx_t_6 , 0 , __pyx_t_1 ) ; __pyx_t_1 = NULL ;
}
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 0 + __pyx_t_9 , __pyx_v_orig ) ;
__Pyx_INCREF ( __pyx_v_output ) ;
__Pyx_GIVEREF ( __pyx_v_output ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 1 + __pyx_t_9 , __pyx_v_output ) ;
__Pyx_GIVEREF ( __pyx_t_3 ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 2 + __pyx_t_9 , __pyx_t_3 ) ;
__Pyx_GIVEREF ( __pyx_t_10 ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 3 + __pyx_t_9 , __pyx_t_10 ) ;
__Pyx_INCREF ( __pyx_float_0_5 ) ;
__Pyx_GIVEREF ( __pyx_float_0_5 ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 4 + __pyx_t_9 , __pyx_float_0_5 ) ;
__Pyx_INCREF ( __pyx_tuple__8 ) ;
__Pyx_GIVEREF ( __pyx_tuple__8 ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 5 + __pyx_t_9 , __pyx_tuple__8 ) ;
__Pyx_INCREF ( __pyx_int_1 ) ;
__Pyx_GIVEREF ( __pyx_int_1 ) ;
PyTuple_SET_ITEM ( __pyx_t_6 , 6 + __pyx_t_9 , __pyx_int_1 ) ;
__pyx_t_3 = 0 ;
__pyx_t_10 = 0 ;
__pyx_t_15 = __Pyx_PyObject_Call ( __pyx_t_11 , __pyx_t_6 , NULL ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 354 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_15 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
}
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_DECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
}
__pyx_L95 : ;
/* "detect.py":359
* 0.5 , ( 50 , 50 , 220 ) , 1 )
* # show the output image
* if show and not quick : # < < < < < < < < < < < < < <
* cv2 . imshow ( " Item Sorter " , orig )
* # cv2 . waitKey ( 1 )
*/
__pyx_t_8 = __Pyx_PyObject_IsTrue ( __pyx_v_show ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 359 , __pyx_L1_error )
if ( __pyx_t_8 ) {
} else {
__pyx_t_2 = __pyx_t_8 ;
goto __pyx_L97_bool_binop_done ;
}
__pyx_t_8 = __Pyx_PyObject_IsTrue ( __pyx_v_quick ) ; if ( unlikely ( __pyx_t_8 < 0 ) ) __PYX_ERR ( 0 , 359 , __pyx_L1_error )
__pyx_t_7 = ( ( ! __pyx_t_8 ) ! = 0 ) ;
__pyx_t_2 = __pyx_t_7 ;
__pyx_L97_bool_binop_done : ;
if ( __pyx_t_2 ) {
/* "detect.py":360
* # show the output image
* if show and not quick :
* cv2 . imshow ( " Item Sorter " , orig ) # < < < < < < < < < < < < < <
* # cv2 . waitKey ( 1 )
* if quick :
*/
__Pyx_GetModuleGlobalName ( __pyx_t_11 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_11 ) ) __PYX_ERR ( 0 , 360 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_11 ) ;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr ( __pyx_t_11 , __pyx_n_s_imshow ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 360 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__pyx_t_11 = NULL ;
__pyx_t_9 = 0 ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_6 ) ) ) {
__pyx_t_11 = PyMethod_GET_SELF ( __pyx_t_6 ) ;
if ( likely ( __pyx_t_11 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_6 ) ;
__Pyx_INCREF ( __pyx_t_11 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_6 , function ) ;
__pyx_t_9 = 1 ;
}
}
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( __pyx_t_6 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_kp_s_Item_Sorter , __pyx_v_orig } ;
__pyx_t_15 = __Pyx_PyFunction_FastCall ( __pyx_t_6 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 360 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_15 ) ;
} else
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( __pyx_t_6 ) ) {
PyObject * __pyx_temp [ 3 ] = { __pyx_t_11 , __pyx_kp_s_Item_Sorter , __pyx_v_orig } ;
__pyx_t_15 = __Pyx_PyCFunction_FastCall ( __pyx_t_6 , __pyx_temp + 1 - __pyx_t_9 , 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 360 , __pyx_L1_error )
__Pyx_XDECREF ( __pyx_t_11 ) ; __pyx_t_11 = 0 ;
__Pyx_GOTREF ( __pyx_t_15 ) ;
} else
# endif
{
__pyx_t_10 = PyTuple_New ( 2 + __pyx_t_9 ) ; if ( unlikely ( ! __pyx_t_10 ) ) __PYX_ERR ( 0 , 360 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_10 ) ;
if ( __pyx_t_11 ) {
__Pyx_GIVEREF ( __pyx_t_11 ) ; PyTuple_SET_ITEM ( __pyx_t_10 , 0 , __pyx_t_11 ) ; __pyx_t_11 = NULL ;
}
__Pyx_INCREF ( __pyx_kp_s_Item_Sorter ) ;
__Pyx_GIVEREF ( __pyx_kp_s_Item_Sorter ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 0 + __pyx_t_9 , __pyx_kp_s_Item_Sorter ) ;
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_10 , 1 + __pyx_t_9 , __pyx_v_orig ) ;
__pyx_t_15 = __Pyx_PyObject_Call ( __pyx_t_6 , __pyx_t_10 , NULL ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 360 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_15 ) ;
__Pyx_DECREF ( __pyx_t_10 ) ; __pyx_t_10 = 0 ;
}
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_DECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
/* "detect.py":359
* 0.5 , ( 50 , 50 , 220 ) , 1 )
* # show the output image
* if show and not quick : # < < < < < < < < < < < < < <
* cv2 . imshow ( " Item Sorter " , orig )
* # cv2 . waitKey ( 1 )
*/
}
/* "detect.py":186
* objname = " "
* # loop over the contours individually
* for c in cnts : # < < < < < < < < < < < < < <
* # orig = image . copy ( )
* num + = 1
*/
__pyx_L38_continue : ;
}
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
/* "detect.py":362
* cv2 . imshow ( " Item Sorter " , orig )
* # cv2 . waitKey ( 1 )
* if quick : # < < < < < < < < < < < < < <
* return ( list , orig )
* else :
*/
__pyx_t_2 = __Pyx_PyObject_IsTrue ( __pyx_v_quick ) ; if ( unlikely ( __pyx_t_2 < 0 ) ) __PYX_ERR ( 0 , 362 , __pyx_L1_error )
if ( __pyx_t_2 ) {
/* "detect.py":363
* # cv2 . waitKey ( 1 )
* if quick :
* return ( list , orig ) # < < < < < < < < < < < < < <
* else :
* cv2 . waitKey ( 0 )
*/
__Pyx_XDECREF ( __pyx_r ) ;
__pyx_t_5 = PyTuple_New ( 2 ) ; if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 363 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_INCREF ( __pyx_v_list ) ;
__Pyx_GIVEREF ( __pyx_v_list ) ;
PyTuple_SET_ITEM ( __pyx_t_5 , 0 , __pyx_v_list ) ;
__Pyx_INCREF ( __pyx_v_orig ) ;
__Pyx_GIVEREF ( __pyx_v_orig ) ;
PyTuple_SET_ITEM ( __pyx_t_5 , 1 , __pyx_v_orig ) ;
__pyx_r = __pyx_t_5 ;
__pyx_t_5 = 0 ;
goto __pyx_L0 ;
/* "detect.py":362
* cv2 . imshow ( " Item Sorter " , orig )
* # cv2 . waitKey ( 1 )
* if quick : # < < < < < < < < < < < < < <
* return ( list , orig )
* else :
*/
}
/* "detect.py":365
* return ( list , orig )
* else :
* cv2 . waitKey ( 0 ) # < < < < < < < < < < < < < <
*/
/*else*/ {
__Pyx_GetModuleGlobalName ( __pyx_t_15 , __pyx_n_s_cv2 ) ; if ( unlikely ( ! __pyx_t_15 ) ) __PYX_ERR ( 0 , 365 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_15 ) ;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr ( __pyx_t_15 , __pyx_n_s_waitKey ) ; if ( unlikely ( ! __pyx_t_6 ) ) __PYX_ERR ( 0 , 365 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_6 ) ;
__Pyx_DECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
__pyx_t_15 = NULL ;
if ( CYTHON_UNPACK_METHODS & & unlikely ( PyMethod_Check ( __pyx_t_6 ) ) ) {
__pyx_t_15 = PyMethod_GET_SELF ( __pyx_t_6 ) ;
if ( likely ( __pyx_t_15 ) ) {
PyObject * function = PyMethod_GET_FUNCTION ( __pyx_t_6 ) ;
__Pyx_INCREF ( __pyx_t_15 ) ;
__Pyx_INCREF ( function ) ;
__Pyx_DECREF_SET ( __pyx_t_6 , function ) ;
}
}
__pyx_t_5 = ( __pyx_t_15 ) ? __Pyx_PyObject_Call2Args ( __pyx_t_6 , __pyx_t_15 , __pyx_int_0 ) : __Pyx_PyObject_CallOneArg ( __pyx_t_6 , __pyx_int_0 ) ;
__Pyx_XDECREF ( __pyx_t_15 ) ; __pyx_t_15 = 0 ;
if ( unlikely ( ! __pyx_t_5 ) ) __PYX_ERR ( 0 , 365 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_5 ) ;
__Pyx_DECREF ( __pyx_t_6 ) ; __pyx_t_6 = 0 ;
__Pyx_DECREF ( __pyx_t_5 ) ; __pyx_t_5 = 0 ;
}
/* "detect.py":78
* args = vars ( ap . parse_args ( ) )
* args2 = ap . parse_args ( ) " " "
* def detect ( calibration_width , img_file , show , quick ) : # < < < < < < < < < < < < < <
* list = [ ]
* # if type ( args [ " number " ] ) = = type ( selected ) :
*/
/* function exit code */
__pyx_r = Py_None ; __Pyx_INCREF ( Py_None ) ;
goto __pyx_L0 ;
__pyx_L1_error : ;
__Pyx_XDECREF ( __pyx_t_1 ) ;
__Pyx_XDECREF ( __pyx_t_3 ) ;
__Pyx_XDECREF ( __pyx_t_4 ) ;
__Pyx_XDECREF ( __pyx_t_5 ) ;
__Pyx_XDECREF ( __pyx_t_6 ) ;
__Pyx_XDECREF ( __pyx_t_10 ) ;
__Pyx_XDECREF ( __pyx_t_11 ) ;
__Pyx_XDECREF ( __pyx_t_15 ) ;
__Pyx_AddTraceback ( " detect.detect " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
__pyx_r = NULL ;
__pyx_L0 : ;
__Pyx_XDECREF ( __pyx_v_list ) ;
__Pyx_XDECREF ( __pyx_v_image ) ;
__Pyx_XDECREF ( __pyx_v_gray ) ;
__Pyx_XDECREF ( __pyx_v_edged ) ;
__Pyx_XDECREF ( __pyx_v_cnts ) ;
__Pyx_XDECREF ( __pyx_v_pixelsPerMetric ) ;
__Pyx_XDECREF ( __pyx_v_num ) ;
__Pyx_XDECREF ( __pyx_v_c ) ;
__Pyx_XDECREF ( __pyx_v_orig ) ;
__Pyx_XDECREF ( __pyx_v_box ) ;
__Pyx_XDECREF ( __pyx_v_tl ) ;
__Pyx_XDECREF ( __pyx_v_tr ) ;
__Pyx_XDECREF ( __pyx_v_br ) ;
__Pyx_XDECREF ( __pyx_v_bl ) ;
__Pyx_XDECREF ( __pyx_v_tltrX ) ;
__Pyx_XDECREF ( __pyx_v_tltrY ) ;
__Pyx_XDECREF ( __pyx_v_blbrX ) ;
__Pyx_XDECREF ( __pyx_v_blbrY ) ;
__Pyx_XDECREF ( __pyx_v_tlblX ) ;
__Pyx_XDECREF ( __pyx_v_tlblY ) ;
__Pyx_XDECREF ( __pyx_v_trbrX ) ;
__Pyx_XDECREF ( __pyx_v_trbrY ) ;
__Pyx_XDECREF ( __pyx_v_dA ) ;
__Pyx_XDECREF ( __pyx_v_dB ) ;
__Pyx_XDECREF ( __pyx_v_area_box ) ;
__Pyx_XDECREF ( __pyx_v_x ) ;
__Pyx_XDECREF ( __pyx_v_y ) ;
__Pyx_XDECREF ( __pyx_v_radius ) ;
__Pyx_XDECREF ( __pyx_v_area_contour ) ;
__Pyx_XDECREF ( __pyx_v_area_circle ) ;
__Pyx_XDECREF ( __pyx_v_boxiness ) ;
__Pyx_XDECREF ( __pyx_v_circleness ) ;
__Pyx_XDECREF ( __pyx_v_mask ) ;
__Pyx_XDECREF ( __pyx_v_hsv ) ;
__Pyx_XDECREF ( __pyx_v_mean_val ) ;
__Pyx_XDECREF ( __pyx_v_objtype ) ;
__Pyx_XDECREF ( __pyx_v_objname ) ;
__Pyx_XDECREF ( __pyx_v_dimA ) ;
__Pyx_XDECREF ( __pyx_v_dimB ) ;
__Pyx_XDECREF ( __pyx_v_itemw ) ;
__Pyx_XDECREF ( __pyx_v_itemwr ) ;
__Pyx_XDECREF ( __pyx_v_itemh ) ;
__Pyx_XDECREF ( __pyx_v_itemhr ) ;
__Pyx_XDECREF ( __pyx_v_iteml ) ;
__Pyx_XDECREF ( __pyx_v_approx ) ;
__Pyx_XDECREF ( __pyx_v_hull ) ;
__Pyx_XDECREF ( __pyx_v_hull2 ) ;
__Pyx_XDECREF ( __pyx_v_defects ) ;
__Pyx_XDECREF ( __pyx_v_convexness ) ;
__Pyx_XDECREF ( __pyx_v_rows ) ;
__Pyx_XDECREF ( __pyx_v_cols ) ;
__Pyx_XDECREF ( __pyx_v_vx ) ;
__Pyx_XDECREF ( __pyx_v_vy ) ;
__Pyx_XDECREF ( __pyx_v_xx ) ;
__Pyx_XDECREF ( __pyx_v_yy ) ;
__Pyx_XDECREF ( __pyx_v_lefty ) ;
__Pyx_XDECREF ( __pyx_v_righty ) ;
__Pyx_XDECREF ( __pyx_v_slope ) ;
__Pyx_XDECREF ( __pyx_v_angle ) ;
__Pyx_XDECREF ( __pyx_v_xpos ) ;
__Pyx_XDECREF ( __pyx_v_ypos ) ;
__Pyx_XDECREF ( __pyx_v_xpos2 ) ;
__Pyx_XDECREF ( __pyx_v_ypos2 ) ;
__Pyx_XDECREF ( __pyx_v_output ) ;
__Pyx_XGIVEREF ( __pyx_r ) ;
__Pyx_RefNannyFinishContext ( ) ;
return __pyx_r ;
}
static PyMethodDef __pyx_methods [ ] = {
{ 0 , 0 , 0 , 0 }
} ;
# if PY_MAJOR_VERSION >= 3
# if CYTHON_PEP489_MULTI_PHASE_INIT
static PyObject * __pyx_pymod_create ( PyObject * spec , PyModuleDef * def ) ; /*proto*/
static int __pyx_pymod_exec_detect ( PyObject * module ) ; /*proto*/
static PyModuleDef_Slot __pyx_moduledef_slots [ ] = {
{ Py_mod_create , ( void * ) __pyx_pymod_create } ,
{ Py_mod_exec , ( void * ) __pyx_pymod_exec_detect } ,
{ 0 , NULL }
} ;
# endif
static struct PyModuleDef __pyx_moduledef = {
PyModuleDef_HEAD_INIT ,
" detect " ,
0 , /* m_doc */
# if CYTHON_PEP489_MULTI_PHASE_INIT
0 , /* m_size */
# else
- 1 , /* m_size */
# endif
__pyx_methods /* m_methods */ ,
# if CYTHON_PEP489_MULTI_PHASE_INIT
__pyx_moduledef_slots , /* m_slots */
# else
NULL , /* m_reload */
# endif
NULL , /* m_traverse */
NULL , /* m_clear */
NULL /* m_free */
} ;
# endif
# ifndef CYTHON_SMALL_CODE
# if defined(__clang__)
# define CYTHON_SMALL_CODE
# elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
# define CYTHON_SMALL_CODE __attribute__((cold))
# else
# define CYTHON_SMALL_CODE
# endif
# endif
static __Pyx_StringTabEntry __pyx_string_tab [ ] = {
{ & __pyx_kp_s_2f_in , __pyx_k_2f_in , sizeof ( __pyx_k_2f_in ) , 0 , 0 , 1 , 0 } ,
{ & __pyx_n_s_Axle , __pyx_k_Axle , sizeof ( __pyx_k_Axle ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_BoxPoints , __pyx_k_BoxPoints , sizeof ( __pyx_k_BoxPoints ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_CHAIN_APPROX_SIMPLE , __pyx_k_CHAIN_APPROX_SIMPLE , sizeof ( __pyx_k_CHAIN_APPROX_SIMPLE ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_COLOR_BGR2GRAY , __pyx_k_COLOR_BGR2GRAY , sizeof ( __pyx_k_COLOR_BGR2GRAY ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_COLOR_BGR2HSV , __pyx_k_COLOR_BGR2HSV , sizeof ( __pyx_k_COLOR_BGR2HSV ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_Canny , __pyx_k_Canny , sizeof ( __pyx_k_Canny ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_DIST_L2 , __pyx_k_DIST_L2 , sizeof ( __pyx_k_DIST_L2 ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_FONT_HERSHEY_SIMPLEX , __pyx_k_FONT_HERSHEY_SIMPLEX , sizeof ( __pyx_k_FONT_HERSHEY_SIMPLEX ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_GaussianBlur , __pyx_k_GaussianBlur , sizeof ( __pyx_k_GaussianBlur ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_INTER_NEAREST , __pyx_k_INTER_NEAREST , sizeof ( __pyx_k_INTER_NEAREST ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_kp_s_Item_Sorter , __pyx_k_Item_Sorter , sizeof ( __pyx_k_Item_Sorter ) , 0 , 0 , 1 , 0 } ,
{ & __pyx_kp_s_Keps_Nut , __pyx_k_Keps_Nut , sizeof ( __pyx_k_Keps_Nut ) , 0 , 0 , 1 , 0 } ,
{ & __pyx_n_s_Penny , __pyx_k_Penny , sizeof ( __pyx_k_Penny ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_RETR_EXTERNAL , __pyx_k_RETR_EXTERNAL , sizeof ( __pyx_k_RETR_EXTERNAL ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_Screw , __pyx_k_Screw , sizeof ( __pyx_k_Screw ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_Spacer , __pyx_k_Spacer , sizeof ( __pyx_k_Spacer ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_Standoff , __pyx_k_Standoff , sizeof ( __pyx_k_Standoff ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_Unknown , __pyx_k_Unknown , sizeof ( __pyx_k_Unknown ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_Washer , __pyx_k_Washer , sizeof ( __pyx_k_Washer ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_kp_s__3 , __pyx_k__3 , sizeof ( __pyx_k__3 ) , 0 , 0 , 1 , 0 } ,
{ & __pyx_n_s_a , __pyx_k_a , sizeof ( __pyx_k_a ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_angle , __pyx_k_angle , sizeof ( __pyx_k_angle ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_approx , __pyx_k_approx , sizeof ( __pyx_k_approx ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_approxPolyDP , __pyx_k_approxPolyDP , sizeof ( __pyx_k_approxPolyDP ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_area_box , __pyx_k_area_box , sizeof ( __pyx_k_area_box ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_area_circle , __pyx_k_area_circle , sizeof ( __pyx_k_area_circle ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_area_contour , __pyx_k_area_contour , sizeof ( __pyx_k_area_contour ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_argparse , __pyx_k_argparse , sizeof ( __pyx_k_argparse ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_array , __pyx_k_array , sizeof ( __pyx_k_array ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_astype , __pyx_k_astype , sizeof ( __pyx_k_astype ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_atan , __pyx_k_atan , sizeof ( __pyx_k_atan ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_b , __pyx_k_b , sizeof ( __pyx_k_b ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_bl , __pyx_k_bl , sizeof ( __pyx_k_bl ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_blbrX , __pyx_k_blbrX , sizeof ( __pyx_k_blbrX ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_blbrY , __pyx_k_blbrY , sizeof ( __pyx_k_blbrY ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_box , __pyx_k_box , sizeof ( __pyx_k_box ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_boxPoints , __pyx_k_boxPoints , sizeof ( __pyx_k_boxPoints ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_boxiness , __pyx_k_boxiness , sizeof ( __pyx_k_boxiness ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_br , __pyx_k_br , sizeof ( __pyx_k_br ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_c , __pyx_k_c , sizeof ( __pyx_k_c ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_calibration_width , __pyx_k_calibration_width , sizeof ( __pyx_k_calibration_width ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_circle , __pyx_k_circle , sizeof ( __pyx_k_circle ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_circleness , __pyx_k_circleness , sizeof ( __pyx_k_circleness ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_circular , __pyx_k_circular , sizeof ( __pyx_k_circular ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_kp_s_class_numpy_ndarray , __pyx_k_class_numpy_ndarray , sizeof ( __pyx_k_class_numpy_ndarray ) , 0 , 0 , 1 , 0 } ,
{ & __pyx_n_s_cline_in_traceback , __pyx_k_cline_in_traceback , sizeof ( __pyx_k_cline_in_traceback ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_close , __pyx_k_close , sizeof ( __pyx_k_close ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_cnts , __pyx_k_cnts , sizeof ( __pyx_k_cnts ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_cols , __pyx_k_cols , sizeof ( __pyx_k_cols ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_contourArea , __pyx_k_contourArea , sizeof ( __pyx_k_contourArea ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_contours , __pyx_k_contours , sizeof ( __pyx_k_contours ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_convexHull , __pyx_k_convexHull , sizeof ( __pyx_k_convexHull ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_convexityDefects , __pyx_k_convexityDefects , sizeof ( __pyx_k_convexityDefects ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_convexness , __pyx_k_convexness , sizeof ( __pyx_k_convexness ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_copy , __pyx_k_copy , sizeof ( __pyx_k_copy ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_cos , __pyx_k_cos , sizeof ( __pyx_k_cos ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_cv , __pyx_k_cv , sizeof ( __pyx_k_cv ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_cv2 , __pyx_k_cv2 , sizeof ( __pyx_k_cv2 ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_cvtColor , __pyx_k_cvtColor , sizeof ( __pyx_k_cvtColor ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_dA , __pyx_k_dA , sizeof ( __pyx_k_dA ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_dB , __pyx_k_dB , sizeof ( __pyx_k_dB ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_defects , __pyx_k_defects , sizeof ( __pyx_k_defects ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_detect , __pyx_k_detect , sizeof ( __pyx_k_detect ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_kp_s_detect_py , __pyx_k_detect_py , sizeof ( __pyx_k_detect_py ) , 0 , 0 , 1 , 0 } ,
{ & __pyx_n_s_dilate , __pyx_k_dilate , sizeof ( __pyx_k_dilate ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_dimA , __pyx_k_dimA , sizeof ( __pyx_k_dimA ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_dimB , __pyx_k_dimB , sizeof ( __pyx_k_dimB ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_drawContours , __pyx_k_drawContours , sizeof ( __pyx_k_drawContours ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_dtype , __pyx_k_dtype , sizeof ( __pyx_k_dtype ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_edged , __pyx_k_edged , sizeof ( __pyx_k_edged ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_epsilon , __pyx_k_epsilon , sizeof ( __pyx_k_epsilon ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_erode , __pyx_k_erode , sizeof ( __pyx_k_erode ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_findContours , __pyx_k_findContours , sizeof ( __pyx_k_findContours ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_fitLine , __pyx_k_fitLine , sizeof ( __pyx_k_fitLine ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_format , __pyx_k_format , sizeof ( __pyx_k_format ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_grab_contours , __pyx_k_grab_contours , sizeof ( __pyx_k_grab_contours ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_gray , __pyx_k_gray , sizeof ( __pyx_k_gray ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_hsv , __pyx_k_hsv , sizeof ( __pyx_k_hsv ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_hull , __pyx_k_hull , sizeof ( __pyx_k_hull ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_hull2 , __pyx_k_hull2 , sizeof ( __pyx_k_hull2 ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_image , __pyx_k_image , sizeof ( __pyx_k_image ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_img_file , __pyx_k_img_file , sizeof ( __pyx_k_img_file ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_import , __pyx_k_import , sizeof ( __pyx_k_import ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_imread , __pyx_k_imread , sizeof ( __pyx_k_imread ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_imshow , __pyx_k_imshow , sizeof ( __pyx_k_imshow ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_imutils , __pyx_k_imutils , sizeof ( __pyx_k_imutils ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_in , __pyx_k_in , sizeof ( __pyx_k_in ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_int , __pyx_k_int , sizeof ( __pyx_k_int ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_interpolation , __pyx_k_interpolation , sizeof ( __pyx_k_interpolation ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_is_cv2 , __pyx_k_is_cv2 , sizeof ( __pyx_k_is_cv2 ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_itemh , __pyx_k_itemh , sizeof ( __pyx_k_itemh ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_itemhr , __pyx_k_itemhr , sizeof ( __pyx_k_itemhr ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_iteml , __pyx_k_iteml , sizeof ( __pyx_k_iteml ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_itemw , __pyx_k_itemw , sizeof ( __pyx_k_itemw ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_itemwr , __pyx_k_itemwr , sizeof ( __pyx_k_itemwr ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_iterations , __pyx_k_iterations , sizeof ( __pyx_k_iterations ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_larger , __pyx_k_larger , sizeof ( __pyx_k_larger ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_lefty , __pyx_k_lefty , sizeof ( __pyx_k_lefty ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_linalg , __pyx_k_linalg , sizeof ( __pyx_k_linalg ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_line , __pyx_k_line , sizeof ( __pyx_k_line ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_list , __pyx_k_list , sizeof ( __pyx_k_list ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_main , __pyx_k_main , sizeof ( __pyx_k_main ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_mask , __pyx_k_mask , sizeof ( __pyx_k_mask ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_math , __pyx_k_math , sizeof ( __pyx_k_math ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_mean , __pyx_k_mean , sizeof ( __pyx_k_mean ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_mean_val , __pyx_k_mean_val , sizeof ( __pyx_k_mean_val ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_midpoint , __pyx_k_midpoint , sizeof ( __pyx_k_midpoint ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_minAreaRect , __pyx_k_minAreaRect , sizeof ( __pyx_k_minAreaRect ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_minEnclosingCircle , __pyx_k_minEnclosingCircle , sizeof ( __pyx_k_minEnclosingCircle ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_name , __pyx_k_name , sizeof ( __pyx_k_name ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_namedWindow , __pyx_k_namedWindow , sizeof ( __pyx_k_namedWindow ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_near , __pyx_k_near , sizeof ( __pyx_k_near ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_norm , __pyx_k_norm , sizeof ( __pyx_k_norm ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_np , __pyx_k_np , sizeof ( __pyx_k_np ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_num , __pyx_k_num , sizeof ( __pyx_k_num ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_numpy , __pyx_k_numpy , sizeof ( __pyx_k_numpy ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_objname , __pyx_k_objname , sizeof ( __pyx_k_objname ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_objtype , __pyx_k_objtype , sizeof ( __pyx_k_objtype ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_orig , __pyx_k_orig , sizeof ( __pyx_k_orig ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_output , __pyx_k_output , sizeof ( __pyx_k_output ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_pi , __pyx_k_pi , sizeof ( __pyx_k_pi ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_pixelsPerMetric , __pyx_k_pixelsPerMetric , sizeof ( __pyx_k_pixelsPerMetric ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_ptA , __pyx_k_ptA , sizeof ( __pyx_k_ptA ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_ptB , __pyx_k_ptB , sizeof ( __pyx_k_ptB ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_putText , __pyx_k_putText , sizeof ( __pyx_k_putText ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_quick , __pyx_k_quick , sizeof ( __pyx_k_quick ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_radius , __pyx_k_radius , sizeof ( __pyx_k_radius ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_rectangular , __pyx_k_rectangular , sizeof ( __pyx_k_rectangular ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_resize , __pyx_k_resize , sizeof ( __pyx_k_resize ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_returnPoints , __pyx_k_returnPoints , sizeof ( __pyx_k_returnPoints ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_righty , __pyx_k_righty , sizeof ( __pyx_k_righty ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_round , __pyx_k_round , sizeof ( __pyx_k_round ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_rows , __pyx_k_rows , sizeof ( __pyx_k_rows ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_shape , __pyx_k_shape , sizeof ( __pyx_k_shape ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_shead , __pyx_k_shead , sizeof ( __pyx_k_shead ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_show , __pyx_k_show , sizeof ( __pyx_k_show ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_sin , __pyx_k_sin , sizeof ( __pyx_k_sin ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_size , __pyx_k_size , sizeof ( __pyx_k_size ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_sizeStandoff , __pyx_k_sizeStandoff , sizeof ( __pyx_k_sizeStandoff ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_sizeVexScrew , __pyx_k_sizeVexScrew , sizeof ( __pyx_k_sizeVexScrew ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_slope , __pyx_k_slope , sizeof ( __pyx_k_slope ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_smaller , __pyx_k_smaller , sizeof ( __pyx_k_smaller ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_swap , __pyx_k_swap , sizeof ( __pyx_k_swap ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_test , __pyx_k_test , sizeof ( __pyx_k_test ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_time , __pyx_k_time , sizeof ( __pyx_k_time ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_tl , __pyx_k_tl , sizeof ( __pyx_k_tl ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_tlblX , __pyx_k_tlblX , sizeof ( __pyx_k_tlblX ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_tlblY , __pyx_k_tlblY , sizeof ( __pyx_k_tlblY ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_tltrX , __pyx_k_tltrX , sizeof ( __pyx_k_tltrX ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_tltrY , __pyx_k_tltrY , sizeof ( __pyx_k_tltrY ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_tmp , __pyx_k_tmp , sizeof ( __pyx_k_tmp ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_tr , __pyx_k_tr , sizeof ( __pyx_k_tr ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_trbrX , __pyx_k_trbrX , sizeof ( __pyx_k_trbrX ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_trbrY , __pyx_k_trbrY , sizeof ( __pyx_k_trbrY ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_uint8 , __pyx_k_uint8 , sizeof ( __pyx_k_uint8 ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_vx , __pyx_k_vx , sizeof ( __pyx_k_vx ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_vy , __pyx_k_vy , sizeof ( __pyx_k_vy ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_waitKey , __pyx_k_waitKey , sizeof ( __pyx_k_waitKey ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_x , __pyx_k_x , sizeof ( __pyx_k_x ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_kp_s_x_2f_in , __pyx_k_x_2f_in , sizeof ( __pyx_k_x_2f_in ) , 0 , 0 , 1 , 0 } ,
{ & __pyx_n_s_xpos , __pyx_k_xpos , sizeof ( __pyx_k_xpos ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_xpos2 , __pyx_k_xpos2 , sizeof ( __pyx_k_xpos2 ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_xx , __pyx_k_xx , sizeof ( __pyx_k_xx ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_y , __pyx_k_y , sizeof ( __pyx_k_y ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_ypos , __pyx_k_ypos , sizeof ( __pyx_k_ypos ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_ypos2 , __pyx_k_ypos2 , sizeof ( __pyx_k_ypos2 ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_yy , __pyx_k_yy , sizeof ( __pyx_k_yy ) , 0 , 0 , 1 , 1 } ,
{ & __pyx_n_s_zeros , __pyx_k_zeros , sizeof ( __pyx_k_zeros ) , 0 , 0 , 1 , 1 } ,
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 }
} ;
static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins ( void ) {
__pyx_builtin_round = __Pyx_GetBuiltinName ( __pyx_n_s_round ) ; if ( ! __pyx_builtin_round ) __PYX_ERR ( 0 , 26 , __pyx_L1_error )
return 0 ;
__pyx_L1_error : ;
return - 1 ;
}
static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants ( void ) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " __Pyx_InitCachedConstants " , 0 ) ;
/* "detect.py":101
* cv2 . waitKey ( 0 )
* gray = cv2 . cvtColor ( image , cv2 . COLOR_BGR2GRAY )
* gray = cv2 . GaussianBlur ( gray , ( 5 , 5 ) , 0 ) # < < < < < < < < < < < < < <
* if show and not quick :
* cv2 . imshow ( " Item Sorter " , gray )
*/
__pyx_tuple_ = PyTuple_Pack ( 2 , __pyx_int_5 , __pyx_int_5 ) ; if ( unlikely ( ! __pyx_tuple_ ) ) __PYX_ERR ( 0 , 101 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple_ ) ;
__Pyx_GIVEREF ( __pyx_tuple_ ) ;
/* "detect.py":164
* if boxiness > circleness :
* rectangular = True
* cv2 . drawContours ( orig , [ box . astype ( " int " ) ] , - 1 , ( 0 , 255 , 0 ) , 2 ) # < < < < < < < < < < < < < <
* else :
* circular = True
*/
__pyx_tuple__2 = PyTuple_Pack ( 3 , __pyx_int_0 , __pyx_int_255 , __pyx_int_0 ) ; if ( unlikely ( ! __pyx_tuple__2 ) ) __PYX_ERR ( 0 , 164 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple__2 ) ;
__Pyx_GIVEREF ( __pyx_tuple__2 ) ;
/* "detect.py":249
* else :
* circular = True
* cv2 . circle ( orig , ( int ( x ) , int ( y ) ) , int ( radius ) , ( 255 , 0 , 0 ) , 2 ) # < < < < < < < < < < < < < <
* objtype = " Unknown "
* itemw = larger ( dimA , dimB )
*/
__pyx_tuple__4 = PyTuple_Pack ( 3 , __pyx_int_255 , __pyx_int_0 , __pyx_int_0 ) ; if ( unlikely ( ! __pyx_tuple__4 ) ) __PYX_ERR ( 0 , 249 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple__4 ) ;
__Pyx_GIVEREF ( __pyx_tuple__4 ) ;
/* "detect.py":285
* defects = cv2 . convexityDefects ( c , hull )
* # print ( str ( defects . size ) + " match " )
* cv2 . drawContours ( orig , ( hull2 ) , - 1 , ( 0 , 0 , 255 ) , 3 ) # < < < < < < < < < < < < < <
* cv2 . drawContours ( orig , ( approx ) , - 1 , ( 255 , 0 , 0 ) , 3 )
* convexness = area_contour / cv2 . contourArea ( hull2 )
*/
__pyx_tuple__5 = PyTuple_Pack ( 3 , __pyx_int_0 , __pyx_int_0 , __pyx_int_255 ) ; if ( unlikely ( ! __pyx_tuple__5 ) ) __PYX_ERR ( 0 , 285 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple__5 ) ;
__Pyx_GIVEREF ( __pyx_tuple__5 ) ;
/* "detect.py":304
* objtype = " Axle "
* iteml = ( radius * 2 / pixelsPerMetric + itemw ) / 2
* rows , cols = orig . shape [ : 2 ] # < < < < < < < < < < < < < <
* [ vx , vy , xx , yy ] = cv2 . fitLine ( c , cv2 . DIST_L2 , 0 , 0.01 , 0.01 )
* lefty = int ( ( - xx * vy / vx ) + yy )
*/
__pyx_slice__6 = PySlice_New ( Py_None , __pyx_int_2 , Py_None ) ; if ( unlikely ( ! __pyx_slice__6 ) ) __PYX_ERR ( 0 , 304 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_slice__6 ) ;
__Pyx_GIVEREF ( __pyx_slice__6 ) ;
/* "detect.py":320
* if rectangular :
* cv2 . line ( orig , ( int ( xpos ) , int ( ypos ) ) ,
* ( int ( xpos2 ) , int ( ypos2 ) ) , ( 255 , 127 , 0 ) , 2 ) # < < < < < < < < < < < < < <
* # print ( str ( iteml ) )
* # draw the object sizes on the image
*/
__pyx_tuple__7 = PyTuple_Pack ( 3 , __pyx_int_255 , __pyx_int_127 , __pyx_int_0 ) ; if ( unlikely ( ! __pyx_tuple__7 ) ) __PYX_ERR ( 0 , 320 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple__7 ) ;
__Pyx_GIVEREF ( __pyx_tuple__7 ) ;
/* "detect.py":330
* ( int ( x - 25 ) , int ( y + radius + 20 )
* ) , cv2 . FONT_HERSHEY_SIMPLEX ,
* 0.6 , ( 50 , 50 , 220 ) , 2 ) # < < < < < < < < < < < < < <
* else :
* cv2 . putText ( orig , str ( objtype ) ,
*/
__pyx_tuple__8 = PyTuple_Pack ( 3 , __pyx_int_50 , __pyx_int_50 , __pyx_int_220 ) ; if ( unlikely ( ! __pyx_tuple__8 ) ) __PYX_ERR ( 0 , 330 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple__8 ) ;
__Pyx_GIVEREF ( __pyx_tuple__8 ) ;
/* "detect.py":15
*
*
* def midpoint ( ptA , ptB ) : # < < < < < < < < < < < < < <
* return ( ( ptA [ 0 ] + ptB [ 0 ] ) * 0.5 , ( ptA [ 1 ] + ptB [ 1 ] ) * 0.5 )
*
*/
__pyx_tuple__9 = PyTuple_Pack ( 2 , __pyx_n_s_ptA , __pyx_n_s_ptB ) ; if ( unlikely ( ! __pyx_tuple__9 ) ) __PYX_ERR ( 0 , 15 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple__9 ) ;
__Pyx_GIVEREF ( __pyx_tuple__9 ) ;
__pyx_codeobj__10 = ( PyObject * ) __Pyx_PyCode_New ( 2 , 0 , 2 , 0 , CO_OPTIMIZED | CO_NEWLOCALS , __pyx_empty_bytes , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_tuple__9 , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_kp_s_detect_py , __pyx_n_s_midpoint , 15 , __pyx_empty_bytes ) ; if ( unlikely ( ! __pyx_codeobj__10 ) ) __PYX_ERR ( 0 , 15 , __pyx_L1_error )
/* "detect.py":19
*
*
* def sizeVexScrew ( iteml ) : # < < < < < < < < < < < < < <
* # Screw Sizing code
* # subtract screw head size to find thread length
*/
__pyx_tuple__11 = PyTuple_Pack ( 2 , __pyx_n_s_iteml , __pyx_n_s_shead ) ; if ( unlikely ( ! __pyx_tuple__11 ) ) __PYX_ERR ( 0 , 19 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple__11 ) ;
__Pyx_GIVEREF ( __pyx_tuple__11 ) ;
__pyx_codeobj__12 = ( PyObject * ) __Pyx_PyCode_New ( 1 , 0 , 2 , 0 , CO_OPTIMIZED | CO_NEWLOCALS , __pyx_empty_bytes , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_tuple__11 , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_kp_s_detect_py , __pyx_n_s_sizeVexScrew , 19 , __pyx_empty_bytes ) ; if ( unlikely ( ! __pyx_codeobj__12 ) ) __PYX_ERR ( 0 , 19 , __pyx_L1_error )
/* "detect.py":31
*
*
* def sizeStandoff ( iteml ) : # < < < < < < < < < < < < < <
* # Standoff Sizing code
* iteml * = 2
*/
__pyx_tuple__13 = PyTuple_Pack ( 1 , __pyx_n_s_iteml ) ; if ( unlikely ( ! __pyx_tuple__13 ) ) __PYX_ERR ( 0 , 31 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple__13 ) ;
__Pyx_GIVEREF ( __pyx_tuple__13 ) ;
__pyx_codeobj__14 = ( PyObject * ) __Pyx_PyCode_New ( 1 , 0 , 1 , 0 , CO_OPTIMIZED | CO_NEWLOCALS , __pyx_empty_bytes , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_tuple__13 , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_kp_s_detect_py , __pyx_n_s_sizeStandoff , 31 , __pyx_empty_bytes ) ; if ( unlikely ( ! __pyx_codeobj__14 ) ) __PYX_ERR ( 0 , 31 , __pyx_L1_error )
/* "detect.py":39
*
*
* def larger ( a , b ) : # < < < < < < < < < < < < < <
* if a > = b :
* return a
*/
__pyx_tuple__15 = PyTuple_Pack ( 2 , __pyx_n_s_a , __pyx_n_s_b ) ; if ( unlikely ( ! __pyx_tuple__15 ) ) __PYX_ERR ( 0 , 39 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple__15 ) ;
__Pyx_GIVEREF ( __pyx_tuple__15 ) ;
__pyx_codeobj__16 = ( PyObject * ) __Pyx_PyCode_New ( 2 , 0 , 2 , 0 , CO_OPTIMIZED | CO_NEWLOCALS , __pyx_empty_bytes , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_tuple__15 , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_kp_s_detect_py , __pyx_n_s_larger , 39 , __pyx_empty_bytes ) ; if ( unlikely ( ! __pyx_codeobj__16 ) ) __PYX_ERR ( 0 , 39 , __pyx_L1_error )
/* "detect.py":46
*
*
* def smaller ( a , b ) : # < < < < < < < < < < < < < <
* if a < b :
* return a
*/
__pyx_tuple__17 = PyTuple_Pack ( 2 , __pyx_n_s_a , __pyx_n_s_b ) ; if ( unlikely ( ! __pyx_tuple__17 ) ) __PYX_ERR ( 0 , 46 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple__17 ) ;
__Pyx_GIVEREF ( __pyx_tuple__17 ) ;
__pyx_codeobj__18 = ( PyObject * ) __Pyx_PyCode_New ( 2 , 0 , 2 , 0 , CO_OPTIMIZED | CO_NEWLOCALS , __pyx_empty_bytes , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_tuple__17 , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_kp_s_detect_py , __pyx_n_s_smaller , 46 , __pyx_empty_bytes ) ; if ( unlikely ( ! __pyx_codeobj__18 ) ) __PYX_ERR ( 0 , 46 , __pyx_L1_error )
/* "detect.py":53
*
*
* def near ( a , b , close ) : # < < < < < < < < < < < < < <
* if abs ( a - b ) < close :
* return True
*/
__pyx_tuple__19 = PyTuple_Pack ( 3 , __pyx_n_s_a , __pyx_n_s_b , __pyx_n_s_close ) ; if ( unlikely ( ! __pyx_tuple__19 ) ) __PYX_ERR ( 0 , 53 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple__19 ) ;
__Pyx_GIVEREF ( __pyx_tuple__19 ) ;
__pyx_codeobj__20 = ( PyObject * ) __Pyx_PyCode_New ( 3 , 0 , 3 , 0 , CO_OPTIMIZED | CO_NEWLOCALS , __pyx_empty_bytes , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_tuple__19 , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_kp_s_detect_py , __pyx_n_s_near , 53 , __pyx_empty_bytes ) ; if ( unlikely ( ! __pyx_codeobj__20 ) ) __PYX_ERR ( 0 , 53 , __pyx_L1_error )
/* "detect.py":59
*
*
* def swap ( a , b ) : # < < < < < < < < < < < < < <
* tmp = a
* a = b
*/
__pyx_tuple__21 = PyTuple_Pack ( 3 , __pyx_n_s_a , __pyx_n_s_b , __pyx_n_s_tmp ) ; if ( unlikely ( ! __pyx_tuple__21 ) ) __PYX_ERR ( 0 , 59 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple__21 ) ;
__Pyx_GIVEREF ( __pyx_tuple__21 ) ;
__pyx_codeobj__22 = ( PyObject * ) __Pyx_PyCode_New ( 2 , 0 , 3 , 0 , CO_OPTIMIZED | CO_NEWLOCALS , __pyx_empty_bytes , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_tuple__21 , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_kp_s_detect_py , __pyx_n_s_swap , 59 , __pyx_empty_bytes ) ; if ( unlikely ( ! __pyx_codeobj__22 ) ) __PYX_ERR ( 0 , 59 , __pyx_L1_error )
/* "detect.py":78
* args = vars ( ap . parse_args ( ) )
* args2 = ap . parse_args ( ) " " "
* def detect ( calibration_width , img_file , show , quick ) : # < < < < < < < < < < < < < <
* list = [ ]
* # if type ( args [ " number " ] ) = = type ( selected ) :
*/
__pyx_tuple__23 = PyTuple_Pack ( 71 , __pyx_n_s_calibration_width , __pyx_n_s_img_file , __pyx_n_s_show , __pyx_n_s_quick , __pyx_n_s_list , __pyx_n_s_image , __pyx_n_s_gray , __pyx_n_s_edged , __pyx_n_s_cnts , __pyx_n_s_pixelsPerMetric , __pyx_n_s_num , __pyx_n_s_c , __pyx_n_s_orig , __pyx_n_s_box , __pyx_n_s_tl , __pyx_n_s_tr , __pyx_n_s_br , __pyx_n_s_bl , __pyx_n_s_tltrX , __pyx_n_s_tltrY , __pyx_n_s_blbrX , __pyx_n_s_blbrY , __pyx_n_s_tlblX , __pyx_n_s_tlblY , __pyx_n_s_trbrX , __pyx_n_s_trbrY , __pyx_n_s_dA , __pyx_n_s_dB , __pyx_n_s_area_box , __pyx_n_s_x , __pyx_n_s_y , __pyx_n_s_radius , __pyx_n_s_area_contour , __pyx_n_s_area_circle , __pyx_n_s_boxiness , __pyx_n_s_circleness , __pyx_n_s_circular , __pyx_n_s_rectangular , __pyx_n_s_mask , __pyx_n_s_hsv , __pyx_n_s_mean_val , __pyx_n_s_objtype , __pyx_n_s_objname , __pyx_n_s_dimA , __pyx_n_s_dimB , __pyx_n_s_itemw , __pyx_n_s_itemwr , __pyx_n_s_itemh , __pyx_n_s_itemhr , __pyx_n_s_iteml , __pyx_n_s_epsilon , __pyx_n_s_approx , __pyx_n_s_hull , __pyx_n_s_hull2 , __pyx_n_s_defects , __pyx_n_s_convexness , __pyx_n_s_rows , __pyx_n_s_cols , __pyx_n_s_vx , __pyx_n_s_vy , __pyx_n_s_xx , __pyx_n_s_yy , __pyx_n_s_lefty , __pyx_n_s_righty , __pyx_n_s_slope , __pyx_n_s_angle , __pyx_n_s_xpos , __pyx_n_s_ypos , __pyx_n_s_xpos2 , __pyx_n_s_ypos2 , __pyx_n_s_output ) ; if ( unlikely ( ! __pyx_tuple__23 ) ) __PYX_ERR ( 0 , 78 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_tuple__23 ) ;
__Pyx_GIVEREF ( __pyx_tuple__23 ) ;
__pyx_codeobj__24 = ( PyObject * ) __Pyx_PyCode_New ( 4 , 0 , 71 , 0 , CO_OPTIMIZED | CO_NEWLOCALS , __pyx_empty_bytes , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_tuple__23 , __pyx_empty_tuple , __pyx_empty_tuple , __pyx_kp_s_detect_py , __pyx_n_s_detect , 78 , __pyx_empty_bytes ) ; if ( unlikely ( ! __pyx_codeobj__24 ) ) __PYX_ERR ( 0 , 78 , __pyx_L1_error )
__Pyx_RefNannyFinishContext ( ) ;
return 0 ;
__pyx_L1_error : ;
__Pyx_RefNannyFinishContext ( ) ;
return - 1 ;
}
static CYTHON_SMALL_CODE int __Pyx_InitGlobals ( void ) {
if ( __Pyx_InitStrings ( __pyx_string_tab ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error ) ;
__pyx_float_0_5 = PyFloat_FromDouble ( 0.5 ) ; if ( unlikely ( ! __pyx_float_0_5 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_float_0_6 = PyFloat_FromDouble ( 0.6 ) ; if ( unlikely ( ! __pyx_float_0_6 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_float_0_9 = PyFloat_FromDouble ( 0.9 ) ; if ( unlikely ( ! __pyx_float_0_9 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_float_4_5 = PyFloat_FromDouble ( 4.5 ) ; if ( unlikely ( ! __pyx_float_4_5 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_float_0_01 = PyFloat_FromDouble ( 0.01 ) ; if ( unlikely ( ! __pyx_float_0_01 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_float_0_02 = PyFloat_FromDouble ( 0.02 ) ; if ( unlikely ( ! __pyx_float_0_02 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_float_0_03 = PyFloat_FromDouble ( 0.03 ) ; if ( unlikely ( ! __pyx_float_0_03 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_float_0_23 = PyFloat_FromDouble ( 0.23 ) ; if ( unlikely ( ! __pyx_float_0_23 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_float_0_38 = PyFloat_FromDouble ( 0.38 ) ; if ( unlikely ( ! __pyx_float_0_38 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_float_0_75 = PyFloat_FromDouble ( 0.75 ) ; if ( unlikely ( ! __pyx_float_0_75 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_float_0_1875 = PyFloat_FromDouble ( 0.1875 ) ; if ( unlikely ( ! __pyx_float_0_1875 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_float_0_3125 = PyFloat_FromDouble ( 0.3125 ) ; if ( unlikely ( ! __pyx_float_0_3125 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_0 = PyInt_FromLong ( 0 ) ; if ( unlikely ( ! __pyx_int_0 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_1 = PyInt_FromLong ( 1 ) ; if ( unlikely ( ! __pyx_int_1 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_2 = PyInt_FromLong ( 2 ) ; if ( unlikely ( ! __pyx_int_2 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_3 = PyInt_FromLong ( 3 ) ; if ( unlikely ( ! __pyx_int_3 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_5 = PyInt_FromLong ( 5 ) ; if ( unlikely ( ! __pyx_int_5 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_8 = PyInt_FromLong ( 8 ) ; if ( unlikely ( ! __pyx_int_8 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_10 = PyInt_FromLong ( 10 ) ; if ( unlikely ( ! __pyx_int_10 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_16 = PyInt_FromLong ( 16 ) ; if ( unlikely ( ! __pyx_int_16 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_20 = PyInt_FromLong ( 20 ) ; if ( unlikely ( ! __pyx_int_20 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_25 = PyInt_FromLong ( 25 ) ; if ( unlikely ( ! __pyx_int_25 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_40 = PyInt_FromLong ( 40 ) ; if ( unlikely ( ! __pyx_int_40 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_47 = PyInt_FromLong ( 47 ) ; if ( unlikely ( ! __pyx_int_47 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_50 = PyInt_FromLong ( 50 ) ; if ( unlikely ( ! __pyx_int_50 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_70 = PyInt_FromLong ( 70 ) ; if ( unlikely ( ! __pyx_int_70 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_78 = PyInt_FromLong ( 78 ) ; if ( unlikely ( ! __pyx_int_78 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_100 = PyInt_FromLong ( 100 ) ; if ( unlikely ( ! __pyx_int_100 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_127 = PyInt_FromLong ( 127 ) ; if ( unlikely ( ! __pyx_int_127 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_220 = PyInt_FromLong ( 220 ) ; if ( unlikely ( ! __pyx_int_220 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_255 = PyInt_FromLong ( 255 ) ; if ( unlikely ( ! __pyx_int_255 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_1000 = PyInt_FromLong ( 1000 ) ; if ( unlikely ( ! __pyx_int_1000 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_int_neg_1 = PyInt_FromLong ( - 1 ) ; if ( unlikely ( ! __pyx_int_neg_1 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
return 0 ;
__pyx_L1_error : ;
return - 1 ;
}
static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code ( void ) ; /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code ( void ) ; /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code ( void ) ; /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code ( void ) ; /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code ( void ) ; /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code ( void ) ; /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code ( void ) ; /*proto*/
static int __Pyx_modinit_global_init_code ( void ) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " __Pyx_modinit_global_init_code " , 0 ) ;
/*--- Global init code ---*/
__Pyx_RefNannyFinishContext ( ) ;
return 0 ;
}
static int __Pyx_modinit_variable_export_code ( void ) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " __Pyx_modinit_variable_export_code " , 0 ) ;
/*--- Variable export code ---*/
__Pyx_RefNannyFinishContext ( ) ;
return 0 ;
}
static int __Pyx_modinit_function_export_code ( void ) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " __Pyx_modinit_function_export_code " , 0 ) ;
/*--- Function export code ---*/
__Pyx_RefNannyFinishContext ( ) ;
return 0 ;
}
static int __Pyx_modinit_type_init_code ( void ) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " __Pyx_modinit_type_init_code " , 0 ) ;
/*--- Type init code ---*/
__Pyx_RefNannyFinishContext ( ) ;
return 0 ;
}
static int __Pyx_modinit_type_import_code ( void ) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " __Pyx_modinit_type_import_code " , 0 ) ;
/*--- Type import code ---*/
__Pyx_RefNannyFinishContext ( ) ;
return 0 ;
}
static int __Pyx_modinit_variable_import_code ( void ) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " __Pyx_modinit_variable_import_code " , 0 ) ;
/*--- Variable import code ---*/
__Pyx_RefNannyFinishContext ( ) ;
return 0 ;
}
static int __Pyx_modinit_function_import_code ( void ) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext ( " __Pyx_modinit_function_import_code " , 0 ) ;
/*--- Function import code ---*/
__Pyx_RefNannyFinishContext ( ) ;
return 0 ;
}
# if PY_MAJOR_VERSION < 3
# ifdef CYTHON_NO_PYINIT_EXPORT
# define __Pyx_PyMODINIT_FUNC void
# else
# define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
# endif
# else
# ifdef CYTHON_NO_PYINIT_EXPORT
# define __Pyx_PyMODINIT_FUNC PyObject *
# else
# define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
# endif
# endif
# if PY_MAJOR_VERSION < 3
__Pyx_PyMODINIT_FUNC initdetect ( void ) CYTHON_SMALL_CODE ; /*proto*/
__Pyx_PyMODINIT_FUNC initdetect ( void )
# else
__Pyx_PyMODINIT_FUNC PyInit_detect ( void ) CYTHON_SMALL_CODE ; /*proto*/
__Pyx_PyMODINIT_FUNC PyInit_detect ( void )
# if CYTHON_PEP489_MULTI_PHASE_INIT
{
return PyModuleDef_Init ( & __pyx_moduledef ) ;
}
static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter ( void ) {
# if PY_VERSION_HEX >= 0x030700A1
static PY_INT64_T main_interpreter_id = - 1 ;
PY_INT64_T current_id = PyInterpreterState_GetID ( PyThreadState_Get ( ) - > interp ) ;
if ( main_interpreter_id = = - 1 ) {
main_interpreter_id = current_id ;
return ( unlikely ( current_id = = - 1 ) ) ? - 1 : 0 ;
} else if ( unlikely ( main_interpreter_id ! = current_id ) )
# else
static PyInterpreterState * main_interpreter = NULL ;
PyInterpreterState * current_interpreter = PyThreadState_Get ( ) - > interp ;
if ( ! main_interpreter ) {
main_interpreter = current_interpreter ;
} else if ( unlikely ( main_interpreter ! = current_interpreter ) )
# endif
{
PyErr_SetString (
PyExc_ImportError ,
" Interpreter change detected - this module can only be loaded into one interpreter per process. " ) ;
return - 1 ;
}
return 0 ;
}
static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module ( PyObject * spec , PyObject * moddict , const char * from_name , const char * to_name , int allow_none ) {
PyObject * value = PyObject_GetAttrString ( spec , from_name ) ;
int result = 0 ;
if ( likely ( value ) ) {
if ( allow_none | | value ! = Py_None ) {
result = PyDict_SetItemString ( moddict , to_name , value ) ;
}
Py_DECREF ( value ) ;
} else if ( PyErr_ExceptionMatches ( PyExc_AttributeError ) ) {
PyErr_Clear ( ) ;
} else {
result = - 1 ;
}
return result ;
}
static CYTHON_SMALL_CODE PyObject * __pyx_pymod_create ( PyObject * spec , CYTHON_UNUSED PyModuleDef * def ) {
PyObject * module = NULL , * moddict , * modname ;
if ( __Pyx_check_single_interpreter ( ) )
return NULL ;
if ( __pyx_m )
return __Pyx_NewRef ( __pyx_m ) ;
modname = PyObject_GetAttrString ( spec , " name " ) ;
if ( unlikely ( ! modname ) ) goto bad ;
module = PyModule_NewObject ( modname ) ;
Py_DECREF ( modname ) ;
if ( unlikely ( ! module ) ) goto bad ;
moddict = PyModule_GetDict ( module ) ;
if ( unlikely ( ! moddict ) ) goto bad ;
if ( unlikely ( __Pyx_copy_spec_to_module ( spec , moddict , " loader " , " __loader__ " , 1 ) < 0 ) ) goto bad ;
if ( unlikely ( __Pyx_copy_spec_to_module ( spec , moddict , " origin " , " __file__ " , 1 ) < 0 ) ) goto bad ;
if ( unlikely ( __Pyx_copy_spec_to_module ( spec , moddict , " parent " , " __package__ " , 1 ) < 0 ) ) goto bad ;
if ( unlikely ( __Pyx_copy_spec_to_module ( spec , moddict , " submodule_search_locations " , " __path__ " , 0 ) < 0 ) ) goto bad ;
return module ;
bad :
Py_XDECREF ( module ) ;
return NULL ;
}
static CYTHON_SMALL_CODE int __pyx_pymod_exec_detect ( PyObject * __pyx_pyinit_module )
# endif
# endif
{
PyObject * __pyx_t_1 = NULL ;
PyObject * __pyx_t_2 = NULL ;
__Pyx_RefNannyDeclarations
# if CYTHON_PEP489_MULTI_PHASE_INIT
if ( __pyx_m ) {
if ( __pyx_m = = __pyx_pyinit_module ) return 0 ;
PyErr_SetString ( PyExc_RuntimeError , " Module 'detect' has already been imported. Re-initialisation is not supported. " ) ;
return - 1 ;
}
# elif PY_MAJOR_VERSION >= 3
if ( __pyx_m ) return __Pyx_NewRef ( __pyx_m ) ;
# endif
# if CYTHON_REFNANNY
__Pyx_RefNanny = __Pyx_RefNannyImportAPI ( " refnanny " ) ;
if ( ! __Pyx_RefNanny ) {
PyErr_Clear ( ) ;
__Pyx_RefNanny = __Pyx_RefNannyImportAPI ( " Cython.Runtime.refnanny " ) ;
if ( ! __Pyx_RefNanny )
Py_FatalError ( " failed to import 'refnanny' module " ) ;
}
# endif
__Pyx_RefNannySetupContext ( " __Pyx_PyMODINIT_FUNC PyInit_detect(void) " , 0 ) ;
if ( __Pyx_check_binary_version ( ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
# ifdef __Pxy_PyFrame_Initialize_Offsets
__Pxy_PyFrame_Initialize_Offsets ( ) ;
# endif
__pyx_empty_tuple = PyTuple_New ( 0 ) ; if ( unlikely ( ! __pyx_empty_tuple ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_empty_bytes = PyBytes_FromStringAndSize ( " " , 0 ) ; if ( unlikely ( ! __pyx_empty_bytes ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__pyx_empty_unicode = PyUnicode_FromStringAndSize ( " " , 0 ) ; if ( unlikely ( ! __pyx_empty_unicode ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
# ifdef __Pyx_CyFunction_USED
if ( __pyx_CyFunction_init ( ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
# endif
# ifdef __Pyx_FusedFunction_USED
if ( __pyx_FusedFunction_init ( ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
# endif
# ifdef __Pyx_Coroutine_USED
if ( __pyx_Coroutine_init ( ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
# endif
# ifdef __Pyx_Generator_USED
if ( __pyx_Generator_init ( ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
# endif
# ifdef __Pyx_AsyncGen_USED
if ( __pyx_AsyncGen_init ( ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
# endif
# ifdef __Pyx_StopAsyncIteration_USED
if ( __pyx_StopAsyncIteration_init ( ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
# endif
/*--- Library function declarations ---*/
/*--- Threads initialization code ---*/
# if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
# ifdef WITH_THREAD /* Python build with threading support? */
PyEval_InitThreads ( ) ;
# endif
# endif
/*--- Module creation code ---*/
# if CYTHON_PEP489_MULTI_PHASE_INIT
__pyx_m = __pyx_pyinit_module ;
Py_INCREF ( __pyx_m ) ;
# else
# if PY_MAJOR_VERSION < 3
__pyx_m = Py_InitModule4 ( " detect " , __pyx_methods , 0 , 0 , PYTHON_API_VERSION ) ; Py_XINCREF ( __pyx_m ) ;
# else
__pyx_m = PyModule_Create ( & __pyx_moduledef ) ;
# endif
if ( unlikely ( ! __pyx_m ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
# endif
__pyx_d = PyModule_GetDict ( __pyx_m ) ; if ( unlikely ( ! __pyx_d ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
Py_INCREF ( __pyx_d ) ;
__pyx_b = PyImport_AddModule ( __Pyx_BUILTIN_MODULE_NAME ) ; if ( unlikely ( ! __pyx_b ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
Py_INCREF ( __pyx_b ) ;
__pyx_cython_runtime = PyImport_AddModule ( ( char * ) " cython_runtime " ) ; if ( unlikely ( ! __pyx_cython_runtime ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
Py_INCREF ( __pyx_cython_runtime ) ;
if ( PyObject_SetAttrString ( __pyx_m , " __builtins__ " , __pyx_b ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error ) ;
/*--- Initialize various global constants etc. ---*/
if ( __Pyx_InitGlobals ( ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
# if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
if ( __Pyx_init_sys_getdefaultencoding_params ( ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
# endif
if ( __pyx_module_is_main_detect ) {
if ( PyObject_SetAttr ( __pyx_m , __pyx_n_s_name , __pyx_n_s_main ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
}
# if PY_MAJOR_VERSION >= 3
{
PyObject * modules = PyImport_GetModuleDict ( ) ; if ( unlikely ( ! modules ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
if ( ! PyDict_GetItemString ( modules , " detect " ) ) {
if ( unlikely ( PyDict_SetItemString ( modules , " detect " , __pyx_m ) < 0 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
}
}
# endif
/*--- Builtin init code ---*/
if ( __Pyx_InitCachedBuiltins ( ) < 0 ) goto __pyx_L1_error ;
/*--- Constants init code ---*/
if ( __Pyx_InitCachedConstants ( ) < 0 ) goto __pyx_L1_error ;
/*--- Global type/function init code ---*/
( void ) __Pyx_modinit_global_init_code ( ) ;
( void ) __Pyx_modinit_variable_export_code ( ) ;
( void ) __Pyx_modinit_function_export_code ( ) ;
( void ) __Pyx_modinit_type_init_code ( ) ;
( void ) __Pyx_modinit_type_import_code ( ) ;
( void ) __Pyx_modinit_variable_import_code ( ) ;
( void ) __Pyx_modinit_function_import_code ( ) ;
/*--- Execution code ---*/
# if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
if ( __Pyx_patch_abc ( ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
# endif
/* "detect.py":3
* # import the necessary packages
* # from imutils import perspective
* from imutils import contours # < < < < < < < < < < < < < <
* import numpy as np
* import argparse
*/
__pyx_t_1 = PyList_New ( 1 ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 3 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
__Pyx_INCREF ( __pyx_n_s_contours ) ;
__Pyx_GIVEREF ( __pyx_n_s_contours ) ;
PyList_SET_ITEM ( __pyx_t_1 , 0 , __pyx_n_s_contours ) ;
__pyx_t_2 = __Pyx_Import ( __pyx_n_s_imutils , __pyx_t_1 , - 1 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 3 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__pyx_t_1 = __Pyx_ImportFrom ( __pyx_t_2 , __pyx_n_s_contours ) ; if ( unlikely ( ! __pyx_t_1 ) ) __PYX_ERR ( 0 , 3 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_1 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_contours , __pyx_t_1 ) < 0 ) __PYX_ERR ( 0 , 3 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_1 ) ; __pyx_t_1 = 0 ;
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":4
* # from imutils import perspective
* from imutils import contours
* import numpy as np # < < < < < < < < < < < < < <
* import argparse
* import imutils
*/
__pyx_t_2 = __Pyx_Import ( __pyx_n_s_numpy , 0 , - 1 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 4 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_np , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 4 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":5
* from imutils import contours
* import numpy as np
* import argparse # < < < < < < < < < < < < < <
* import imutils
* import cv2
*/
__pyx_t_2 = __Pyx_Import ( __pyx_n_s_argparse , 0 , - 1 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 5 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_argparse , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 5 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":6
* import numpy as np
* import argparse
* import imutils # < < < < < < < < < < < < < <
* import cv2
* import math
*/
__pyx_t_2 = __Pyx_Import ( __pyx_n_s_imutils , 0 , - 1 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 6 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_imutils , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 6 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":7
* import argparse
* import imutils
* import cv2 # < < < < < < < < < < < < < <
* import math
* import time
*/
__pyx_t_2 = __Pyx_Import ( __pyx_n_s_cv2 , 0 , - 1 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 7 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_cv2 , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 7 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":8
* import imutils
* import cv2
* import math # < < < < < < < < < < < < < <
* import time
*
*/
__pyx_t_2 = __Pyx_Import ( __pyx_n_s_math , 0 , - 1 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 8 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_math , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 8 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":9
* import cv2
* import math
* import time # < < < < < < < < < < < < < <
*
* itemw = 0
*/
__pyx_t_2 = __Pyx_Import ( __pyx_n_s_time , 0 , - 1 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 9 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_time , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 9 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":11
* import time
*
* itemw = 0 # < < < < < < < < < < < < < <
* itemh = 0
*
*/
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_itemw , __pyx_int_0 ) < 0 ) __PYX_ERR ( 0 , 11 , __pyx_L1_error )
/* "detect.py":12
*
* itemw = 0
* itemh = 0 # < < < < < < < < < < < < < <
*
*
*/
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_itemh , __pyx_int_0 ) < 0 ) __PYX_ERR ( 0 , 12 , __pyx_L1_error )
/* "detect.py":15
*
*
* def midpoint ( ptA , ptB ) : # < < < < < < < < < < < < < <
* return ( ( ptA [ 0 ] + ptB [ 0 ] ) * 0.5 , ( ptA [ 1 ] + ptB [ 1 ] ) * 0.5 )
*
*/
__pyx_t_2 = __Pyx_CyFunction_NewEx ( & __pyx_mdef_6detect_1midpoint , 0 , __pyx_n_s_midpoint , NULL , __pyx_n_s_detect , __pyx_d , ( ( PyObject * ) __pyx_codeobj__10 ) ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 15 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_midpoint , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 15 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":19
*
*
* def sizeVexScrew ( iteml ) : # < < < < < < < < < < < < < <
* # Screw Sizing code
* # subtract screw head size to find thread length
*/
__pyx_t_2 = __Pyx_CyFunction_NewEx ( & __pyx_mdef_6detect_3sizeVexScrew , 0 , __pyx_n_s_sizeVexScrew , NULL , __pyx_n_s_detect , __pyx_d , ( ( PyObject * ) __pyx_codeobj__12 ) ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 19 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_sizeVexScrew , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 19 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":31
*
*
* def sizeStandoff ( iteml ) : # < < < < < < < < < < < < < <
* # Standoff Sizing code
* iteml * = 2
*/
__pyx_t_2 = __Pyx_CyFunction_NewEx ( & __pyx_mdef_6detect_5sizeStandoff , 0 , __pyx_n_s_sizeStandoff , NULL , __pyx_n_s_detect , __pyx_d , ( ( PyObject * ) __pyx_codeobj__14 ) ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 31 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_sizeStandoff , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 31 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":39
*
*
* def larger ( a , b ) : # < < < < < < < < < < < < < <
* if a > = b :
* return a
*/
__pyx_t_2 = __Pyx_CyFunction_NewEx ( & __pyx_mdef_6detect_7larger , 0 , __pyx_n_s_larger , NULL , __pyx_n_s_detect , __pyx_d , ( ( PyObject * ) __pyx_codeobj__16 ) ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 39 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_larger , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 39 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":46
*
*
* def smaller ( a , b ) : # < < < < < < < < < < < < < <
* if a < b :
* return a
*/
__pyx_t_2 = __Pyx_CyFunction_NewEx ( & __pyx_mdef_6detect_9smaller , 0 , __pyx_n_s_smaller , NULL , __pyx_n_s_detect , __pyx_d , ( ( PyObject * ) __pyx_codeobj__18 ) ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 46 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_smaller , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 46 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":53
*
*
* def near ( a , b , close ) : # < < < < < < < < < < < < < <
* if abs ( a - b ) < close :
* return True
*/
__pyx_t_2 = __Pyx_CyFunction_NewEx ( & __pyx_mdef_6detect_11near , 0 , __pyx_n_s_near , NULL , __pyx_n_s_detect , __pyx_d , ( ( PyObject * ) __pyx_codeobj__20 ) ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 53 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_near , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 53 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":59
*
*
* def swap ( a , b ) : # < < < < < < < < < < < < < <
* tmp = a
* a = b
*/
__pyx_t_2 = __Pyx_CyFunction_NewEx ( & __pyx_mdef_6detect_13swap , 0 , __pyx_n_s_swap , NULL , __pyx_n_s_detect , __pyx_d , ( ( PyObject * ) __pyx_codeobj__22 ) ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 59 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_swap , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 59 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":78
* args = vars ( ap . parse_args ( ) )
* args2 = ap . parse_args ( ) " " "
* def detect ( calibration_width , img_file , show , quick ) : # < < < < < < < < < < < < < <
* list = [ ]
* # if type ( args [ " number " ] ) = = type ( selected ) :
*/
__pyx_t_2 = __Pyx_CyFunction_NewEx ( & __pyx_mdef_6detect_15detect , 0 , __pyx_n_s_detect , NULL , __pyx_n_s_detect , __pyx_d , ( ( PyObject * ) __pyx_codeobj__24 ) ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 78 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_detect , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 78 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/* "detect.py":1
* # import the necessary packages # < < < < < < < < < < < < < <
* # from imutils import perspective
* from imutils import contours
*/
__pyx_t_2 = __Pyx_PyDict_NewPresized ( 0 ) ; if ( unlikely ( ! __pyx_t_2 ) ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__Pyx_GOTREF ( __pyx_t_2 ) ;
if ( PyDict_SetItem ( __pyx_d , __pyx_n_s_test , __pyx_t_2 ) < 0 ) __PYX_ERR ( 0 , 1 , __pyx_L1_error )
__Pyx_DECREF ( __pyx_t_2 ) ; __pyx_t_2 = 0 ;
/*--- Wrapped vars code ---*/
goto __pyx_L0 ;
__pyx_L1_error : ;
__Pyx_XDECREF ( __pyx_t_1 ) ;
__Pyx_XDECREF ( __pyx_t_2 ) ;
if ( __pyx_m ) {
if ( __pyx_d ) {
__Pyx_AddTraceback ( " init detect " , __pyx_clineno , __pyx_lineno , __pyx_filename ) ;
}
Py_CLEAR ( __pyx_m ) ;
} else if ( ! PyErr_Occurred ( ) ) {
PyErr_SetString ( PyExc_ImportError , " init detect " ) ;
}
__pyx_L0 : ;
__Pyx_RefNannyFinishContext ( ) ;
# if CYTHON_PEP489_MULTI_PHASE_INIT
return ( __pyx_m ! = NULL ) ? 0 : - 1 ;
# elif PY_MAJOR_VERSION >= 3
return __pyx_m ;
# else
return ;
# endif
}
/* --- Runtime support code --- */
/* Refnanny */
# if CYTHON_REFNANNY
static __Pyx_RefNannyAPIStruct * __Pyx_RefNannyImportAPI ( const char * modname ) {
PyObject * m = NULL , * p = NULL ;
void * r = NULL ;
m = PyImport_ImportModule ( modname ) ;
if ( ! m ) goto end ;
p = PyObject_GetAttrString ( m , " RefNannyAPI " ) ;
if ( ! p ) goto end ;
r = PyLong_AsVoidPtr ( p ) ;
end :
Py_XDECREF ( p ) ;
Py_XDECREF ( m ) ;
return ( __Pyx_RefNannyAPIStruct * ) r ;
}
# endif
/* PyObjectGetAttrStr */
# if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject * __Pyx_PyObject_GetAttrStr ( PyObject * obj , PyObject * attr_name ) {
PyTypeObject * tp = Py_TYPE ( obj ) ;
if ( likely ( tp - > tp_getattro ) )
return tp - > tp_getattro ( obj , attr_name ) ;
# if PY_MAJOR_VERSION < 3
if ( likely ( tp - > tp_getattr ) )
return tp - > tp_getattr ( obj , PyString_AS_STRING ( attr_name ) ) ;
# endif
return PyObject_GetAttr ( obj , attr_name ) ;
}
# endif
/* GetBuiltinName */
static PyObject * __Pyx_GetBuiltinName ( PyObject * name ) {
PyObject * result = __Pyx_PyObject_GetAttrStr ( __pyx_b , name ) ;
if ( unlikely ( ! result ) ) {
PyErr_Format ( PyExc_NameError ,
# if PY_MAJOR_VERSION >= 3
" name '%U' is not defined " , name ) ;
# else
" name '%.200s' is not defined " , PyString_AS_STRING ( name ) ) ;
# endif
}
return result ;
}
/* RaiseArgTupleInvalid */
static void __Pyx_RaiseArgtupleInvalid (
const char * func_name ,
int exact ,
Py_ssize_t num_min ,
Py_ssize_t num_max ,
Py_ssize_t num_found )
{
Py_ssize_t num_expected ;
const char * more_or_less ;
if ( num_found < num_min ) {
num_expected = num_min ;
more_or_less = " at least " ;
} else {
num_expected = num_max ;
more_or_less = " at most " ;
}
if ( exact ) {
more_or_less = " exactly " ;
}
PyErr_Format ( PyExc_TypeError ,
" %.200s() takes %.8s % " CYTHON_FORMAT_SSIZE_T " d positional argument%.1s (% " CYTHON_FORMAT_SSIZE_T " d given) " ,
func_name , more_or_less , num_expected ,
( num_expected = = 1 ) ? " " : " s " , num_found ) ;
}
/* RaiseDoubleKeywords */
static void __Pyx_RaiseDoubleKeywordsError (
const char * func_name ,
PyObject * kw_name )
{
PyErr_Format ( PyExc_TypeError ,
# if PY_MAJOR_VERSION >= 3
" %s() got multiple values for keyword argument '%U' " , func_name , kw_name ) ;
# else
" %s() got multiple values for keyword argument '%s' " , func_name ,
PyString_AsString ( kw_name ) ) ;
# endif
}
/* ParseKeywords */
static int __Pyx_ParseOptionalKeywords (
PyObject * kwds ,
PyObject * * argnames [ ] ,
PyObject * kwds2 ,
PyObject * values [ ] ,
Py_ssize_t num_pos_args ,
const char * function_name )
{
PyObject * key = 0 , * value = 0 ;
Py_ssize_t pos = 0 ;
PyObject * * * name ;
PyObject * * * first_kw_arg = argnames + num_pos_args ;
while ( PyDict_Next ( kwds , & pos , & key , & value ) ) {
name = first_kw_arg ;
while ( * name & & ( * * name ! = key ) ) name + + ;
if ( * name ) {
values [ name - argnames ] = value ;
continue ;
}
name = first_kw_arg ;
# if PY_MAJOR_VERSION < 3
if ( likely ( PyString_CheckExact ( key ) ) | | likely ( PyString_Check ( key ) ) ) {
while ( * name ) {
if ( ( CYTHON_COMPILING_IN_PYPY | | PyString_GET_SIZE ( * * name ) = = PyString_GET_SIZE ( key ) )
& & _PyString_Eq ( * * name , key ) ) {
values [ name - argnames ] = value ;
break ;
}
name + + ;
}
if ( * name ) continue ;
else {
PyObject * * * argname = argnames ;
while ( argname ! = first_kw_arg ) {
if ( ( * * argname = = key ) | | (
( CYTHON_COMPILING_IN_PYPY | | PyString_GET_SIZE ( * * argname ) = = PyString_GET_SIZE ( key ) )
& & _PyString_Eq ( * * argname , key ) ) ) {
goto arg_passed_twice ;
}
argname + + ;
}
}
} else
# endif
if ( likely ( PyUnicode_Check ( key ) ) ) {
while ( * name ) {
int cmp = ( * * name = = key ) ? 0 :
# if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
( PyUnicode_GET_SIZE ( * * name ) ! = PyUnicode_GET_SIZE ( key ) ) ? 1 :
# endif
PyUnicode_Compare ( * * name , key ) ;
if ( cmp < 0 & & unlikely ( PyErr_Occurred ( ) ) ) goto bad ;
if ( cmp = = 0 ) {
values [ name - argnames ] = value ;
break ;
}
name + + ;
}
if ( * name ) continue ;
else {
PyObject * * * argname = argnames ;
while ( argname ! = first_kw_arg ) {
int cmp = ( * * argname = = key ) ? 0 :
# if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
( PyUnicode_GET_SIZE ( * * argname ) ! = PyUnicode_GET_SIZE ( key ) ) ? 1 :
# endif
PyUnicode_Compare ( * * argname , key ) ;
if ( cmp < 0 & & unlikely ( PyErr_Occurred ( ) ) ) goto bad ;
if ( cmp = = 0 ) goto arg_passed_twice ;
argname + + ;
}
}
} else
goto invalid_keyword_type ;
if ( kwds2 ) {
if ( unlikely ( PyDict_SetItem ( kwds2 , key , value ) ) ) goto bad ;
} else {
goto invalid_keyword ;
}
}
return 0 ;
arg_passed_twice :
__Pyx_RaiseDoubleKeywordsError ( function_name , key ) ;
goto bad ;
invalid_keyword_type :
PyErr_Format ( PyExc_TypeError ,
" %.200s() keywords must be strings " , function_name ) ;
goto bad ;
invalid_keyword :
PyErr_Format ( PyExc_TypeError ,
# if PY_MAJOR_VERSION < 3
" %.200s() got an unexpected keyword argument '%.200s' " ,
function_name , PyString_AsString ( key ) ) ;
# else
" %s() got an unexpected keyword argument '%U' " ,
function_name , key ) ;
# endif
bad :
return - 1 ;
}
/* GetItemInt */
static PyObject * __Pyx_GetItemInt_Generic ( PyObject * o , PyObject * j ) {
PyObject * r ;
if ( ! j ) return NULL ;
r = PyObject_GetItem ( o , j ) ;
Py_DECREF ( j ) ;
return r ;
}
static CYTHON_INLINE PyObject * __Pyx_GetItemInt_List_Fast ( PyObject * o , Py_ssize_t i ,
CYTHON_NCP_UNUSED int wraparound ,
CYTHON_NCP_UNUSED int boundscheck ) {
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
Py_ssize_t wrapped_i = i ;
if ( wraparound & unlikely ( i < 0 ) ) {
wrapped_i + = PyList_GET_SIZE ( o ) ;
}
if ( ( ! boundscheck ) | | likely ( __Pyx_is_valid_index ( wrapped_i , PyList_GET_SIZE ( o ) ) ) ) {
PyObject * r = PyList_GET_ITEM ( o , wrapped_i ) ;
Py_INCREF ( r ) ;
return r ;
}
return __Pyx_GetItemInt_Generic ( o , PyInt_FromSsize_t ( i ) ) ;
# else
return PySequence_GetItem ( o , i ) ;
# endif
}
static CYTHON_INLINE PyObject * __Pyx_GetItemInt_Tuple_Fast ( PyObject * o , Py_ssize_t i ,
CYTHON_NCP_UNUSED int wraparound ,
CYTHON_NCP_UNUSED int boundscheck ) {
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
Py_ssize_t wrapped_i = i ;
if ( wraparound & unlikely ( i < 0 ) ) {
wrapped_i + = PyTuple_GET_SIZE ( o ) ;
}
if ( ( ! boundscheck ) | | likely ( __Pyx_is_valid_index ( wrapped_i , PyTuple_GET_SIZE ( o ) ) ) ) {
PyObject * r = PyTuple_GET_ITEM ( o , wrapped_i ) ;
Py_INCREF ( r ) ;
return r ;
}
return __Pyx_GetItemInt_Generic ( o , PyInt_FromSsize_t ( i ) ) ;
# else
return PySequence_GetItem ( o , i ) ;
# endif
}
static CYTHON_INLINE PyObject * __Pyx_GetItemInt_Fast ( PyObject * o , Py_ssize_t i , int is_list ,
CYTHON_NCP_UNUSED int wraparound ,
CYTHON_NCP_UNUSED int boundscheck ) {
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if ( is_list | | PyList_CheckExact ( o ) ) {
Py_ssize_t n = ( ( ! wraparound ) | likely ( i > = 0 ) ) ? i : i + PyList_GET_SIZE ( o ) ;
if ( ( ! boundscheck ) | | ( likely ( __Pyx_is_valid_index ( n , PyList_GET_SIZE ( o ) ) ) ) ) {
PyObject * r = PyList_GET_ITEM ( o , n ) ;
Py_INCREF ( r ) ;
return r ;
}
}
else if ( PyTuple_CheckExact ( o ) ) {
Py_ssize_t n = ( ( ! wraparound ) | likely ( i > = 0 ) ) ? i : i + PyTuple_GET_SIZE ( o ) ;
if ( ( ! boundscheck ) | | likely ( __Pyx_is_valid_index ( n , PyTuple_GET_SIZE ( o ) ) ) ) {
PyObject * r = PyTuple_GET_ITEM ( o , n ) ;
Py_INCREF ( r ) ;
return r ;
}
} else {
PySequenceMethods * m = Py_TYPE ( o ) - > tp_as_sequence ;
if ( likely ( m & & m - > sq_item ) ) {
if ( wraparound & & unlikely ( i < 0 ) & & likely ( m - > sq_length ) ) {
Py_ssize_t l = m - > sq_length ( o ) ;
if ( likely ( l > = 0 ) ) {
i + = l ;
} else {
if ( ! PyErr_ExceptionMatches ( PyExc_OverflowError ) )
return NULL ;
PyErr_Clear ( ) ;
}
}
return m - > sq_item ( o , i ) ;
}
}
# else
if ( is_list | | PySequence_Check ( o ) ) {
return PySequence_GetItem ( o , i ) ;
}
# endif
return __Pyx_GetItemInt_Generic ( o , PyInt_FromSsize_t ( i ) ) ;
}
/* PyCFunctionFastCall */
# if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall ( PyObject * func_obj , PyObject * * args , Py_ssize_t nargs ) {
PyCFunctionObject * func = ( PyCFunctionObject * ) func_obj ;
PyCFunction meth = PyCFunction_GET_FUNCTION ( func ) ;
PyObject * self = PyCFunction_GET_SELF ( func ) ;
int flags = PyCFunction_GET_FLAGS ( func ) ;
assert ( PyCFunction_Check ( func ) ) ;
assert ( METH_FASTCALL = = ( flags & ~ ( METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS ) ) ) ;
assert ( nargs > = 0 ) ;
assert ( nargs = = 0 | | args ! = NULL ) ;
/* _PyCFunction_FastCallDict() must not be called with an exception set,
because it may clear it ( directly or indirectly ) and so the
caller loses its exception */
assert ( ! PyErr_Occurred ( ) ) ;
if ( ( PY_VERSION_HEX < 0x030700A0 ) | | unlikely ( flags & METH_KEYWORDS ) ) {
return ( * ( ( __Pyx_PyCFunctionFastWithKeywords ) ( void * ) meth ) ) ( self , args , nargs , NULL ) ;
} else {
return ( * ( ( __Pyx_PyCFunctionFast ) ( void * ) meth ) ) ( self , args , nargs ) ;
}
}
# endif
/* PyFunctionFastCall */
# if CYTHON_FAST_PYCALL
static PyObject * __Pyx_PyFunction_FastCallNoKw ( PyCodeObject * co , PyObject * * args , Py_ssize_t na ,
PyObject * globals ) {
PyFrameObject * f ;
PyThreadState * tstate = __Pyx_PyThreadState_Current ;
PyObject * * fastlocals ;
Py_ssize_t i ;
PyObject * result ;
assert ( globals ! = NULL ) ;
/* XXX Perhaps we should create a specialized
PyFrame_New ( ) that doesn ' t take locals , but does
take builtins without sanity checking them .
*/
assert ( tstate ! = NULL ) ;
f = PyFrame_New ( tstate , co , globals , NULL ) ;
if ( f = = NULL ) {
return NULL ;
}
fastlocals = __Pyx_PyFrame_GetLocalsplus ( f ) ;
for ( i = 0 ; i < na ; i + + ) {
Py_INCREF ( * args ) ;
fastlocals [ i ] = * args + + ;
}
result = PyEval_EvalFrameEx ( f , 0 ) ;
+ + tstate - > recursion_depth ;
Py_DECREF ( f ) ;
- - tstate - > recursion_depth ;
return result ;
}
# if 1 || PY_VERSION_HEX < 0x030600B1
static PyObject * __Pyx_PyFunction_FastCallDict ( PyObject * func , PyObject * * args , Py_ssize_t nargs , PyObject * kwargs ) {
PyCodeObject * co = ( PyCodeObject * ) PyFunction_GET_CODE ( func ) ;
PyObject * globals = PyFunction_GET_GLOBALS ( func ) ;
PyObject * argdefs = PyFunction_GET_DEFAULTS ( func ) ;
PyObject * closure ;
# if PY_MAJOR_VERSION >= 3
PyObject * kwdefs ;
# endif
PyObject * kwtuple , * * k ;
PyObject * * d ;
Py_ssize_t nd ;
Py_ssize_t nk ;
PyObject * result ;
assert ( kwargs = = NULL | | PyDict_Check ( kwargs ) ) ;
nk = kwargs ? PyDict_Size ( kwargs ) : 0 ;
if ( Py_EnterRecursiveCall ( ( char * ) " while calling a Python object " ) ) {
return NULL ;
}
if (
# if PY_MAJOR_VERSION >= 3
co - > co_kwonlyargcount = = 0 & &
# endif
likely ( kwargs = = NULL | | nk = = 0 ) & &
co - > co_flags = = ( CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ) ) {
if ( argdefs = = NULL & & co - > co_argcount = = nargs ) {
result = __Pyx_PyFunction_FastCallNoKw ( co , args , nargs , globals ) ;
goto done ;
}
else if ( nargs = = 0 & & argdefs ! = NULL
& & co - > co_argcount = = Py_SIZE ( argdefs ) ) {
/* function called with no arguments, but all parameters have
a default value : use default values as arguments . */
args = & PyTuple_GET_ITEM ( argdefs , 0 ) ;
result = __Pyx_PyFunction_FastCallNoKw ( co , args , Py_SIZE ( argdefs ) , globals ) ;
goto done ;
}
}
if ( kwargs ! = NULL ) {
Py_ssize_t pos , i ;
kwtuple = PyTuple_New ( 2 * nk ) ;
if ( kwtuple = = NULL ) {
result = NULL ;
goto done ;
}
k = & PyTuple_GET_ITEM ( kwtuple , 0 ) ;
pos = i = 0 ;
while ( PyDict_Next ( kwargs , & pos , & k [ i ] , & k [ i + 1 ] ) ) {
Py_INCREF ( k [ i ] ) ;
Py_INCREF ( k [ i + 1 ] ) ;
i + = 2 ;
}
nk = i / 2 ;
}
else {
kwtuple = NULL ;
k = NULL ;
}
closure = PyFunction_GET_CLOSURE ( func ) ;
# if PY_MAJOR_VERSION >= 3
kwdefs = PyFunction_GET_KW_DEFAULTS ( func ) ;
# endif
if ( argdefs ! = NULL ) {
d = & PyTuple_GET_ITEM ( argdefs , 0 ) ;
nd = Py_SIZE ( argdefs ) ;
}
else {
d = NULL ;
nd = 0 ;
}
# if PY_MAJOR_VERSION >= 3
result = PyEval_EvalCodeEx ( ( PyObject * ) co , globals , ( PyObject * ) NULL ,
args , ( int ) nargs ,
k , ( int ) nk ,
d , ( int ) nd , kwdefs , closure ) ;
# else
result = PyEval_EvalCodeEx ( co , globals , ( PyObject * ) NULL ,
args , ( int ) nargs ,
k , ( int ) nk ,
d , ( int ) nd , closure ) ;
# endif
Py_XDECREF ( kwtuple ) ;
done :
Py_LeaveRecursiveCall ( ) ;
return result ;
}
# endif
# endif
/* PyObjectCall */
# if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject * __Pyx_PyObject_Call ( PyObject * func , PyObject * arg , PyObject * kw ) {
PyObject * result ;
ternaryfunc call = func - > ob_type - > tp_call ;
if ( unlikely ( ! call ) )
return PyObject_Call ( func , arg , kw ) ;
if ( unlikely ( Py_EnterRecursiveCall ( ( char * ) " while calling a Python object " ) ) )
return NULL ;
result = ( * call ) ( func , arg , kw ) ;
Py_LeaveRecursiveCall ( ) ;
if ( unlikely ( ! result ) & & unlikely ( ! PyErr_Occurred ( ) ) ) {
PyErr_SetString (
PyExc_SystemError ,
" NULL result without error in PyObject_Call " ) ;
}
return result ;
}
# endif
/* PyObjectCallMethO */
# if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject * __Pyx_PyObject_CallMethO ( PyObject * func , PyObject * arg ) {
PyObject * self , * result ;
PyCFunction cfunc ;
cfunc = PyCFunction_GET_FUNCTION ( func ) ;
self = PyCFunction_GET_SELF ( func ) ;
if ( unlikely ( Py_EnterRecursiveCall ( ( char * ) " while calling a Python object " ) ) )
return NULL ;
result = cfunc ( self , arg ) ;
Py_LeaveRecursiveCall ( ) ;
if ( unlikely ( ! result ) & & unlikely ( ! PyErr_Occurred ( ) ) ) {
PyErr_SetString (
PyExc_SystemError ,
" NULL result without error in PyObject_Call " ) ;
}
return result ;
}
# endif
/* PyObjectCallOneArg */
# if CYTHON_COMPILING_IN_CPYTHON
static PyObject * __Pyx__PyObject_CallOneArg ( PyObject * func , PyObject * arg ) {
PyObject * result ;
PyObject * args = PyTuple_New ( 1 ) ;
if ( unlikely ( ! args ) ) return NULL ;
Py_INCREF ( arg ) ;
PyTuple_SET_ITEM ( args , 0 , arg ) ;
result = __Pyx_PyObject_Call ( func , args , NULL ) ;
Py_DECREF ( args ) ;
return result ;
}
static CYTHON_INLINE PyObject * __Pyx_PyObject_CallOneArg ( PyObject * func , PyObject * arg ) {
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( func ) ) {
return __Pyx_PyFunction_FastCall ( func , & arg , 1 ) ;
}
# endif
if ( likely ( PyCFunction_Check ( func ) ) ) {
if ( likely ( PyCFunction_GET_FLAGS ( func ) & METH_O ) ) {
return __Pyx_PyObject_CallMethO ( func , arg ) ;
# if CYTHON_FAST_PYCCALL
} else if ( PyCFunction_GET_FLAGS ( func ) & METH_FASTCALL ) {
return __Pyx_PyCFunction_FastCall ( func , & arg , 1 ) ;
# endif
}
}
return __Pyx__PyObject_CallOneArg ( func , arg ) ;
}
# else
static CYTHON_INLINE PyObject * __Pyx_PyObject_CallOneArg ( PyObject * func , PyObject * arg ) {
PyObject * result ;
PyObject * args = PyTuple_Pack ( 1 , arg ) ;
if ( unlikely ( ! args ) ) return NULL ;
result = __Pyx_PyObject_Call ( func , args , NULL ) ;
Py_DECREF ( args ) ;
return result ;
}
# endif
/* py_abs */
# if CYTHON_USE_PYLONG_INTERNALS
static PyObject * __Pyx_PyLong_AbsNeg ( PyObject * n ) {
if ( likely ( Py_SIZE ( n ) = = - 1 ) ) {
return PyLong_FromLong ( ( ( PyLongObject * ) n ) - > ob_digit [ 0 ] ) ;
}
# if CYTHON_COMPILING_IN_CPYTHON
{
PyObject * copy = _PyLong_Copy ( ( PyLongObject * ) n ) ;
if ( likely ( copy ) ) {
Py_SIZE ( copy ) = - ( Py_SIZE ( copy ) ) ;
}
return copy ;
}
# else
return PyNumber_Negative ( n ) ;
# endif
}
# endif
/* BytesEquals */
static CYTHON_INLINE int __Pyx_PyBytes_Equals ( PyObject * s1 , PyObject * s2 , int equals ) {
# if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool ( s1 , s2 , equals ) ;
# else
if ( s1 = = s2 ) {
return ( equals = = Py_EQ ) ;
} else if ( PyBytes_CheckExact ( s1 ) & PyBytes_CheckExact ( s2 ) ) {
const char * ps1 , * ps2 ;
Py_ssize_t length = PyBytes_GET_SIZE ( s1 ) ;
if ( length ! = PyBytes_GET_SIZE ( s2 ) )
return ( equals = = Py_NE ) ;
ps1 = PyBytes_AS_STRING ( s1 ) ;
ps2 = PyBytes_AS_STRING ( s2 ) ;
if ( ps1 [ 0 ] ! = ps2 [ 0 ] ) {
return ( equals = = Py_NE ) ;
} else if ( length = = 1 ) {
return ( equals = = Py_EQ ) ;
} else {
int result ;
# if CYTHON_USE_UNICODE_INTERNALS
Py_hash_t hash1 , hash2 ;
hash1 = ( ( PyBytesObject * ) s1 ) - > ob_shash ;
hash2 = ( ( PyBytesObject * ) s2 ) - > ob_shash ;
if ( hash1 ! = hash2 & & hash1 ! = - 1 & & hash2 ! = - 1 ) {
return ( equals = = Py_NE ) ;
}
# endif
result = memcmp ( ps1 , ps2 , ( size_t ) length ) ;
return ( equals = = Py_EQ ) ? ( result = = 0 ) : ( result ! = 0 ) ;
}
} else if ( ( s1 = = Py_None ) & PyBytes_CheckExact ( s2 ) ) {
return ( equals = = Py_NE ) ;
} else if ( ( s2 = = Py_None ) & PyBytes_CheckExact ( s1 ) ) {
return ( equals = = Py_NE ) ;
} else {
int result ;
PyObject * py_result = PyObject_RichCompare ( s1 , s2 , equals ) ;
if ( ! py_result )
return - 1 ;
result = __Pyx_PyObject_IsTrue ( py_result ) ;
Py_DECREF ( py_result ) ;
return result ;
}
# endif
}
/* UnicodeEquals */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals ( PyObject * s1 , PyObject * s2 , int equals ) {
# if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool ( s1 , s2 , equals ) ;
# else
# if PY_MAJOR_VERSION < 3
PyObject * owned_ref = NULL ;
# endif
int s1_is_unicode , s2_is_unicode ;
if ( s1 = = s2 ) {
goto return_eq ;
}
s1_is_unicode = PyUnicode_CheckExact ( s1 ) ;
s2_is_unicode = PyUnicode_CheckExact ( s2 ) ;
# if PY_MAJOR_VERSION < 3
if ( ( s1_is_unicode & ( ! s2_is_unicode ) ) & & PyString_CheckExact ( s2 ) ) {
owned_ref = PyUnicode_FromObject ( s2 ) ;
if ( unlikely ( ! owned_ref ) )
return - 1 ;
s2 = owned_ref ;
s2_is_unicode = 1 ;
} else if ( ( s2_is_unicode & ( ! s1_is_unicode ) ) & & PyString_CheckExact ( s1 ) ) {
owned_ref = PyUnicode_FromObject ( s1 ) ;
if ( unlikely ( ! owned_ref ) )
return - 1 ;
s1 = owned_ref ;
s1_is_unicode = 1 ;
} else if ( ( ( ! s2_is_unicode ) & ( ! s1_is_unicode ) ) ) {
return __Pyx_PyBytes_Equals ( s1 , s2 , equals ) ;
}
# endif
if ( s1_is_unicode & s2_is_unicode ) {
Py_ssize_t length ;
int kind ;
void * data1 , * data2 ;
if ( unlikely ( __Pyx_PyUnicode_READY ( s1 ) < 0 ) | | unlikely ( __Pyx_PyUnicode_READY ( s2 ) < 0 ) )
return - 1 ;
length = __Pyx_PyUnicode_GET_LENGTH ( s1 ) ;
if ( length ! = __Pyx_PyUnicode_GET_LENGTH ( s2 ) ) {
goto return_ne ;
}
# if CYTHON_USE_UNICODE_INTERNALS
{
Py_hash_t hash1 , hash2 ;
# if CYTHON_PEP393_ENABLED
hash1 = ( ( PyASCIIObject * ) s1 ) - > hash ;
hash2 = ( ( PyASCIIObject * ) s2 ) - > hash ;
# else
hash1 = ( ( PyUnicodeObject * ) s1 ) - > hash ;
hash2 = ( ( PyUnicodeObject * ) s2 ) - > hash ;
# endif
if ( hash1 ! = hash2 & & hash1 ! = - 1 & & hash2 ! = - 1 ) {
goto return_ne ;
}
}
# endif
kind = __Pyx_PyUnicode_KIND ( s1 ) ;
if ( kind ! = __Pyx_PyUnicode_KIND ( s2 ) ) {
goto return_ne ;
}
data1 = __Pyx_PyUnicode_DATA ( s1 ) ;
data2 = __Pyx_PyUnicode_DATA ( s2 ) ;
if ( __Pyx_PyUnicode_READ ( kind , data1 , 0 ) ! = __Pyx_PyUnicode_READ ( kind , data2 , 0 ) ) {
goto return_ne ;
} else if ( length = = 1 ) {
goto return_eq ;
} else {
int result = memcmp ( data1 , data2 , ( size_t ) ( length * kind ) ) ;
# if PY_MAJOR_VERSION < 3
Py_XDECREF ( owned_ref ) ;
# endif
return ( equals = = Py_EQ ) ? ( result = = 0 ) : ( result ! = 0 ) ;
}
} else if ( ( s1 = = Py_None ) & s2_is_unicode ) {
goto return_ne ;
} else if ( ( s2 = = Py_None ) & s1_is_unicode ) {
goto return_ne ;
} else {
int result ;
PyObject * py_result = PyObject_RichCompare ( s1 , s2 , equals ) ;
# if PY_MAJOR_VERSION < 3
Py_XDECREF ( owned_ref ) ;
# endif
if ( ! py_result )
return - 1 ;
result = __Pyx_PyObject_IsTrue ( py_result ) ;
Py_DECREF ( py_result ) ;
return result ;
}
return_eq :
# if PY_MAJOR_VERSION < 3
Py_XDECREF ( owned_ref ) ;
# endif
return ( equals = = Py_EQ ) ;
return_ne :
# if PY_MAJOR_VERSION < 3
Py_XDECREF ( owned_ref ) ;
# endif
return ( equals = = Py_NE ) ;
# endif
}
/* PyObjectCallNoArg */
# if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject * __Pyx_PyObject_CallNoArg ( PyObject * func ) {
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( func ) ) {
return __Pyx_PyFunction_FastCall ( func , NULL , 0 ) ;
}
# endif
# ifdef __Pyx_CyFunction_USED
if ( likely ( PyCFunction_Check ( func ) | | __Pyx_CyFunction_Check ( func ) ) )
# else
if ( likely ( PyCFunction_Check ( func ) ) )
# endif
{
if ( likely ( PyCFunction_GET_FLAGS ( func ) & METH_NOARGS ) ) {
return __Pyx_PyObject_CallMethO ( func , NULL ) ;
}
}
return __Pyx_PyObject_Call ( func , __pyx_empty_tuple , NULL ) ;
}
# endif
/* PyDictVersioning */
# if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version ( PyObject * obj ) {
PyObject * dict = Py_TYPE ( obj ) - > tp_dict ;
return likely ( dict ) ? __PYX_GET_DICT_VERSION ( dict ) : 0 ;
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version ( PyObject * obj ) {
PyObject * * dictptr = NULL ;
Py_ssize_t offset = Py_TYPE ( obj ) - > tp_dictoffset ;
if ( offset ) {
# if CYTHON_COMPILING_IN_CPYTHON
dictptr = ( likely ( offset > 0 ) ) ? ( PyObject * * ) ( ( char * ) obj + offset ) : _PyObject_GetDictPtr ( obj ) ;
# else
dictptr = _PyObject_GetDictPtr ( obj ) ;
# endif
}
return ( dictptr & & * dictptr ) ? __PYX_GET_DICT_VERSION ( * dictptr ) : 0 ;
}
static CYTHON_INLINE int __Pyx_object_dict_version_matches ( PyObject * obj , PY_UINT64_T tp_dict_version , PY_UINT64_T obj_dict_version ) {
PyObject * dict = Py_TYPE ( obj ) - > tp_dict ;
if ( unlikely ( ! dict ) | | unlikely ( tp_dict_version ! = __PYX_GET_DICT_VERSION ( dict ) ) )
return 0 ;
return obj_dict_version = = __Pyx_get_object_dict_version ( obj ) ;
}
# endif
/* GetModuleGlobalName */
# if CYTHON_USE_DICT_VERSIONS
static PyObject * __Pyx__GetModuleGlobalName ( PyObject * name , PY_UINT64_T * dict_version , PyObject * * dict_cached_value )
# else
static CYTHON_INLINE PyObject * __Pyx__GetModuleGlobalName ( PyObject * name )
# endif
{
PyObject * result ;
# if !CYTHON_AVOID_BORROWED_REFS
# if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash ( __pyx_d , name , ( ( PyASCIIObject * ) name ) - > hash ) ;
__PYX_UPDATE_DICT_CACHE ( __pyx_d , result , * dict_cached_value , * dict_version )
if ( likely ( result ) ) {
return __Pyx_NewRef ( result ) ;
} else if ( unlikely ( PyErr_Occurred ( ) ) ) {
return NULL ;
}
# else
result = PyDict_GetItem ( __pyx_d , name ) ;
__PYX_UPDATE_DICT_CACHE ( __pyx_d , result , * dict_cached_value , * dict_version )
if ( likely ( result ) ) {
return __Pyx_NewRef ( result ) ;
}
# endif
# else
result = PyObject_GetItem ( __pyx_d , name ) ;
__PYX_UPDATE_DICT_CACHE ( __pyx_d , result , * dict_cached_value , * dict_version )
if ( likely ( result ) ) {
return __Pyx_NewRef ( result ) ;
}
PyErr_Clear ( ) ;
# endif
return __Pyx_GetBuiltinName ( name ) ;
}
/* PyObjectCall2Args */
static CYTHON_UNUSED PyObject * __Pyx_PyObject_Call2Args ( PyObject * function , PyObject * arg1 , PyObject * arg2 ) {
PyObject * args , * result = NULL ;
# if CYTHON_FAST_PYCALL
if ( PyFunction_Check ( function ) ) {
PyObject * args [ 2 ] = { arg1 , arg2 } ;
return __Pyx_PyFunction_FastCall ( function , args , 2 ) ;
}
# endif
# if CYTHON_FAST_PYCCALL
if ( __Pyx_PyFastCFunction_Check ( function ) ) {
PyObject * args [ 2 ] = { arg1 , arg2 } ;
return __Pyx_PyCFunction_FastCall ( function , args , 2 ) ;
}
# endif
args = PyTuple_New ( 2 ) ;
if ( unlikely ( ! args ) ) goto done ;
Py_INCREF ( arg1 ) ;
PyTuple_SET_ITEM ( args , 0 , arg1 ) ;
Py_INCREF ( arg2 ) ;
PyTuple_SET_ITEM ( args , 1 , arg2 ) ;
Py_INCREF ( function ) ;
result = __Pyx_PyObject_Call ( function , args , NULL ) ;
Py_DECREF ( args ) ;
Py_DECREF ( function ) ;
done :
return result ;
}
/* RaiseTooManyValuesToUnpack */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError ( Py_ssize_t expected ) {
PyErr_Format ( PyExc_ValueError ,
" too many values to unpack (expected % " CYTHON_FORMAT_SSIZE_T " d) " , expected ) ;
}
/* RaiseNeedMoreValuesToUnpack */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError ( Py_ssize_t index ) {
PyErr_Format ( PyExc_ValueError ,
" need more than % " CYTHON_FORMAT_SSIZE_T " d value%.1s to unpack " ,
index , ( index = = 1 ) ? " " : " s " ) ;
}
/* IterFinish */
static CYTHON_INLINE int __Pyx_IterFinish ( void ) {
# if CYTHON_FAST_THREAD_STATE
PyThreadState * tstate = __Pyx_PyThreadState_Current ;
PyObject * exc_type = tstate - > curexc_type ;
if ( unlikely ( exc_type ) ) {
if ( likely ( __Pyx_PyErr_GivenExceptionMatches ( exc_type , PyExc_StopIteration ) ) ) {
PyObject * exc_value , * exc_tb ;
exc_value = tstate - > curexc_value ;
exc_tb = tstate - > curexc_traceback ;
tstate - > curexc_type = 0 ;
tstate - > curexc_value = 0 ;
tstate - > curexc_traceback = 0 ;
Py_DECREF ( exc_type ) ;
Py_XDECREF ( exc_value ) ;
Py_XDECREF ( exc_tb ) ;
return 0 ;
} else {
return - 1 ;
}
}
return 0 ;
# else
if ( unlikely ( PyErr_Occurred ( ) ) ) {
if ( likely ( PyErr_ExceptionMatches ( PyExc_StopIteration ) ) ) {
PyErr_Clear ( ) ;
return 0 ;
} else {
return - 1 ;
}
}
return 0 ;
# endif
}
/* UnpackItemEndCheck */
static int __Pyx_IternextUnpackEndCheck ( PyObject * retval , Py_ssize_t expected ) {
if ( unlikely ( retval ) ) {
Py_DECREF ( retval ) ;
__Pyx_RaiseTooManyValuesError ( expected ) ;
return - 1 ;
} else {
return __Pyx_IterFinish ( ) ;
}
return 0 ;
}
/* None */
static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError ( const char * varname ) {
PyErr_Format ( PyExc_UnboundLocalError , " local variable '%s' referenced before assignment " , varname ) ;
}
/* PyIntBinop */
# if !CYTHON_COMPILING_IN_PYPY
static PyObject * __Pyx_PyInt_AddObjC ( PyObject * op1 , PyObject * op2 , CYTHON_UNUSED long intval , int inplace , int zerodivision_check ) {
( void ) inplace ;
( void ) zerodivision_check ;
# if PY_MAJOR_VERSION < 3
if ( likely ( PyInt_CheckExact ( op1 ) ) ) {
const long b = intval ;
long x ;
long a = PyInt_AS_LONG ( op1 ) ;
x = ( long ) ( ( unsigned long ) a + b ) ;
if ( likely ( ( x ^ a ) > = 0 | | ( x ^ b ) > = 0 ) )
return PyInt_FromLong ( x ) ;
return PyLong_Type . tp_as_number - > nb_add ( op1 , op2 ) ;
}
# endif
# if CYTHON_USE_PYLONG_INTERNALS
if ( likely ( PyLong_CheckExact ( op1 ) ) ) {
const long b = intval ;
long a , x ;
# ifdef HAVE_LONG_LONG
const PY_LONG_LONG llb = intval ;
PY_LONG_LONG lla , llx ;
# endif
const digit * digits = ( ( PyLongObject * ) op1 ) - > ob_digit ;
const Py_ssize_t size = Py_SIZE ( op1 ) ;
if ( likely ( __Pyx_sst_abs ( size ) < = 1 ) ) {
a = likely ( size ) ? digits [ 0 ] : 0 ;
if ( size = = - 1 ) a = - a ;
} else {
switch ( size ) {
case - 2 :
if ( 8 * sizeof ( long ) - 1 > 2 * PyLong_SHIFT ) {
a = - ( long ) ( ( ( ( ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 2 * PyLong_SHIFT ) {
lla = - ( PY_LONG_LONG ) ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case 2 :
if ( 8 * sizeof ( long ) - 1 > 2 * PyLong_SHIFT ) {
a = ( long ) ( ( ( ( ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 2 * PyLong_SHIFT ) {
lla = ( PY_LONG_LONG ) ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case - 3 :
if ( 8 * sizeof ( long ) - 1 > 3 * PyLong_SHIFT ) {
a = - ( long ) ( ( ( ( ( ( ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 3 * PyLong_SHIFT ) {
lla = - ( PY_LONG_LONG ) ( ( ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case 3 :
if ( 8 * sizeof ( long ) - 1 > 3 * PyLong_SHIFT ) {
a = ( long ) ( ( ( ( ( ( ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 3 * PyLong_SHIFT ) {
lla = ( PY_LONG_LONG ) ( ( ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case - 4 :
if ( 8 * sizeof ( long ) - 1 > 4 * PyLong_SHIFT ) {
a = - ( long ) ( ( ( ( ( ( ( ( ( unsigned long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 4 * PyLong_SHIFT ) {
lla = - ( PY_LONG_LONG ) ( ( ( ( ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case 4 :
if ( 8 * sizeof ( long ) - 1 > 4 * PyLong_SHIFT ) {
a = ( long ) ( ( ( ( ( ( ( ( ( unsigned long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 4 * PyLong_SHIFT ) {
lla = ( PY_LONG_LONG ) ( ( ( ( ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
default : return PyLong_Type . tp_as_number - > nb_add ( op1 , op2 ) ;
}
}
x = a + b ;
return PyLong_FromLong ( x ) ;
# ifdef HAVE_LONG_LONG
long_long :
llx = lla + llb ;
return PyLong_FromLongLong ( llx ) ;
# endif
}
# endif
if ( PyFloat_CheckExact ( op1 ) ) {
const long b = intval ;
double a = PyFloat_AS_DOUBLE ( op1 ) ;
double result ;
PyFPE_START_PROTECT ( " add " , return NULL )
result = ( ( double ) a ) + ( double ) b ;
PyFPE_END_PROTECT ( result )
return PyFloat_FromDouble ( result ) ;
}
return ( inplace ? PyNumber_InPlaceAdd : PyNumber_Add ) ( op1 , op2 ) ;
}
# endif
/* PyFloatBinop */
# if !CYTHON_COMPILING_IN_PYPY
static PyObject * __Pyx_PyFloat_EqObjC ( PyObject * op1 , PyObject * op2 , double floatval , int inplace , int zerodivision_check ) {
const double b = floatval ;
double a ;
( void ) inplace ;
( void ) zerodivision_check ;
if ( op1 = = op2 ) {
Py_RETURN_TRUE ;
}
if ( likely ( PyFloat_CheckExact ( op1 ) ) ) {
a = PyFloat_AS_DOUBLE ( op1 ) ;
} else
# if PY_MAJOR_VERSION < 3
if ( likely ( PyInt_CheckExact ( op1 ) ) ) {
a = ( double ) PyInt_AS_LONG ( op1 ) ;
} else
# endif
if ( likely ( PyLong_CheckExact ( op1 ) ) ) {
# if CYTHON_USE_PYLONG_INTERNALS
const digit * digits = ( ( PyLongObject * ) op1 ) - > ob_digit ;
const Py_ssize_t size = Py_SIZE ( op1 ) ;
switch ( size ) {
case 0 : a = 0.0 ; break ;
case - 1 : a = - ( double ) digits [ 0 ] ; break ;
case 1 : a = ( double ) digits [ 0 ] ; break ;
case - 2 :
case 2 :
if ( 8 * sizeof ( unsigned long ) > 2 * PyLong_SHIFT & & ( ( 8 * sizeof ( unsigned long ) < 53 ) | | ( 1 * PyLong_SHIFT < 53 ) ) ) {
a = ( double ) ( ( ( ( ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
if ( ( 8 * sizeof ( unsigned long ) < 53 ) | | ( 2 * PyLong_SHIFT < 53 ) | | ( a < ( double ) ( ( PY_LONG_LONG ) 1 < < 53 ) ) ) {
if ( size = = - 2 )
a = - a ;
break ;
}
}
CYTHON_FALLTHROUGH ;
case - 3 :
case 3 :
if ( 8 * sizeof ( unsigned long ) > 3 * PyLong_SHIFT & & ( ( 8 * sizeof ( unsigned long ) < 53 ) | | ( 2 * PyLong_SHIFT < 53 ) ) ) {
a = ( double ) ( ( ( ( ( ( ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
if ( ( 8 * sizeof ( unsigned long ) < 53 ) | | ( 3 * PyLong_SHIFT < 53 ) | | ( a < ( double ) ( ( PY_LONG_LONG ) 1 < < 53 ) ) ) {
if ( size = = - 3 )
a = - a ;
break ;
}
}
CYTHON_FALLTHROUGH ;
case - 4 :
case 4 :
if ( 8 * sizeof ( unsigned long ) > 4 * PyLong_SHIFT & & ( ( 8 * sizeof ( unsigned long ) < 53 ) | | ( 3 * PyLong_SHIFT < 53 ) ) ) {
a = ( double ) ( ( ( ( ( ( ( ( ( unsigned long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
if ( ( 8 * sizeof ( unsigned long ) < 53 ) | | ( 4 * PyLong_SHIFT < 53 ) | | ( a < ( double ) ( ( PY_LONG_LONG ) 1 < < 53 ) ) ) {
if ( size = = - 4 )
a = - a ;
break ;
}
}
CYTHON_FALLTHROUGH ;
default :
# else
{
# endif
return (
PyFloat_Type . tp_richcompare ( op2 , op1 , Py_EQ ) ) ;
}
} else {
return (
PyObject_RichCompare ( op1 , op2 , Py_EQ ) ) ;
}
if ( a = = b ) {
Py_RETURN_TRUE ;
} else {
Py_RETURN_FALSE ;
}
}
# endif
/* SliceObject */
static CYTHON_INLINE PyObject * __Pyx_PyObject_GetSlice ( PyObject * obj ,
Py_ssize_t cstart , Py_ssize_t cstop ,
PyObject * * _py_start , PyObject * * _py_stop , PyObject * * _py_slice ,
int has_cstart , int has_cstop , CYTHON_UNUSED int wraparound ) {
# if CYTHON_USE_TYPE_SLOTS
PyMappingMethods * mp ;
# if PY_MAJOR_VERSION < 3
PySequenceMethods * ms = Py_TYPE ( obj ) - > tp_as_sequence ;
if ( likely ( ms & & ms - > sq_slice ) ) {
if ( ! has_cstart ) {
if ( _py_start & & ( * _py_start ! = Py_None ) ) {
cstart = __Pyx_PyIndex_AsSsize_t ( * _py_start ) ;
if ( ( cstart = = ( Py_ssize_t ) - 1 ) & & PyErr_Occurred ( ) ) goto bad ;
} else
cstart = 0 ;
}
if ( ! has_cstop ) {
if ( _py_stop & & ( * _py_stop ! = Py_None ) ) {
cstop = __Pyx_PyIndex_AsSsize_t ( * _py_stop ) ;
if ( ( cstop = = ( Py_ssize_t ) - 1 ) & & PyErr_Occurred ( ) ) goto bad ;
} else
cstop = PY_SSIZE_T_MAX ;
}
if ( wraparound & & unlikely ( ( cstart < 0 ) | ( cstop < 0 ) ) & & likely ( ms - > sq_length ) ) {
Py_ssize_t l = ms - > sq_length ( obj ) ;
if ( likely ( l > = 0 ) ) {
if ( cstop < 0 ) {
cstop + = l ;
if ( cstop < 0 ) cstop = 0 ;
}
if ( cstart < 0 ) {
cstart + = l ;
if ( cstart < 0 ) cstart = 0 ;
}
} else {
if ( ! PyErr_ExceptionMatches ( PyExc_OverflowError ) )
goto bad ;
PyErr_Clear ( ) ;
}
}
return ms - > sq_slice ( obj , cstart , cstop ) ;
}
# endif
mp = Py_TYPE ( obj ) - > tp_as_mapping ;
if ( likely ( mp & & mp - > mp_subscript ) )
# endif
{
PyObject * result ;
PyObject * py_slice , * py_start , * py_stop ;
if ( _py_slice ) {
py_slice = * _py_slice ;
} else {
PyObject * owned_start = NULL ;
PyObject * owned_stop = NULL ;
if ( _py_start ) {
py_start = * _py_start ;
} else {
if ( has_cstart ) {
owned_start = py_start = PyInt_FromSsize_t ( cstart ) ;
if ( unlikely ( ! py_start ) ) goto bad ;
} else
py_start = Py_None ;
}
if ( _py_stop ) {
py_stop = * _py_stop ;
} else {
if ( has_cstop ) {
owned_stop = py_stop = PyInt_FromSsize_t ( cstop ) ;
if ( unlikely ( ! py_stop ) ) {
Py_XDECREF ( owned_start ) ;
goto bad ;
}
} else
py_stop = Py_None ;
}
py_slice = PySlice_New ( py_start , py_stop , Py_None ) ;
Py_XDECREF ( owned_start ) ;
Py_XDECREF ( owned_stop ) ;
if ( unlikely ( ! py_slice ) ) goto bad ;
}
# if CYTHON_USE_TYPE_SLOTS
result = mp - > mp_subscript ( obj , py_slice ) ;
# else
result = PyObject_GetItem ( obj , py_slice ) ;
# endif
if ( ! _py_slice ) {
Py_DECREF ( py_slice ) ;
}
return result ;
}
PyErr_Format ( PyExc_TypeError ,
" '%.200s' object is unsliceable " , Py_TYPE ( obj ) - > tp_name ) ;
bad :
return NULL ;
}
/* PyIntBinop */
# if !CYTHON_COMPILING_IN_PYPY
static PyObject * __Pyx_PyInt_SubtractCObj ( PyObject * op1 , PyObject * op2 , CYTHON_UNUSED long intval , int inplace , int zerodivision_check ) {
( void ) inplace ;
( void ) zerodivision_check ;
# if PY_MAJOR_VERSION < 3
if ( likely ( PyInt_CheckExact ( op2 ) ) ) {
const long a = intval ;
long x ;
long b = PyInt_AS_LONG ( op2 ) ;
x = ( long ) ( ( unsigned long ) a - b ) ;
if ( likely ( ( x ^ a ) > = 0 | | ( x ^ ~ b ) > = 0 ) )
return PyInt_FromLong ( x ) ;
return PyLong_Type . tp_as_number - > nb_subtract ( op1 , op2 ) ;
}
# endif
# if CYTHON_USE_PYLONG_INTERNALS
if ( likely ( PyLong_CheckExact ( op2 ) ) ) {
const long a = intval ;
long b , x ;
# ifdef HAVE_LONG_LONG
const PY_LONG_LONG lla = intval ;
PY_LONG_LONG llb , llx ;
# endif
const digit * digits = ( ( PyLongObject * ) op2 ) - > ob_digit ;
const Py_ssize_t size = Py_SIZE ( op2 ) ;
if ( likely ( __Pyx_sst_abs ( size ) < = 1 ) ) {
b = likely ( size ) ? digits [ 0 ] : 0 ;
if ( size = = - 1 ) b = - b ;
} else {
switch ( size ) {
case - 2 :
if ( 8 * sizeof ( long ) - 1 > 2 * PyLong_SHIFT ) {
b = - ( long ) ( ( ( ( ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 2 * PyLong_SHIFT ) {
llb = - ( PY_LONG_LONG ) ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case 2 :
if ( 8 * sizeof ( long ) - 1 > 2 * PyLong_SHIFT ) {
b = ( long ) ( ( ( ( ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 2 * PyLong_SHIFT ) {
llb = ( PY_LONG_LONG ) ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case - 3 :
if ( 8 * sizeof ( long ) - 1 > 3 * PyLong_SHIFT ) {
b = - ( long ) ( ( ( ( ( ( ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 3 * PyLong_SHIFT ) {
llb = - ( PY_LONG_LONG ) ( ( ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case 3 :
if ( 8 * sizeof ( long ) - 1 > 3 * PyLong_SHIFT ) {
b = ( long ) ( ( ( ( ( ( ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 3 * PyLong_SHIFT ) {
llb = ( PY_LONG_LONG ) ( ( ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case - 4 :
if ( 8 * sizeof ( long ) - 1 > 4 * PyLong_SHIFT ) {
b = - ( long ) ( ( ( ( ( ( ( ( ( unsigned long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 4 * PyLong_SHIFT ) {
llb = - ( PY_LONG_LONG ) ( ( ( ( ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case 4 :
if ( 8 * sizeof ( long ) - 1 > 4 * PyLong_SHIFT ) {
b = ( long ) ( ( ( ( ( ( ( ( ( unsigned long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 4 * PyLong_SHIFT ) {
llb = ( PY_LONG_LONG ) ( ( ( ( ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
default : return PyLong_Type . tp_as_number - > nb_subtract ( op1 , op2 ) ;
}
}
x = a - b ;
return PyLong_FromLong ( x ) ;
# ifdef HAVE_LONG_LONG
long_long :
llx = lla - llb ;
return PyLong_FromLongLong ( llx ) ;
# endif
}
# endif
if ( PyFloat_CheckExact ( op2 ) ) {
const long a = intval ;
double b = PyFloat_AS_DOUBLE ( op2 ) ;
double result ;
PyFPE_START_PROTECT ( " subtract " , return NULL )
result = ( ( double ) a ) - ( double ) b ;
PyFPE_END_PROTECT ( result )
return PyFloat_FromDouble ( result ) ;
}
return ( inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract ) ( op1 , op2 ) ;
}
# endif
/* PyIntBinop */
# if !CYTHON_COMPILING_IN_PYPY
static PyObject * __Pyx_PyInt_SubtractObjC ( PyObject * op1 , PyObject * op2 , CYTHON_UNUSED long intval , int inplace , int zerodivision_check ) {
( void ) inplace ;
( void ) zerodivision_check ;
# if PY_MAJOR_VERSION < 3
if ( likely ( PyInt_CheckExact ( op1 ) ) ) {
const long b = intval ;
long x ;
long a = PyInt_AS_LONG ( op1 ) ;
x = ( long ) ( ( unsigned long ) a - b ) ;
if ( likely ( ( x ^ a ) > = 0 | | ( x ^ ~ b ) > = 0 ) )
return PyInt_FromLong ( x ) ;
return PyLong_Type . tp_as_number - > nb_subtract ( op1 , op2 ) ;
}
# endif
# if CYTHON_USE_PYLONG_INTERNALS
if ( likely ( PyLong_CheckExact ( op1 ) ) ) {
const long b = intval ;
long a , x ;
# ifdef HAVE_LONG_LONG
const PY_LONG_LONG llb = intval ;
PY_LONG_LONG lla , llx ;
# endif
const digit * digits = ( ( PyLongObject * ) op1 ) - > ob_digit ;
const Py_ssize_t size = Py_SIZE ( op1 ) ;
if ( likely ( __Pyx_sst_abs ( size ) < = 1 ) ) {
a = likely ( size ) ? digits [ 0 ] : 0 ;
if ( size = = - 1 ) a = - a ;
} else {
switch ( size ) {
case - 2 :
if ( 8 * sizeof ( long ) - 1 > 2 * PyLong_SHIFT ) {
a = - ( long ) ( ( ( ( ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 2 * PyLong_SHIFT ) {
lla = - ( PY_LONG_LONG ) ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case 2 :
if ( 8 * sizeof ( long ) - 1 > 2 * PyLong_SHIFT ) {
a = ( long ) ( ( ( ( ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 2 * PyLong_SHIFT ) {
lla = ( PY_LONG_LONG ) ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case - 3 :
if ( 8 * sizeof ( long ) - 1 > 3 * PyLong_SHIFT ) {
a = - ( long ) ( ( ( ( ( ( ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 3 * PyLong_SHIFT ) {
lla = - ( PY_LONG_LONG ) ( ( ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case 3 :
if ( 8 * sizeof ( long ) - 1 > 3 * PyLong_SHIFT ) {
a = ( long ) ( ( ( ( ( ( ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 3 * PyLong_SHIFT ) {
lla = ( PY_LONG_LONG ) ( ( ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case - 4 :
if ( 8 * sizeof ( long ) - 1 > 4 * PyLong_SHIFT ) {
a = - ( long ) ( ( ( ( ( ( ( ( ( unsigned long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 4 * PyLong_SHIFT ) {
lla = - ( PY_LONG_LONG ) ( ( ( ( ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
case 4 :
if ( 8 * sizeof ( long ) - 1 > 4 * PyLong_SHIFT ) {
a = ( long ) ( ( ( ( ( ( ( ( ( unsigned long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) ;
break ;
# ifdef HAVE_LONG_LONG
} else if ( 8 * sizeof ( PY_LONG_LONG ) - 1 > 4 * PyLong_SHIFT ) {
lla = ( PY_LONG_LONG ) ( ( ( ( ( ( ( ( ( unsigned PY_LONG_LONG ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned PY_LONG_LONG ) digits [ 0 ] ) ) ;
goto long_long ;
# endif
}
CYTHON_FALLTHROUGH ;
default : return PyLong_Type . tp_as_number - > nb_subtract ( op1 , op2 ) ;
}
}
x = a - b ;
return PyLong_FromLong ( x ) ;
# ifdef HAVE_LONG_LONG
long_long :
llx = lla - llb ;
return PyLong_FromLongLong ( llx ) ;
# endif
}
# endif
if ( PyFloat_CheckExact ( op1 ) ) {
const long b = intval ;
double a = PyFloat_AS_DOUBLE ( op1 ) ;
double result ;
PyFPE_START_PROTECT ( " subtract " , return NULL )
result = ( ( double ) a ) - ( double ) b ;
PyFPE_END_PROTECT ( result )
return PyFloat_FromDouble ( result ) ;
}
return ( inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract ) ( op1 , op2 ) ;
}
# endif
/* Import */
static PyObject * __Pyx_Import ( PyObject * name , PyObject * from_list , int level ) {
PyObject * empty_list = 0 ;
PyObject * module = 0 ;
PyObject * global_dict = 0 ;
PyObject * empty_dict = 0 ;
PyObject * list ;
# if PY_MAJOR_VERSION < 3
PyObject * py_import ;
py_import = __Pyx_PyObject_GetAttrStr ( __pyx_b , __pyx_n_s_import ) ;
if ( ! py_import )
goto bad ;
# endif
if ( from_list )
list = from_list ;
else {
empty_list = PyList_New ( 0 ) ;
if ( ! empty_list )
goto bad ;
list = empty_list ;
}
global_dict = PyModule_GetDict ( __pyx_m ) ;
if ( ! global_dict )
goto bad ;
empty_dict = PyDict_New ( ) ;
if ( ! empty_dict )
goto bad ;
{
# if PY_MAJOR_VERSION >= 3
if ( level = = - 1 ) {
if ( strchr ( __Pyx_MODULE_NAME , ' . ' ) ) {
module = PyImport_ImportModuleLevelObject (
name , global_dict , empty_dict , list , 1 ) ;
if ( ! module ) {
if ( ! PyErr_ExceptionMatches ( PyExc_ImportError ) )
goto bad ;
PyErr_Clear ( ) ;
}
}
level = 0 ;
}
# endif
if ( ! module ) {
# if PY_MAJOR_VERSION < 3
PyObject * py_level = PyInt_FromLong ( level ) ;
if ( ! py_level )
goto bad ;
module = PyObject_CallFunctionObjArgs ( py_import ,
name , global_dict , empty_dict , list , py_level , ( PyObject * ) NULL ) ;
Py_DECREF ( py_level ) ;
# else
module = PyImport_ImportModuleLevelObject (
name , global_dict , empty_dict , list , level ) ;
# endif
}
}
bad :
# if PY_MAJOR_VERSION < 3
Py_XDECREF ( py_import ) ;
# endif
Py_XDECREF ( empty_list ) ;
Py_XDECREF ( empty_dict ) ;
return module ;
}
/* ImportFrom */
static PyObject * __Pyx_ImportFrom ( PyObject * module , PyObject * name ) {
PyObject * value = __Pyx_PyObject_GetAttrStr ( module , name ) ;
if ( unlikely ( ! value ) & & PyErr_ExceptionMatches ( PyExc_AttributeError ) ) {
PyErr_Format ( PyExc_ImportError ,
# if PY_MAJOR_VERSION < 3
" cannot import name %.230s " , PyString_AS_STRING ( name ) ) ;
# else
" cannot import name %S " , name ) ;
# endif
}
return value ;
}
/* FetchCommonType */
static PyTypeObject * __Pyx_FetchCommonType ( PyTypeObject * type ) {
PyObject * fake_module ;
PyTypeObject * cached_type = NULL ;
fake_module = PyImport_AddModule ( ( char * ) " _cython_ " CYTHON_ABI ) ;
if ( ! fake_module ) return NULL ;
Py_INCREF ( fake_module ) ;
cached_type = ( PyTypeObject * ) PyObject_GetAttrString ( fake_module , type - > tp_name ) ;
if ( cached_type ) {
if ( ! PyType_Check ( ( PyObject * ) cached_type ) ) {
PyErr_Format ( PyExc_TypeError ,
" Shared Cython type %.200s is not a type object " ,
type - > tp_name ) ;
goto bad ;
}
if ( cached_type - > tp_basicsize ! = type - > tp_basicsize ) {
PyErr_Format ( PyExc_TypeError ,
" Shared Cython type %.200s has the wrong size, try recompiling " ,
type - > tp_name ) ;
goto bad ;
}
} else {
if ( ! PyErr_ExceptionMatches ( PyExc_AttributeError ) ) goto bad ;
PyErr_Clear ( ) ;
if ( PyType_Ready ( type ) < 0 ) goto bad ;
if ( PyObject_SetAttrString ( fake_module , type - > tp_name , ( PyObject * ) type ) < 0 )
goto bad ;
Py_INCREF ( type ) ;
cached_type = type ;
}
done :
Py_DECREF ( fake_module ) ;
return cached_type ;
bad :
Py_XDECREF ( cached_type ) ;
cached_type = NULL ;
goto done ;
}
/* CythonFunction */
# include <structmember.h>
static PyObject *
__Pyx_CyFunction_get_doc ( __pyx_CyFunctionObject * op , CYTHON_UNUSED void * closure )
{
if ( unlikely ( op - > func_doc = = NULL ) ) {
if ( op - > func . m_ml - > ml_doc ) {
# if PY_MAJOR_VERSION >= 3
op - > func_doc = PyUnicode_FromString ( op - > func . m_ml - > ml_doc ) ;
# else
op - > func_doc = PyString_FromString ( op - > func . m_ml - > ml_doc ) ;
# endif
if ( unlikely ( op - > func_doc = = NULL ) )
return NULL ;
} else {
Py_INCREF ( Py_None ) ;
return Py_None ;
}
}
Py_INCREF ( op - > func_doc ) ;
return op - > func_doc ;
}
static int
__Pyx_CyFunction_set_doc ( __pyx_CyFunctionObject * op , PyObject * value , CYTHON_UNUSED void * context )
{
PyObject * tmp = op - > func_doc ;
if ( value = = NULL ) {
value = Py_None ;
}
Py_INCREF ( value ) ;
op - > func_doc = value ;
Py_XDECREF ( tmp ) ;
return 0 ;
}
static PyObject *
__Pyx_CyFunction_get_name ( __pyx_CyFunctionObject * op , CYTHON_UNUSED void * context )
{
if ( unlikely ( op - > func_name = = NULL ) ) {
# if PY_MAJOR_VERSION >= 3
op - > func_name = PyUnicode_InternFromString ( op - > func . m_ml - > ml_name ) ;
# else
op - > func_name = PyString_InternFromString ( op - > func . m_ml - > ml_name ) ;
# endif
if ( unlikely ( op - > func_name = = NULL ) )
return NULL ;
}
Py_INCREF ( op - > func_name ) ;
return op - > func_name ;
}
static int
__Pyx_CyFunction_set_name ( __pyx_CyFunctionObject * op , PyObject * value , CYTHON_UNUSED void * context )
{
PyObject * tmp ;
# if PY_MAJOR_VERSION >= 3
if ( unlikely ( value = = NULL | | ! PyUnicode_Check ( value ) ) )
# else
if ( unlikely ( value = = NULL | | ! PyString_Check ( value ) ) )
# endif
{
PyErr_SetString ( PyExc_TypeError ,
" __name__ must be set to a string object " ) ;
return - 1 ;
}
tmp = op - > func_name ;
Py_INCREF ( value ) ;
op - > func_name = value ;
Py_XDECREF ( tmp ) ;
return 0 ;
}
static PyObject *
__Pyx_CyFunction_get_qualname ( __pyx_CyFunctionObject * op , CYTHON_UNUSED void * context )
{
Py_INCREF ( op - > func_qualname ) ;
return op - > func_qualname ;
}
static int
__Pyx_CyFunction_set_qualname ( __pyx_CyFunctionObject * op , PyObject * value , CYTHON_UNUSED void * context )
{
PyObject * tmp ;
# if PY_MAJOR_VERSION >= 3
if ( unlikely ( value = = NULL | | ! PyUnicode_Check ( value ) ) )
# else
if ( unlikely ( value = = NULL | | ! PyString_Check ( value ) ) )
# endif
{
PyErr_SetString ( PyExc_TypeError ,
" __qualname__ must be set to a string object " ) ;
return - 1 ;
}
tmp = op - > func_qualname ;
Py_INCREF ( value ) ;
op - > func_qualname = value ;
Py_XDECREF ( tmp ) ;
return 0 ;
}
static PyObject *
__Pyx_CyFunction_get_self ( __pyx_CyFunctionObject * m , CYTHON_UNUSED void * closure )
{
PyObject * self ;
self = m - > func_closure ;
if ( self = = NULL )
self = Py_None ;
Py_INCREF ( self ) ;
return self ;
}
static PyObject *
__Pyx_CyFunction_get_dict ( __pyx_CyFunctionObject * op , CYTHON_UNUSED void * context )
{
if ( unlikely ( op - > func_dict = = NULL ) ) {
op - > func_dict = PyDict_New ( ) ;
if ( unlikely ( op - > func_dict = = NULL ) )
return NULL ;
}
Py_INCREF ( op - > func_dict ) ;
return op - > func_dict ;
}
static int
__Pyx_CyFunction_set_dict ( __pyx_CyFunctionObject * op , PyObject * value , CYTHON_UNUSED void * context )
{
PyObject * tmp ;
if ( unlikely ( value = = NULL ) ) {
PyErr_SetString ( PyExc_TypeError ,
" function's dictionary may not be deleted " ) ;
return - 1 ;
}
if ( unlikely ( ! PyDict_Check ( value ) ) ) {
PyErr_SetString ( PyExc_TypeError ,
" setting function's dictionary to a non-dict " ) ;
return - 1 ;
}
tmp = op - > func_dict ;
Py_INCREF ( value ) ;
op - > func_dict = value ;
Py_XDECREF ( tmp ) ;
return 0 ;
}
static PyObject *
__Pyx_CyFunction_get_globals ( __pyx_CyFunctionObject * op , CYTHON_UNUSED void * context )
{
Py_INCREF ( op - > func_globals ) ;
return op - > func_globals ;
}
static PyObject *
__Pyx_CyFunction_get_closure ( CYTHON_UNUSED __pyx_CyFunctionObject * op , CYTHON_UNUSED void * context )
{
Py_INCREF ( Py_None ) ;
return Py_None ;
}
static PyObject *
__Pyx_CyFunction_get_code ( __pyx_CyFunctionObject * op , CYTHON_UNUSED void * context )
{
PyObject * result = ( op - > func_code ) ? op - > func_code : Py_None ;
Py_INCREF ( result ) ;
return result ;
}
static int
__Pyx_CyFunction_init_defaults ( __pyx_CyFunctionObject * op ) {
int result = 0 ;
PyObject * res = op - > defaults_getter ( ( PyObject * ) op ) ;
if ( unlikely ( ! res ) )
return - 1 ;
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
op - > defaults_tuple = PyTuple_GET_ITEM ( res , 0 ) ;
Py_INCREF ( op - > defaults_tuple ) ;
op - > defaults_kwdict = PyTuple_GET_ITEM ( res , 1 ) ;
Py_INCREF ( op - > defaults_kwdict ) ;
# else
op - > defaults_tuple = PySequence_ITEM ( res , 0 ) ;
if ( unlikely ( ! op - > defaults_tuple ) ) result = - 1 ;
else {
op - > defaults_kwdict = PySequence_ITEM ( res , 1 ) ;
if ( unlikely ( ! op - > defaults_kwdict ) ) result = - 1 ;
}
# endif
Py_DECREF ( res ) ;
return result ;
}
static int
__Pyx_CyFunction_set_defaults ( __pyx_CyFunctionObject * op , PyObject * value , CYTHON_UNUSED void * context ) {
PyObject * tmp ;
if ( ! value ) {
value = Py_None ;
} else if ( value ! = Py_None & & ! PyTuple_Check ( value ) ) {
PyErr_SetString ( PyExc_TypeError ,
" __defaults__ must be set to a tuple object " ) ;
return - 1 ;
}
Py_INCREF ( value ) ;
tmp = op - > defaults_tuple ;
op - > defaults_tuple = value ;
Py_XDECREF ( tmp ) ;
return 0 ;
}
static PyObject *
__Pyx_CyFunction_get_defaults ( __pyx_CyFunctionObject * op , CYTHON_UNUSED void * context ) {
PyObject * result = op - > defaults_tuple ;
if ( unlikely ( ! result ) ) {
if ( op - > defaults_getter ) {
if ( __Pyx_CyFunction_init_defaults ( op ) < 0 ) return NULL ;
result = op - > defaults_tuple ;
} else {
result = Py_None ;
}
}
Py_INCREF ( result ) ;
return result ;
}
static int
__Pyx_CyFunction_set_kwdefaults ( __pyx_CyFunctionObject * op , PyObject * value , CYTHON_UNUSED void * context ) {
PyObject * tmp ;
if ( ! value ) {
value = Py_None ;
} else if ( value ! = Py_None & & ! PyDict_Check ( value ) ) {
PyErr_SetString ( PyExc_TypeError ,
" __kwdefaults__ must be set to a dict object " ) ;
return - 1 ;
}
Py_INCREF ( value ) ;
tmp = op - > defaults_kwdict ;
op - > defaults_kwdict = value ;
Py_XDECREF ( tmp ) ;
return 0 ;
}
static PyObject *
__Pyx_CyFunction_get_kwdefaults ( __pyx_CyFunctionObject * op , CYTHON_UNUSED void * context ) {
PyObject * result = op - > defaults_kwdict ;
if ( unlikely ( ! result ) ) {
if ( op - > defaults_getter ) {
if ( __Pyx_CyFunction_init_defaults ( op ) < 0 ) return NULL ;
result = op - > defaults_kwdict ;
} else {
result = Py_None ;
}
}
Py_INCREF ( result ) ;
return result ;
}
static int
__Pyx_CyFunction_set_annotations ( __pyx_CyFunctionObject * op , PyObject * value , CYTHON_UNUSED void * context ) {
PyObject * tmp ;
if ( ! value | | value = = Py_None ) {
value = NULL ;
} else if ( ! PyDict_Check ( value ) ) {
PyErr_SetString ( PyExc_TypeError ,
" __annotations__ must be set to a dict object " ) ;
return - 1 ;
}
Py_XINCREF ( value ) ;
tmp = op - > func_annotations ;
op - > func_annotations = value ;
Py_XDECREF ( tmp ) ;
return 0 ;
}
static PyObject *
__Pyx_CyFunction_get_annotations ( __pyx_CyFunctionObject * op , CYTHON_UNUSED void * context ) {
PyObject * result = op - > func_annotations ;
if ( unlikely ( ! result ) ) {
result = PyDict_New ( ) ;
if ( unlikely ( ! result ) ) return NULL ;
op - > func_annotations = result ;
}
Py_INCREF ( result ) ;
return result ;
}
static PyGetSetDef __pyx_CyFunction_getsets [ ] = {
{ ( char * ) " func_doc " , ( getter ) __Pyx_CyFunction_get_doc , ( setter ) __Pyx_CyFunction_set_doc , 0 , 0 } ,
{ ( char * ) " __doc__ " , ( getter ) __Pyx_CyFunction_get_doc , ( setter ) __Pyx_CyFunction_set_doc , 0 , 0 } ,
{ ( char * ) " func_name " , ( getter ) __Pyx_CyFunction_get_name , ( setter ) __Pyx_CyFunction_set_name , 0 , 0 } ,
{ ( char * ) " __name__ " , ( getter ) __Pyx_CyFunction_get_name , ( setter ) __Pyx_CyFunction_set_name , 0 , 0 } ,
{ ( char * ) " __qualname__ " , ( getter ) __Pyx_CyFunction_get_qualname , ( setter ) __Pyx_CyFunction_set_qualname , 0 , 0 } ,
{ ( char * ) " __self__ " , ( getter ) __Pyx_CyFunction_get_self , 0 , 0 , 0 } ,
{ ( char * ) " func_dict " , ( getter ) __Pyx_CyFunction_get_dict , ( setter ) __Pyx_CyFunction_set_dict , 0 , 0 } ,
{ ( char * ) " __dict__ " , ( getter ) __Pyx_CyFunction_get_dict , ( setter ) __Pyx_CyFunction_set_dict , 0 , 0 } ,
{ ( char * ) " func_globals " , ( getter ) __Pyx_CyFunction_get_globals , 0 , 0 , 0 } ,
{ ( char * ) " __globals__ " , ( getter ) __Pyx_CyFunction_get_globals , 0 , 0 , 0 } ,
{ ( char * ) " func_closure " , ( getter ) __Pyx_CyFunction_get_closure , 0 , 0 , 0 } ,
{ ( char * ) " __closure__ " , ( getter ) __Pyx_CyFunction_get_closure , 0 , 0 , 0 } ,
{ ( char * ) " func_code " , ( getter ) __Pyx_CyFunction_get_code , 0 , 0 , 0 } ,
{ ( char * ) " __code__ " , ( getter ) __Pyx_CyFunction_get_code , 0 , 0 , 0 } ,
{ ( char * ) " func_defaults " , ( getter ) __Pyx_CyFunction_get_defaults , ( setter ) __Pyx_CyFunction_set_defaults , 0 , 0 } ,
{ ( char * ) " __defaults__ " , ( getter ) __Pyx_CyFunction_get_defaults , ( setter ) __Pyx_CyFunction_set_defaults , 0 , 0 } ,
{ ( char * ) " __kwdefaults__ " , ( getter ) __Pyx_CyFunction_get_kwdefaults , ( setter ) __Pyx_CyFunction_set_kwdefaults , 0 , 0 } ,
{ ( char * ) " __annotations__ " , ( getter ) __Pyx_CyFunction_get_annotations , ( setter ) __Pyx_CyFunction_set_annotations , 0 , 0 } ,
{ 0 , 0 , 0 , 0 , 0 }
} ;
static PyMemberDef __pyx_CyFunction_members [ ] = {
{ ( char * ) " __module__ " , T_OBJECT , offsetof ( PyCFunctionObject , m_module ) , PY_WRITE_RESTRICTED , 0 } ,
{ 0 , 0 , 0 , 0 , 0 }
} ;
static PyObject *
__Pyx_CyFunction_reduce ( __pyx_CyFunctionObject * m , CYTHON_UNUSED PyObject * args )
{
# if PY_MAJOR_VERSION >= 3
return PyUnicode_FromString ( m - > func . m_ml - > ml_name ) ;
# else
return PyString_FromString ( m - > func . m_ml - > ml_name ) ;
# endif
}
static PyMethodDef __pyx_CyFunction_methods [ ] = {
{ " __reduce__ " , ( PyCFunction ) __Pyx_CyFunction_reduce , METH_VARARGS , 0 } ,
{ 0 , 0 , 0 , 0 }
} ;
# if PY_VERSION_HEX < 0x030500A0
# define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
# else
# define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist)
# endif
static PyObject * __Pyx_CyFunction_New ( PyTypeObject * type , PyMethodDef * ml , int flags , PyObject * qualname ,
PyObject * closure , PyObject * module , PyObject * globals , PyObject * code ) {
__pyx_CyFunctionObject * op = PyObject_GC_New ( __pyx_CyFunctionObject , type ) ;
if ( op = = NULL )
return NULL ;
op - > flags = flags ;
__Pyx_CyFunction_weakreflist ( op ) = NULL ;
op - > func . m_ml = ml ;
op - > func . m_self = ( PyObject * ) op ;
Py_XINCREF ( closure ) ;
op - > func_closure = closure ;
Py_XINCREF ( module ) ;
op - > func . m_module = module ;
op - > func_dict = NULL ;
op - > func_name = NULL ;
Py_INCREF ( qualname ) ;
op - > func_qualname = qualname ;
op - > func_doc = NULL ;
op - > func_classobj = NULL ;
op - > func_globals = globals ;
Py_INCREF ( op - > func_globals ) ;
Py_XINCREF ( code ) ;
op - > func_code = code ;
op - > defaults_pyobjects = 0 ;
op - > defaults = NULL ;
op - > defaults_tuple = NULL ;
op - > defaults_kwdict = NULL ;
op - > defaults_getter = NULL ;
op - > func_annotations = NULL ;
PyObject_GC_Track ( op ) ;
return ( PyObject * ) op ;
}
static int
__Pyx_CyFunction_clear ( __pyx_CyFunctionObject * m )
{
Py_CLEAR ( m - > func_closure ) ;
Py_CLEAR ( m - > func . m_module ) ;
Py_CLEAR ( m - > func_dict ) ;
Py_CLEAR ( m - > func_name ) ;
Py_CLEAR ( m - > func_qualname ) ;
Py_CLEAR ( m - > func_doc ) ;
Py_CLEAR ( m - > func_globals ) ;
Py_CLEAR ( m - > func_code ) ;
Py_CLEAR ( m - > func_classobj ) ;
Py_CLEAR ( m - > defaults_tuple ) ;
Py_CLEAR ( m - > defaults_kwdict ) ;
Py_CLEAR ( m - > func_annotations ) ;
if ( m - > defaults ) {
PyObject * * pydefaults = __Pyx_CyFunction_Defaults ( PyObject * , m ) ;
int i ;
for ( i = 0 ; i < m - > defaults_pyobjects ; i + + )
Py_XDECREF ( pydefaults [ i ] ) ;
PyObject_Free ( m - > defaults ) ;
m - > defaults = NULL ;
}
return 0 ;
}
static void __Pyx__CyFunction_dealloc ( __pyx_CyFunctionObject * m )
{
if ( __Pyx_CyFunction_weakreflist ( m ) ! = NULL )
PyObject_ClearWeakRefs ( ( PyObject * ) m ) ;
__Pyx_CyFunction_clear ( m ) ;
PyObject_GC_Del ( m ) ;
}
static void __Pyx_CyFunction_dealloc ( __pyx_CyFunctionObject * m )
{
PyObject_GC_UnTrack ( m ) ;
__Pyx__CyFunction_dealloc ( m ) ;
}
static int __Pyx_CyFunction_traverse ( __pyx_CyFunctionObject * m , visitproc visit , void * arg )
{
Py_VISIT ( m - > func_closure ) ;
Py_VISIT ( m - > func . m_module ) ;
Py_VISIT ( m - > func_dict ) ;
Py_VISIT ( m - > func_name ) ;
Py_VISIT ( m - > func_qualname ) ;
Py_VISIT ( m - > func_doc ) ;
Py_VISIT ( m - > func_globals ) ;
Py_VISIT ( m - > func_code ) ;
Py_VISIT ( m - > func_classobj ) ;
Py_VISIT ( m - > defaults_tuple ) ;
Py_VISIT ( m - > defaults_kwdict ) ;
if ( m - > defaults ) {
PyObject * * pydefaults = __Pyx_CyFunction_Defaults ( PyObject * , m ) ;
int i ;
for ( i = 0 ; i < m - > defaults_pyobjects ; i + + )
Py_VISIT ( pydefaults [ i ] ) ;
}
return 0 ;
}
static PyObject * __Pyx_CyFunction_descr_get ( PyObject * func , PyObject * obj , PyObject * type )
{
__pyx_CyFunctionObject * m = ( __pyx_CyFunctionObject * ) func ;
if ( m - > flags & __Pyx_CYFUNCTION_STATICMETHOD ) {
Py_INCREF ( func ) ;
return func ;
}
if ( m - > flags & __Pyx_CYFUNCTION_CLASSMETHOD ) {
if ( type = = NULL )
type = ( PyObject * ) ( Py_TYPE ( obj ) ) ;
return __Pyx_PyMethod_New ( func , type , ( PyObject * ) ( Py_TYPE ( type ) ) ) ;
}
if ( obj = = Py_None )
obj = NULL ;
return __Pyx_PyMethod_New ( func , obj , type ) ;
}
static PyObject *
__Pyx_CyFunction_repr ( __pyx_CyFunctionObject * op )
{
# if PY_MAJOR_VERSION >= 3
return PyUnicode_FromFormat ( " <cyfunction %U at %p> " ,
op - > func_qualname , ( void * ) op ) ;
# else
return PyString_FromFormat ( " <cyfunction %s at %p> " ,
PyString_AsString ( op - > func_qualname ) , ( void * ) op ) ;
# endif
}
static PyObject * __Pyx_CyFunction_CallMethod ( PyObject * func , PyObject * self , PyObject * arg , PyObject * kw ) {
PyCFunctionObject * f = ( PyCFunctionObject * ) func ;
PyCFunction meth = f - > m_ml - > ml_meth ;
Py_ssize_t size ;
switch ( f - > m_ml - > ml_flags & ( METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O ) ) {
case METH_VARARGS :
if ( likely ( kw = = NULL | | PyDict_Size ( kw ) = = 0 ) )
return ( * meth ) ( self , arg ) ;
break ;
case METH_VARARGS | METH_KEYWORDS :
return ( * ( PyCFunctionWithKeywords ) ( void * ) meth ) ( self , arg , kw ) ;
case METH_NOARGS :
if ( likely ( kw = = NULL | | PyDict_Size ( kw ) = = 0 ) ) {
size = PyTuple_GET_SIZE ( arg ) ;
if ( likely ( size = = 0 ) )
return ( * meth ) ( self , NULL ) ;
PyErr_Format ( PyExc_TypeError ,
" %.200s() takes no arguments (% " CYTHON_FORMAT_SSIZE_T " d given) " ,
f - > m_ml - > ml_name , size ) ;
return NULL ;
}
break ;
case METH_O :
if ( likely ( kw = = NULL | | PyDict_Size ( kw ) = = 0 ) ) {
size = PyTuple_GET_SIZE ( arg ) ;
if ( likely ( size = = 1 ) ) {
PyObject * result , * arg0 ;
# if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
arg0 = PyTuple_GET_ITEM ( arg , 0 ) ;
# else
arg0 = PySequence_ITEM ( arg , 0 ) ; if ( unlikely ( ! arg0 ) ) return NULL ;
# endif
result = ( * meth ) ( self , arg0 ) ;
# if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
Py_DECREF ( arg0 ) ;
# endif
return result ;
}
PyErr_Format ( PyExc_TypeError ,
" %.200s() takes exactly one argument (% " CYTHON_FORMAT_SSIZE_T " d given) " ,
f - > m_ml - > ml_name , size ) ;
return NULL ;
}
break ;
default :
PyErr_SetString ( PyExc_SystemError , " Bad call flags in "
" __Pyx_CyFunction_Call. METH_OLDARGS is no "
" longer supported! " ) ;
return NULL ;
}
PyErr_Format ( PyExc_TypeError , " %.200s() takes no keyword arguments " ,
f - > m_ml - > ml_name ) ;
return NULL ;
}
static CYTHON_INLINE PyObject * __Pyx_CyFunction_Call ( PyObject * func , PyObject * arg , PyObject * kw ) {
return __Pyx_CyFunction_CallMethod ( func , ( ( PyCFunctionObject * ) func ) - > m_self , arg , kw ) ;
}
static PyObject * __Pyx_CyFunction_CallAsMethod ( PyObject * func , PyObject * args , PyObject * kw ) {
PyObject * result ;
__pyx_CyFunctionObject * cyfunc = ( __pyx_CyFunctionObject * ) func ;
if ( ( cyfunc - > flags & __Pyx_CYFUNCTION_CCLASS ) & & ! ( cyfunc - > flags & __Pyx_CYFUNCTION_STATICMETHOD ) ) {
Py_ssize_t argc ;
PyObject * new_args ;
PyObject * self ;
argc = PyTuple_GET_SIZE ( args ) ;
new_args = PyTuple_GetSlice ( args , 1 , argc ) ;
if ( unlikely ( ! new_args ) )
return NULL ;
self = PyTuple_GetItem ( args , 0 ) ;
if ( unlikely ( ! self ) ) {
Py_DECREF ( new_args ) ;
return NULL ;
}
result = __Pyx_CyFunction_CallMethod ( func , self , new_args , kw ) ;
Py_DECREF ( new_args ) ;
} else {
result = __Pyx_CyFunction_Call ( func , args , kw ) ;
}
return result ;
}
static PyTypeObject __pyx_CyFunctionType_type = {
PyVarObject_HEAD_INIT ( 0 , 0 )
" cython_function_or_method " ,
sizeof ( __pyx_CyFunctionObject ) ,
0 ,
( destructor ) __Pyx_CyFunction_dealloc ,
0 ,
0 ,
0 ,
# if PY_MAJOR_VERSION < 3
0 ,
# else
0 ,
# endif
( reprfunc ) __Pyx_CyFunction_repr ,
0 ,
0 ,
0 ,
0 ,
__Pyx_CyFunction_CallAsMethod ,
0 ,
0 ,
0 ,
0 ,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC ,
0 ,
( traverseproc ) __Pyx_CyFunction_traverse ,
( inquiry ) __Pyx_CyFunction_clear ,
0 ,
# if PY_VERSION_HEX < 0x030500A0
offsetof ( __pyx_CyFunctionObject , func_weakreflist ) ,
# else
offsetof ( PyCFunctionObject , m_weakreflist ) ,
# endif
0 ,
0 ,
__pyx_CyFunction_methods ,
__pyx_CyFunction_members ,
__pyx_CyFunction_getsets ,
0 ,
0 ,
__Pyx_CyFunction_descr_get ,
0 ,
offsetof ( __pyx_CyFunctionObject , func_dict ) ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
# if PY_VERSION_HEX >= 0x030400a1
0 ,
# endif
# if PY_VERSION_HEX >= 0x030800b1
0 ,
# endif
# if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
0 ,
# endif
} ;
static int __pyx_CyFunction_init ( void ) {
__pyx_CyFunctionType = __Pyx_FetchCommonType ( & __pyx_CyFunctionType_type ) ;
if ( unlikely ( __pyx_CyFunctionType = = NULL ) ) {
return - 1 ;
}
return 0 ;
}
static CYTHON_INLINE void * __Pyx_CyFunction_InitDefaults ( PyObject * func , size_t size , int pyobjects ) {
__pyx_CyFunctionObject * m = ( __pyx_CyFunctionObject * ) func ;
m - > defaults = PyObject_Malloc ( size ) ;
if ( unlikely ( ! m - > defaults ) )
return PyErr_NoMemory ( ) ;
memset ( m - > defaults , 0 , size ) ;
m - > defaults_pyobjects = pyobjects ;
return m - > defaults ;
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple ( PyObject * func , PyObject * tuple ) {
__pyx_CyFunctionObject * m = ( __pyx_CyFunctionObject * ) func ;
m - > defaults_tuple = tuple ;
Py_INCREF ( tuple ) ;
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict ( PyObject * func , PyObject * dict ) {
__pyx_CyFunctionObject * m = ( __pyx_CyFunctionObject * ) func ;
m - > defaults_kwdict = dict ;
Py_INCREF ( dict ) ;
}
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict ( PyObject * func , PyObject * dict ) {
__pyx_CyFunctionObject * m = ( __pyx_CyFunctionObject * ) func ;
m - > func_annotations = dict ;
Py_INCREF ( dict ) ;
}
/* PyErrFetchRestore */
# if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState ( PyThreadState * tstate , PyObject * type , PyObject * value , PyObject * tb ) {
PyObject * tmp_type , * tmp_value , * tmp_tb ;
tmp_type = tstate - > curexc_type ;
tmp_value = tstate - > curexc_value ;
tmp_tb = tstate - > curexc_traceback ;
tstate - > curexc_type = type ;
tstate - > curexc_value = value ;
tstate - > curexc_traceback = tb ;
Py_XDECREF ( tmp_type ) ;
Py_XDECREF ( tmp_value ) ;
Py_XDECREF ( tmp_tb ) ;
}
static CYTHON_INLINE void __Pyx_ErrFetchInState ( PyThreadState * tstate , PyObject * * type , PyObject * * value , PyObject * * tb ) {
* type = tstate - > curexc_type ;
* value = tstate - > curexc_value ;
* tb = tstate - > curexc_traceback ;
tstate - > curexc_type = 0 ;
tstate - > curexc_value = 0 ;
tstate - > curexc_traceback = 0 ;
}
# endif
/* CLineInTraceback */
# ifndef CYTHON_CLINE_IN_TRACEBACK
static int __Pyx_CLineForTraceback ( PyThreadState * tstate , int c_line ) {
PyObject * use_cline ;
PyObject * ptype , * pvalue , * ptraceback ;
# if CYTHON_COMPILING_IN_CPYTHON
PyObject * * cython_runtime_dict ;
# endif
if ( unlikely ( ! __pyx_cython_runtime ) ) {
return c_line ;
}
__Pyx_ErrFetchInState ( tstate , & ptype , & pvalue , & ptraceback ) ;
# if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr ( __pyx_cython_runtime ) ;
if ( likely ( cython_runtime_dict ) ) {
__PYX_PY_DICT_LOOKUP_IF_MODIFIED (
use_cline , * cython_runtime_dict ,
__Pyx_PyDict_GetItemStr ( * cython_runtime_dict , __pyx_n_s_cline_in_traceback ) )
} else
# endif
{
PyObject * use_cline_obj = __Pyx_PyObject_GetAttrStr ( __pyx_cython_runtime , __pyx_n_s_cline_in_traceback ) ;
if ( use_cline_obj ) {
use_cline = PyObject_Not ( use_cline_obj ) ? Py_False : Py_True ;
Py_DECREF ( use_cline_obj ) ;
} else {
PyErr_Clear ( ) ;
use_cline = NULL ;
}
}
if ( ! use_cline ) {
c_line = 0 ;
PyObject_SetAttr ( __pyx_cython_runtime , __pyx_n_s_cline_in_traceback , Py_False ) ;
}
else if ( use_cline = = Py_False | | ( use_cline ! = Py_True & & PyObject_Not ( use_cline ) ! = 0 ) ) {
c_line = 0 ;
}
__Pyx_ErrRestoreInState ( tstate , ptype , pvalue , ptraceback ) ;
return c_line ;
}
# endif
/* CodeObjectCache */
static int __pyx_bisect_code_objects ( __Pyx_CodeObjectCacheEntry * entries , int count , int code_line ) {
int start = 0 , mid = 0 , end = count - 1 ;
if ( end > = 0 & & code_line > entries [ end ] . code_line ) {
return count ;
}
while ( start < end ) {
mid = start + ( end - start ) / 2 ;
if ( code_line < entries [ mid ] . code_line ) {
end = mid ;
} else if ( code_line > entries [ mid ] . code_line ) {
start = mid + 1 ;
} else {
return mid ;
}
}
if ( code_line < = entries [ mid ] . code_line ) {
return mid ;
} else {
return mid + 1 ;
}
}
static PyCodeObject * __pyx_find_code_object ( int code_line ) {
PyCodeObject * code_object ;
int pos ;
if ( unlikely ( ! code_line ) | | unlikely ( ! __pyx_code_cache . entries ) ) {
return NULL ;
}
pos = __pyx_bisect_code_objects ( __pyx_code_cache . entries , __pyx_code_cache . count , code_line ) ;
if ( unlikely ( pos > = __pyx_code_cache . count ) | | unlikely ( __pyx_code_cache . entries [ pos ] . code_line ! = code_line ) ) {
return NULL ;
}
code_object = __pyx_code_cache . entries [ pos ] . code_object ;
Py_INCREF ( code_object ) ;
return code_object ;
}
static void __pyx_insert_code_object ( int code_line , PyCodeObject * code_object ) {
int pos , i ;
__Pyx_CodeObjectCacheEntry * entries = __pyx_code_cache . entries ;
if ( unlikely ( ! code_line ) ) {
return ;
}
if ( unlikely ( ! entries ) ) {
entries = ( __Pyx_CodeObjectCacheEntry * ) PyMem_Malloc ( 64 * sizeof ( __Pyx_CodeObjectCacheEntry ) ) ;
if ( likely ( entries ) ) {
__pyx_code_cache . entries = entries ;
__pyx_code_cache . max_count = 64 ;
__pyx_code_cache . count = 1 ;
entries [ 0 ] . code_line = code_line ;
entries [ 0 ] . code_object = code_object ;
Py_INCREF ( code_object ) ;
}
return ;
}
pos = __pyx_bisect_code_objects ( __pyx_code_cache . entries , __pyx_code_cache . count , code_line ) ;
if ( ( pos < __pyx_code_cache . count ) & & unlikely ( __pyx_code_cache . entries [ pos ] . code_line = = code_line ) ) {
PyCodeObject * tmp = entries [ pos ] . code_object ;
entries [ pos ] . code_object = code_object ;
Py_DECREF ( tmp ) ;
return ;
}
if ( __pyx_code_cache . count = = __pyx_code_cache . max_count ) {
int new_max = __pyx_code_cache . max_count + 64 ;
entries = ( __Pyx_CodeObjectCacheEntry * ) PyMem_Realloc (
__pyx_code_cache . entries , ( size_t ) new_max * sizeof ( __Pyx_CodeObjectCacheEntry ) ) ;
if ( unlikely ( ! entries ) ) {
return ;
}
__pyx_code_cache . entries = entries ;
__pyx_code_cache . max_count = new_max ;
}
for ( i = __pyx_code_cache . count ; i > pos ; i - - ) {
entries [ i ] = entries [ i - 1 ] ;
}
entries [ pos ] . code_line = code_line ;
entries [ pos ] . code_object = code_object ;
__pyx_code_cache . count + + ;
Py_INCREF ( code_object ) ;
}
/* AddTraceback */
# include "compile.h"
# include "frameobject.h"
# include "traceback.h"
static PyCodeObject * __Pyx_CreateCodeObjectForTraceback (
const char * funcname , int c_line ,
int py_line , const char * filename ) {
PyCodeObject * py_code = 0 ;
PyObject * py_srcfile = 0 ;
PyObject * py_funcname = 0 ;
# if PY_MAJOR_VERSION < 3
py_srcfile = PyString_FromString ( filename ) ;
# else
py_srcfile = PyUnicode_FromString ( filename ) ;
# endif
if ( ! py_srcfile ) goto bad ;
if ( c_line ) {
# if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromFormat ( " %s (%s:%d) " , funcname , __pyx_cfilenm , c_line ) ;
# else
py_funcname = PyUnicode_FromFormat ( " %s (%s:%d) " , funcname , __pyx_cfilenm , c_line ) ;
# endif
}
else {
# if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromString ( funcname ) ;
# else
py_funcname = PyUnicode_FromString ( funcname ) ;
# endif
}
if ( ! py_funcname ) goto bad ;
py_code = __Pyx_PyCode_New (
0 ,
0 ,
0 ,
0 ,
0 ,
__pyx_empty_bytes , /*PyObject *code,*/
__pyx_empty_tuple , /*PyObject *consts,*/
__pyx_empty_tuple , /*PyObject *names,*/
__pyx_empty_tuple , /*PyObject *varnames,*/
__pyx_empty_tuple , /*PyObject *freevars,*/
__pyx_empty_tuple , /*PyObject *cellvars,*/
py_srcfile , /*PyObject *filename,*/
py_funcname , /*PyObject *name,*/
py_line ,
__pyx_empty_bytes /*PyObject *lnotab*/
) ;
Py_DECREF ( py_srcfile ) ;
Py_DECREF ( py_funcname ) ;
return py_code ;
bad :
Py_XDECREF ( py_srcfile ) ;
Py_XDECREF ( py_funcname ) ;
return NULL ;
}
static void __Pyx_AddTraceback ( const char * funcname , int c_line ,
int py_line , const char * filename ) {
PyCodeObject * py_code = 0 ;
PyFrameObject * py_frame = 0 ;
PyThreadState * tstate = __Pyx_PyThreadState_Current ;
if ( c_line ) {
c_line = __Pyx_CLineForTraceback ( tstate , c_line ) ;
}
py_code = __pyx_find_code_object ( c_line ? - c_line : py_line ) ;
if ( ! py_code ) {
py_code = __Pyx_CreateCodeObjectForTraceback (
funcname , c_line , py_line , filename ) ;
if ( ! py_code ) goto bad ;
__pyx_insert_code_object ( c_line ? - c_line : py_line , py_code ) ;
}
py_frame = PyFrame_New (
tstate , /*PyThreadState *tstate,*/
py_code , /*PyCodeObject *code,*/
__pyx_d , /*PyObject *globals,*/
0 /*PyObject *locals*/
) ;
if ( ! py_frame ) goto bad ;
__Pyx_PyFrame_SetLineNumber ( py_frame , py_line ) ;
PyTraceBack_Here ( py_frame ) ;
bad :
Py_XDECREF ( py_code ) ;
Py_XDECREF ( py_frame ) ;
}
/* CIntToPy */
static CYTHON_INLINE PyObject * __Pyx_PyInt_From_long ( long value ) {
const long neg_one = ( long ) ( ( long ) 0 - ( long ) 1 ) , const_zero = ( long ) 0 ;
const int is_unsigned = neg_one > const_zero ;
if ( is_unsigned ) {
if ( sizeof ( long ) < sizeof ( long ) ) {
return PyInt_FromLong ( ( long ) value ) ;
} else if ( sizeof ( long ) < = sizeof ( unsigned long ) ) {
return PyLong_FromUnsignedLong ( ( unsigned long ) value ) ;
# ifdef HAVE_LONG_LONG
} else if ( sizeof ( long ) < = sizeof ( unsigned PY_LONG_LONG ) ) {
return PyLong_FromUnsignedLongLong ( ( unsigned PY_LONG_LONG ) value ) ;
# endif
}
} else {
if ( sizeof ( long ) < = sizeof ( long ) ) {
return PyInt_FromLong ( ( long ) value ) ;
# ifdef HAVE_LONG_LONG
} else if ( sizeof ( long ) < = sizeof ( PY_LONG_LONG ) ) {
return PyLong_FromLongLong ( ( PY_LONG_LONG ) value ) ;
# endif
}
}
{
int one = 1 ; int little = ( int ) * ( unsigned char * ) & one ;
unsigned char * bytes = ( unsigned char * ) & value ;
return _PyLong_FromByteArray ( bytes , sizeof ( long ) ,
little , ! is_unsigned ) ;
}
}
/* CIntFromPyVerify */
# define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT ( target_type , func_type , func_value , 0 )
# define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT ( target_type , func_type , func_value , 1 )
# define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
{ \
func_type value = func_value ; \
if ( sizeof ( target_type ) < sizeof ( func_type ) ) { \
if ( unlikely ( value ! = ( func_type ) ( target_type ) value ) ) { \
func_type zero = 0 ; \
if ( exc & & unlikely ( value = = ( func_type ) - 1 & & PyErr_Occurred ( ) ) ) \
return ( target_type ) - 1 ; \
if ( is_unsigned & & unlikely ( value < zero ) ) \
goto raise_neg_overflow ; \
else \
goto raise_overflow ; \
} \
} \
return ( target_type ) value ; \
}
/* CIntFromPy */
static CYTHON_INLINE long __Pyx_PyInt_As_long ( PyObject * x ) {
const long neg_one = ( long ) ( ( long ) 0 - ( long ) 1 ) , const_zero = ( long ) 0 ;
const int is_unsigned = neg_one > const_zero ;
# if PY_MAJOR_VERSION < 3
if ( likely ( PyInt_Check ( x ) ) ) {
if ( sizeof ( long ) < sizeof ( long ) ) {
__PYX_VERIFY_RETURN_INT ( long , long , PyInt_AS_LONG ( x ) )
} else {
long val = PyInt_AS_LONG ( x ) ;
if ( is_unsigned & & unlikely ( val < 0 ) ) {
goto raise_neg_overflow ;
}
return ( long ) val ;
}
} else
# endif
if ( likely ( PyLong_Check ( x ) ) ) {
if ( is_unsigned ) {
# if CYTHON_USE_PYLONG_INTERNALS
const digit * digits = ( ( PyLongObject * ) x ) - > ob_digit ;
switch ( Py_SIZE ( x ) ) {
case 0 : return ( long ) 0 ;
case 1 : __PYX_VERIFY_RETURN_INT ( long , digit , digits [ 0 ] )
case 2 :
if ( 8 * sizeof ( long ) > 1 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 2 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( long , unsigned long , ( ( ( ( ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( long ) > = 2 * PyLong_SHIFT ) {
return ( long ) ( ( ( ( ( long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 0 ] ) ) ;
}
}
break ;
case 3 :
if ( 8 * sizeof ( long ) > 2 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 3 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( long , unsigned long , ( ( ( ( ( ( ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( long ) > = 3 * PyLong_SHIFT ) {
return ( long ) ( ( ( ( ( ( ( long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 0 ] ) ) ;
}
}
break ;
case 4 :
if ( 8 * sizeof ( long ) > 3 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 4 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( long , unsigned long , ( ( ( ( ( ( ( ( ( unsigned long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( long ) > = 4 * PyLong_SHIFT ) {
return ( long ) ( ( ( ( ( ( ( ( ( long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 0 ] ) ) ;
}
}
break ;
}
# endif
# if CYTHON_COMPILING_IN_CPYTHON
if ( unlikely ( Py_SIZE ( x ) < 0 ) ) {
goto raise_neg_overflow ;
}
# else
{
int result = PyObject_RichCompareBool ( x , Py_False , Py_LT ) ;
if ( unlikely ( result < 0 ) )
return ( long ) - 1 ;
if ( unlikely ( result = = 1 ) )
goto raise_neg_overflow ;
}
# endif
if ( sizeof ( long ) < = sizeof ( unsigned long ) ) {
__PYX_VERIFY_RETURN_INT_EXC ( long , unsigned long , PyLong_AsUnsignedLong ( x ) )
# ifdef HAVE_LONG_LONG
} else if ( sizeof ( long ) < = sizeof ( unsigned PY_LONG_LONG ) ) {
__PYX_VERIFY_RETURN_INT_EXC ( long , unsigned PY_LONG_LONG , PyLong_AsUnsignedLongLong ( x ) )
# endif
}
} else {
# if CYTHON_USE_PYLONG_INTERNALS
const digit * digits = ( ( PyLongObject * ) x ) - > ob_digit ;
switch ( Py_SIZE ( x ) ) {
case 0 : return ( long ) 0 ;
case - 1 : __PYX_VERIFY_RETURN_INT ( long , sdigit , ( sdigit ) ( - ( sdigit ) digits [ 0 ] ) )
case 1 : __PYX_VERIFY_RETURN_INT ( long , digit , + digits [ 0 ] )
case - 2 :
if ( 8 * sizeof ( long ) - 1 > 1 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 2 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( long , long , - ( long ) ( ( ( ( ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( long ) - 1 > 2 * PyLong_SHIFT ) {
return ( long ) ( ( ( long ) - 1 ) * ( ( ( ( ( long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 0 ] ) ) ) ;
}
}
break ;
case 2 :
if ( 8 * sizeof ( long ) > 1 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 2 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( long , unsigned long , ( ( ( ( ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( long ) - 1 > 2 * PyLong_SHIFT ) {
return ( long ) ( ( ( ( ( ( long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 0 ] ) ) ) ;
}
}
break ;
case - 3 :
if ( 8 * sizeof ( long ) - 1 > 2 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 3 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( long , long , - ( long ) ( ( ( ( ( ( ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( long ) - 1 > 3 * PyLong_SHIFT ) {
return ( long ) ( ( ( long ) - 1 ) * ( ( ( ( ( ( ( long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 0 ] ) ) ) ;
}
}
break ;
case 3 :
if ( 8 * sizeof ( long ) > 2 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 3 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( long , unsigned long , ( ( ( ( ( ( ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( long ) - 1 > 3 * PyLong_SHIFT ) {
return ( long ) ( ( ( ( ( ( ( ( long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 0 ] ) ) ) ;
}
}
break ;
case - 4 :
if ( 8 * sizeof ( long ) - 1 > 3 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 4 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( long , long , - ( long ) ( ( ( ( ( ( ( ( ( unsigned long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( long ) - 1 > 4 * PyLong_SHIFT ) {
return ( long ) ( ( ( long ) - 1 ) * ( ( ( ( ( ( ( ( ( long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 0 ] ) ) ) ;
}
}
break ;
case 4 :
if ( 8 * sizeof ( long ) > 3 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 4 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( long , unsigned long , ( ( ( ( ( ( ( ( ( unsigned long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( long ) - 1 > 4 * PyLong_SHIFT ) {
return ( long ) ( ( ( ( ( ( ( ( ( ( long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( long ) digits [ 0 ] ) ) ) ;
}
}
break ;
}
# endif
if ( sizeof ( long ) < = sizeof ( long ) ) {
__PYX_VERIFY_RETURN_INT_EXC ( long , long , PyLong_AsLong ( x ) )
# ifdef HAVE_LONG_LONG
} else if ( sizeof ( long ) < = sizeof ( PY_LONG_LONG ) ) {
__PYX_VERIFY_RETURN_INT_EXC ( long , PY_LONG_LONG , PyLong_AsLongLong ( x ) )
# endif
}
}
{
# if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
PyErr_SetString ( PyExc_RuntimeError ,
" _PyLong_AsByteArray() not available in PyPy, cannot convert large numbers " ) ;
# else
long val ;
PyObject * v = __Pyx_PyNumber_IntOrLong ( x ) ;
# if PY_MAJOR_VERSION < 3
if ( likely ( v ) & & ! PyLong_Check ( v ) ) {
PyObject * tmp = v ;
v = PyNumber_Long ( tmp ) ;
Py_DECREF ( tmp ) ;
}
# endif
if ( likely ( v ) ) {
int one = 1 ; int is_little = ( int ) * ( unsigned char * ) & one ;
unsigned char * bytes = ( unsigned char * ) & val ;
int ret = _PyLong_AsByteArray ( ( PyLongObject * ) v ,
bytes , sizeof ( val ) ,
is_little , ! is_unsigned ) ;
Py_DECREF ( v ) ;
if ( likely ( ! ret ) )
return val ;
}
# endif
return ( long ) - 1 ;
}
} else {
long val ;
PyObject * tmp = __Pyx_PyNumber_IntOrLong ( x ) ;
if ( ! tmp ) return ( long ) - 1 ;
val = __Pyx_PyInt_As_long ( tmp ) ;
Py_DECREF ( tmp ) ;
return val ;
}
raise_overflow :
PyErr_SetString ( PyExc_OverflowError ,
" value too large to convert to long " ) ;
return ( long ) - 1 ;
raise_neg_overflow :
PyErr_SetString ( PyExc_OverflowError ,
" can't convert negative value to long " ) ;
return ( long ) - 1 ;
}
/* CIntFromPy */
static CYTHON_INLINE int __Pyx_PyInt_As_int ( PyObject * x ) {
const int neg_one = ( int ) ( ( int ) 0 - ( int ) 1 ) , const_zero = ( int ) 0 ;
const int is_unsigned = neg_one > const_zero ;
# if PY_MAJOR_VERSION < 3
if ( likely ( PyInt_Check ( x ) ) ) {
if ( sizeof ( int ) < sizeof ( long ) ) {
__PYX_VERIFY_RETURN_INT ( int , long , PyInt_AS_LONG ( x ) )
} else {
long val = PyInt_AS_LONG ( x ) ;
if ( is_unsigned & & unlikely ( val < 0 ) ) {
goto raise_neg_overflow ;
}
return ( int ) val ;
}
} else
# endif
if ( likely ( PyLong_Check ( x ) ) ) {
if ( is_unsigned ) {
# if CYTHON_USE_PYLONG_INTERNALS
const digit * digits = ( ( PyLongObject * ) x ) - > ob_digit ;
switch ( Py_SIZE ( x ) ) {
case 0 : return ( int ) 0 ;
case 1 : __PYX_VERIFY_RETURN_INT ( int , digit , digits [ 0 ] )
case 2 :
if ( 8 * sizeof ( int ) > 1 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 2 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( int , unsigned long , ( ( ( ( ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( int ) > = 2 * PyLong_SHIFT ) {
return ( int ) ( ( ( ( ( int ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 0 ] ) ) ;
}
}
break ;
case 3 :
if ( 8 * sizeof ( int ) > 2 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 3 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( int , unsigned long , ( ( ( ( ( ( ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( int ) > = 3 * PyLong_SHIFT ) {
return ( int ) ( ( ( ( ( ( ( int ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 0 ] ) ) ;
}
}
break ;
case 4 :
if ( 8 * sizeof ( int ) > 3 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 4 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( int , unsigned long , ( ( ( ( ( ( ( ( ( unsigned long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( int ) > = 4 * PyLong_SHIFT ) {
return ( int ) ( ( ( ( ( ( ( ( ( int ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 0 ] ) ) ;
}
}
break ;
}
# endif
# if CYTHON_COMPILING_IN_CPYTHON
if ( unlikely ( Py_SIZE ( x ) < 0 ) ) {
goto raise_neg_overflow ;
}
# else
{
int result = PyObject_RichCompareBool ( x , Py_False , Py_LT ) ;
if ( unlikely ( result < 0 ) )
return ( int ) - 1 ;
if ( unlikely ( result = = 1 ) )
goto raise_neg_overflow ;
}
# endif
if ( sizeof ( int ) < = sizeof ( unsigned long ) ) {
__PYX_VERIFY_RETURN_INT_EXC ( int , unsigned long , PyLong_AsUnsignedLong ( x ) )
# ifdef HAVE_LONG_LONG
} else if ( sizeof ( int ) < = sizeof ( unsigned PY_LONG_LONG ) ) {
__PYX_VERIFY_RETURN_INT_EXC ( int , unsigned PY_LONG_LONG , PyLong_AsUnsignedLongLong ( x ) )
# endif
}
} else {
# if CYTHON_USE_PYLONG_INTERNALS
const digit * digits = ( ( PyLongObject * ) x ) - > ob_digit ;
switch ( Py_SIZE ( x ) ) {
case 0 : return ( int ) 0 ;
case - 1 : __PYX_VERIFY_RETURN_INT ( int , sdigit , ( sdigit ) ( - ( sdigit ) digits [ 0 ] ) )
case 1 : __PYX_VERIFY_RETURN_INT ( int , digit , + digits [ 0 ] )
case - 2 :
if ( 8 * sizeof ( int ) - 1 > 1 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 2 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( int , long , - ( long ) ( ( ( ( ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( int ) - 1 > 2 * PyLong_SHIFT ) {
return ( int ) ( ( ( int ) - 1 ) * ( ( ( ( ( int ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 0 ] ) ) ) ;
}
}
break ;
case 2 :
if ( 8 * sizeof ( int ) > 1 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 2 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( int , unsigned long , ( ( ( ( ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( int ) - 1 > 2 * PyLong_SHIFT ) {
return ( int ) ( ( ( ( ( ( int ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 0 ] ) ) ) ;
}
}
break ;
case - 3 :
if ( 8 * sizeof ( int ) - 1 > 2 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 3 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( int , long , - ( long ) ( ( ( ( ( ( ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( int ) - 1 > 3 * PyLong_SHIFT ) {
return ( int ) ( ( ( int ) - 1 ) * ( ( ( ( ( ( ( int ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 0 ] ) ) ) ;
}
}
break ;
case 3 :
if ( 8 * sizeof ( int ) > 2 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 3 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( int , unsigned long , ( ( ( ( ( ( ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( int ) - 1 > 3 * PyLong_SHIFT ) {
return ( int ) ( ( ( ( ( ( ( ( int ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 0 ] ) ) ) ;
}
}
break ;
case - 4 :
if ( 8 * sizeof ( int ) - 1 > 3 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 4 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( int , long , - ( long ) ( ( ( ( ( ( ( ( ( unsigned long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( int ) - 1 > 4 * PyLong_SHIFT ) {
return ( int ) ( ( ( int ) - 1 ) * ( ( ( ( ( ( ( ( ( int ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 0 ] ) ) ) ;
}
}
break ;
case 4 :
if ( 8 * sizeof ( int ) > 3 * PyLong_SHIFT ) {
if ( 8 * sizeof ( unsigned long ) > 4 * PyLong_SHIFT ) {
__PYX_VERIFY_RETURN_INT ( int , unsigned long , ( ( ( ( ( ( ( ( ( unsigned long ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( unsigned long ) digits [ 0 ] ) ) )
} else if ( 8 * sizeof ( int ) - 1 > 4 * PyLong_SHIFT ) {
return ( int ) ( ( ( ( ( ( ( ( ( ( int ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( int ) digits [ 0 ] ) ) ) ;
}
}
break ;
}
# endif
if ( sizeof ( int ) < = sizeof ( long ) ) {
__PYX_VERIFY_RETURN_INT_EXC ( int , long , PyLong_AsLong ( x ) )
# ifdef HAVE_LONG_LONG
} else if ( sizeof ( int ) < = sizeof ( PY_LONG_LONG ) ) {
__PYX_VERIFY_RETURN_INT_EXC ( int , PY_LONG_LONG , PyLong_AsLongLong ( x ) )
# endif
}
}
{
# if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
PyErr_SetString ( PyExc_RuntimeError ,
" _PyLong_AsByteArray() not available in PyPy, cannot convert large numbers " ) ;
# else
int val ;
PyObject * v = __Pyx_PyNumber_IntOrLong ( x ) ;
# if PY_MAJOR_VERSION < 3
if ( likely ( v ) & & ! PyLong_Check ( v ) ) {
PyObject * tmp = v ;
v = PyNumber_Long ( tmp ) ;
Py_DECREF ( tmp ) ;
}
# endif
if ( likely ( v ) ) {
int one = 1 ; int is_little = ( int ) * ( unsigned char * ) & one ;
unsigned char * bytes = ( unsigned char * ) & val ;
int ret = _PyLong_AsByteArray ( ( PyLongObject * ) v ,
bytes , sizeof ( val ) ,
is_little , ! is_unsigned ) ;
Py_DECREF ( v ) ;
if ( likely ( ! ret ) )
return val ;
}
# endif
return ( int ) - 1 ;
}
} else {
int val ;
PyObject * tmp = __Pyx_PyNumber_IntOrLong ( x ) ;
if ( ! tmp ) return ( int ) - 1 ;
val = __Pyx_PyInt_As_int ( tmp ) ;
Py_DECREF ( tmp ) ;
return val ;
}
raise_overflow :
PyErr_SetString ( PyExc_OverflowError ,
" value too large to convert to int " ) ;
return ( int ) - 1 ;
raise_neg_overflow :
PyErr_SetString ( PyExc_OverflowError ,
" can't convert negative value to int " ) ;
return ( int ) - 1 ;
}
/* FastTypeChecks */
# if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases ( PyTypeObject * a , PyTypeObject * b ) {
while ( a ) {
a = a - > tp_base ;
if ( a = = b )
return 1 ;
}
return b = = & PyBaseObject_Type ;
}
static CYTHON_INLINE int __Pyx_IsSubtype ( PyTypeObject * a , PyTypeObject * b ) {
PyObject * mro ;
if ( a = = b ) return 1 ;
mro = a - > tp_mro ;
if ( likely ( mro ) ) {
Py_ssize_t i , n ;
n = PyTuple_GET_SIZE ( mro ) ;
for ( i = 0 ; i < n ; i + + ) {
if ( PyTuple_GET_ITEM ( mro , i ) = = ( PyObject * ) b )
return 1 ;
}
return 0 ;
}
return __Pyx_InBases ( a , b ) ;
}
# if PY_MAJOR_VERSION == 2
static int __Pyx_inner_PyErr_GivenExceptionMatches2 ( PyObject * err , PyObject * exc_type1 , PyObject * exc_type2 ) {
PyObject * exception , * value , * tb ;
int res ;
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__Pyx_ErrFetch ( & exception , & value , & tb ) ;
res = exc_type1 ? PyObject_IsSubclass ( err , exc_type1 ) : 0 ;
if ( unlikely ( res = = - 1 ) ) {
PyErr_WriteUnraisable ( err ) ;
res = 0 ;
}
if ( ! res ) {
res = PyObject_IsSubclass ( err , exc_type2 ) ;
if ( unlikely ( res = = - 1 ) ) {
PyErr_WriteUnraisable ( err ) ;
res = 0 ;
}
}
__Pyx_ErrRestore ( exception , value , tb ) ;
return res ;
}
# else
static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2 ( PyObject * err , PyObject * exc_type1 , PyObject * exc_type2 ) {
int res = exc_type1 ? __Pyx_IsSubtype ( ( PyTypeObject * ) err , ( PyTypeObject * ) exc_type1 ) : 0 ;
if ( ! res ) {
res = __Pyx_IsSubtype ( ( PyTypeObject * ) err , ( PyTypeObject * ) exc_type2 ) ;
}
return res ;
}
# endif
static int __Pyx_PyErr_GivenExceptionMatchesTuple ( PyObject * exc_type , PyObject * tuple ) {
Py_ssize_t i , n ;
assert ( PyExceptionClass_Check ( exc_type ) ) ;
n = PyTuple_GET_SIZE ( tuple ) ;
# if PY_MAJOR_VERSION >= 3
for ( i = 0 ; i < n ; i + + ) {
if ( exc_type = = PyTuple_GET_ITEM ( tuple , i ) ) return 1 ;
}
# endif
for ( i = 0 ; i < n ; i + + ) {
PyObject * t = PyTuple_GET_ITEM ( tuple , i ) ;
# if PY_MAJOR_VERSION < 3
if ( likely ( exc_type = = t ) ) return 1 ;
# endif
if ( likely ( PyExceptionClass_Check ( t ) ) ) {
if ( __Pyx_inner_PyErr_GivenExceptionMatches2 ( exc_type , NULL , t ) ) return 1 ;
} else {
}
}
return 0 ;
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches ( PyObject * err , PyObject * exc_type ) {
if ( likely ( err = = exc_type ) ) return 1 ;
if ( likely ( PyExceptionClass_Check ( err ) ) ) {
if ( likely ( PyExceptionClass_Check ( exc_type ) ) ) {
return __Pyx_inner_PyErr_GivenExceptionMatches2 ( err , NULL , exc_type ) ;
} else if ( likely ( PyTuple_Check ( exc_type ) ) ) {
return __Pyx_PyErr_GivenExceptionMatchesTuple ( err , exc_type ) ;
} else {
}
}
return PyErr_GivenExceptionMatches ( err , exc_type ) ;
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2 ( PyObject * err , PyObject * exc_type1 , PyObject * exc_type2 ) {
assert ( PyExceptionClass_Check ( exc_type1 ) ) ;
assert ( PyExceptionClass_Check ( exc_type2 ) ) ;
if ( likely ( err = = exc_type1 | | err = = exc_type2 ) ) return 1 ;
if ( likely ( PyExceptionClass_Check ( err ) ) ) {
return __Pyx_inner_PyErr_GivenExceptionMatches2 ( err , exc_type1 , exc_type2 ) ;
}
return ( PyErr_GivenExceptionMatches ( err , exc_type1 ) | | PyErr_GivenExceptionMatches ( err , exc_type2 ) ) ;
}
# endif
/* CheckBinaryVersion */
static int __Pyx_check_binary_version ( void ) {
char ctversion [ 4 ] , rtversion [ 4 ] ;
PyOS_snprintf ( ctversion , 4 , " %d.%d " , PY_MAJOR_VERSION , PY_MINOR_VERSION ) ;
PyOS_snprintf ( rtversion , 4 , " %s " , Py_GetVersion ( ) ) ;
if ( ctversion [ 0 ] ! = rtversion [ 0 ] | | ctversion [ 2 ] ! = rtversion [ 2 ] ) {
char message [ 200 ] ;
PyOS_snprintf ( message , sizeof ( message ) ,
" compiletime version %s of module '%.100s' "
" does not match runtime version %s " ,
ctversion , __Pyx_MODULE_NAME , rtversion ) ;
return PyErr_WarnEx ( NULL , message , 1 ) ;
}
return 0 ;
}
/* InitStrings */
static int __Pyx_InitStrings ( __Pyx_StringTabEntry * t ) {
while ( t - > p ) {
# if PY_MAJOR_VERSION < 3
if ( t - > is_unicode ) {
* t - > p = PyUnicode_DecodeUTF8 ( t - > s , t - > n - 1 , NULL ) ;
} else if ( t - > intern ) {
* t - > p = PyString_InternFromString ( t - > s ) ;
} else {
* t - > p = PyString_FromStringAndSize ( t - > s , t - > n - 1 ) ;
}
# else
if ( t - > is_unicode | t - > is_str ) {
if ( t - > intern ) {
* t - > p = PyUnicode_InternFromString ( t - > s ) ;
} else if ( t - > encoding ) {
* t - > p = PyUnicode_Decode ( t - > s , t - > n - 1 , t - > encoding , NULL ) ;
} else {
* t - > p = PyUnicode_FromStringAndSize ( t - > s , t - > n - 1 ) ;
}
} else {
* t - > p = PyBytes_FromStringAndSize ( t - > s , t - > n - 1 ) ;
}
# endif
if ( ! * t - > p )
return - 1 ;
if ( PyObject_Hash ( * t - > p ) = = - 1 )
return - 1 ;
+ + t ;
}
return 0 ;
}
static CYTHON_INLINE PyObject * __Pyx_PyUnicode_FromString ( const char * c_str ) {
return __Pyx_PyUnicode_FromStringAndSize ( c_str , ( Py_ssize_t ) strlen ( c_str ) ) ;
}
static CYTHON_INLINE const char * __Pyx_PyObject_AsString ( PyObject * o ) {
Py_ssize_t ignore ;
return __Pyx_PyObject_AsStringAndSize ( o , & ignore ) ;
}
# if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
# if !CYTHON_PEP393_ENABLED
static const char * __Pyx_PyUnicode_AsStringAndSize ( PyObject * o , Py_ssize_t * length ) {
char * defenc_c ;
PyObject * defenc = _PyUnicode_AsDefaultEncodedString ( o , NULL ) ;
if ( ! defenc ) return NULL ;
defenc_c = PyBytes_AS_STRING ( defenc ) ;
# if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
{
char * end = defenc_c + PyBytes_GET_SIZE ( defenc ) ;
char * c ;
for ( c = defenc_c ; c < end ; c + + ) {
if ( ( unsigned char ) ( * c ) > = 128 ) {
PyUnicode_AsASCIIString ( o ) ;
return NULL ;
}
}
}
# endif
* length = PyBytes_GET_SIZE ( defenc ) ;
return defenc_c ;
}
# else
static CYTHON_INLINE const char * __Pyx_PyUnicode_AsStringAndSize ( PyObject * o , Py_ssize_t * length ) {
if ( unlikely ( __Pyx_PyUnicode_READY ( o ) = = - 1 ) ) return NULL ;
# if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
if ( likely ( PyUnicode_IS_ASCII ( o ) ) ) {
* length = PyUnicode_GET_LENGTH ( o ) ;
return PyUnicode_AsUTF8 ( o ) ;
} else {
PyUnicode_AsASCIIString ( o ) ;
return NULL ;
}
# else
return PyUnicode_AsUTF8AndSize ( o , length ) ;
# endif
}
# endif
# endif
static CYTHON_INLINE const char * __Pyx_PyObject_AsStringAndSize ( PyObject * o , Py_ssize_t * length ) {
# if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
if (
# if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
__Pyx_sys_getdefaultencoding_not_ascii & &
# endif
PyUnicode_Check ( o ) ) {
return __Pyx_PyUnicode_AsStringAndSize ( o , length ) ;
} else
# endif
# if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
if ( PyByteArray_Check ( o ) ) {
* length = PyByteArray_GET_SIZE ( o ) ;
return PyByteArray_AS_STRING ( o ) ;
} else
# endif
{
char * result ;
int r = PyBytes_AsStringAndSize ( o , & result , length ) ;
if ( unlikely ( r < 0 ) ) {
return NULL ;
} else {
return result ;
}
}
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrue ( PyObject * x ) {
int is_true = x = = Py_True ;
if ( is_true | ( x = = Py_False ) | ( x = = Py_None ) ) return is_true ;
else return PyObject_IsTrue ( x ) ;
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref ( PyObject * x ) {
int retval ;
if ( unlikely ( ! x ) ) return - 1 ;
retval = __Pyx_PyObject_IsTrue ( x ) ;
Py_DECREF ( x ) ;
return retval ;
}
static PyObject * __Pyx_PyNumber_IntOrLongWrongResultType ( PyObject * result , const char * type_name ) {
# if PY_MAJOR_VERSION >= 3
if ( PyLong_Check ( result ) ) {
if ( PyErr_WarnFormat ( PyExc_DeprecationWarning , 1 ,
" __int__ returned non-int (type %.200s). "
" The ability to return an instance of a strict subclass of int "
" is deprecated, and may be removed in a future version of Python. " ,
Py_TYPE ( result ) - > tp_name ) ) {
Py_DECREF ( result ) ;
return NULL ;
}
return result ;
}
# endif
PyErr_Format ( PyExc_TypeError ,
" __%.4s__ returned non-%.4s (type %.200s) " ,
type_name , type_name , Py_TYPE ( result ) - > tp_name ) ;
Py_DECREF ( result ) ;
return NULL ;
}
static CYTHON_INLINE PyObject * __Pyx_PyNumber_IntOrLong ( PyObject * x ) {
# if CYTHON_USE_TYPE_SLOTS
PyNumberMethods * m ;
# endif
const char * name = NULL ;
PyObject * res = NULL ;
# if PY_MAJOR_VERSION < 3
if ( likely ( PyInt_Check ( x ) | | PyLong_Check ( x ) ) )
# else
if ( likely ( PyLong_Check ( x ) ) )
# endif
return __Pyx_NewRef ( x ) ;
# if CYTHON_USE_TYPE_SLOTS
m = Py_TYPE ( x ) - > tp_as_number ;
# if PY_MAJOR_VERSION < 3
if ( m & & m - > nb_int ) {
name = " int " ;
res = m - > nb_int ( x ) ;
}
else if ( m & & m - > nb_long ) {
name = " long " ;
res = m - > nb_long ( x ) ;
}
# else
if ( likely ( m & & m - > nb_int ) ) {
name = " int " ;
res = m - > nb_int ( x ) ;
}
# endif
# else
if ( ! PyBytes_CheckExact ( x ) & & ! PyUnicode_CheckExact ( x ) ) {
res = PyNumber_Int ( x ) ;
}
# endif
if ( likely ( res ) ) {
# if PY_MAJOR_VERSION < 3
if ( unlikely ( ! PyInt_Check ( res ) & & ! PyLong_Check ( res ) ) ) {
# else
if ( unlikely ( ! PyLong_CheckExact ( res ) ) ) {
# endif
return __Pyx_PyNumber_IntOrLongWrongResultType ( res , name ) ;
}
}
else if ( ! PyErr_Occurred ( ) ) {
PyErr_SetString ( PyExc_TypeError ,
" an integer is required " ) ;
}
return res ;
}
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t ( PyObject * b ) {
Py_ssize_t ival ;
PyObject * x ;
# if PY_MAJOR_VERSION < 3
if ( likely ( PyInt_CheckExact ( b ) ) ) {
if ( sizeof ( Py_ssize_t ) > = sizeof ( long ) )
return PyInt_AS_LONG ( b ) ;
else
return PyInt_AsSsize_t ( b ) ;
}
# endif
if ( likely ( PyLong_CheckExact ( b ) ) ) {
# if CYTHON_USE_PYLONG_INTERNALS
const digit * digits = ( ( PyLongObject * ) b ) - > ob_digit ;
const Py_ssize_t size = Py_SIZE ( b ) ;
if ( likely ( __Pyx_sst_abs ( size ) < = 1 ) ) {
ival = likely ( size ) ? digits [ 0 ] : 0 ;
if ( size = = - 1 ) ival = - ival ;
return ival ;
} else {
switch ( size ) {
case 2 :
if ( 8 * sizeof ( Py_ssize_t ) > 2 * PyLong_SHIFT ) {
return ( Py_ssize_t ) ( ( ( ( ( size_t ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( size_t ) digits [ 0 ] ) ) ;
}
break ;
case - 2 :
if ( 8 * sizeof ( Py_ssize_t ) > 2 * PyLong_SHIFT ) {
return - ( Py_ssize_t ) ( ( ( ( ( size_t ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( size_t ) digits [ 0 ] ) ) ;
}
break ;
case 3 :
if ( 8 * sizeof ( Py_ssize_t ) > 3 * PyLong_SHIFT ) {
return ( Py_ssize_t ) ( ( ( ( ( ( ( size_t ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( size_t ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( size_t ) digits [ 0 ] ) ) ;
}
break ;
case - 3 :
if ( 8 * sizeof ( Py_ssize_t ) > 3 * PyLong_SHIFT ) {
return - ( Py_ssize_t ) ( ( ( ( ( ( ( size_t ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( size_t ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( size_t ) digits [ 0 ] ) ) ;
}
break ;
case 4 :
if ( 8 * sizeof ( Py_ssize_t ) > 4 * PyLong_SHIFT ) {
return ( Py_ssize_t ) ( ( ( ( ( ( ( ( ( size_t ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( size_t ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( size_t ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( size_t ) digits [ 0 ] ) ) ;
}
break ;
case - 4 :
if ( 8 * sizeof ( Py_ssize_t ) > 4 * PyLong_SHIFT ) {
return - ( Py_ssize_t ) ( ( ( ( ( ( ( ( ( size_t ) digits [ 3 ] ) < < PyLong_SHIFT ) | ( size_t ) digits [ 2 ] ) < < PyLong_SHIFT ) | ( size_t ) digits [ 1 ] ) < < PyLong_SHIFT ) | ( size_t ) digits [ 0 ] ) ) ;
}
break ;
}
}
# endif
return PyLong_AsSsize_t ( b ) ;
}
x = PyNumber_Index ( b ) ;
if ( ! x ) return - 1 ;
ival = PyInt_AsSsize_t ( x ) ;
Py_DECREF ( x ) ;
return ival ;
}
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t ( PyObject * o ) {
if ( sizeof ( Py_hash_t ) = = sizeof ( Py_ssize_t ) ) {
return __Pyx_PyIndex_AsSsize_t ( o ) ;
# if PY_MAJOR_VERSION < 3
} else if ( likely ( PyInt_CheckExact ( o ) ) ) {
return PyInt_AS_LONG ( o ) ;
# endif
} else {
Py_ssize_t ival ;
PyObject * x ;
x = PyNumber_Index ( o ) ;
if ( ! x ) return - 1 ;
ival = PyInt_AsLong ( x ) ;
Py_DECREF ( x ) ;
return ival ;
}
}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong ( long b ) {
return b ? __Pyx_NewRef ( Py_True ) : __Pyx_NewRef ( Py_False ) ;
}
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t ( size_t ival ) {
return PyInt_FromSize_t ( ival ) ;
}
# endif /* Py_PYTHON_H */