feat: 切换后端至PaddleOCR-NCNN,切换工程为CMake
1.项目后端整体迁移至PaddleOCR-NCNN算法,已通过基本的兼容性测试 2.工程改为使用CMake组织,后续为了更好地兼容第三方库,不再提供QMake工程 3.重整权利声明文件,重整代码工程,确保最小化侵权风险 Log: 切换后端至PaddleOCR-NCNN,切换工程为CMake Change-Id: I4d5d2c5d37505a4a24b389b1a4c5d12f17bfa38c
This commit is contained in:
		
							
								
								
									
										180
									
								
								3rdparty/opencv-4.5.4/modules/python/package/cv2/__init__.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										180
									
								
								3rdparty/opencv-4.5.4/modules/python/package/cv2/__init__.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,180 @@
 | 
			
		||||
'''
 | 
			
		||||
OpenCV Python binary extension loader
 | 
			
		||||
'''
 | 
			
		||||
import os
 | 
			
		||||
import importlib
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
__all__ = []
 | 
			
		||||
 | 
			
		||||
try:
 | 
			
		||||
    import numpy
 | 
			
		||||
    import numpy.core.multiarray
 | 
			
		||||
except ImportError:
 | 
			
		||||
    print('OpenCV bindings requires "numpy" package.')
 | 
			
		||||
    print('Install it via command:')
 | 
			
		||||
    print('    pip install numpy')
 | 
			
		||||
    raise
 | 
			
		||||
 | 
			
		||||
# TODO
 | 
			
		||||
# is_x64 = sys.maxsize > 2**32
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def __load_extra_py_code_for_module(base, name, enable_debug_print=False):
 | 
			
		||||
    module_name = "{}.{}".format(__name__, name)
 | 
			
		||||
    export_module_name = "{}.{}".format(base, name)
 | 
			
		||||
    native_module = sys.modules.pop(module_name, None)
 | 
			
		||||
    try:
 | 
			
		||||
        py_module = importlib.import_module(module_name)
 | 
			
		||||
    except ImportError as err:
 | 
			
		||||
        if enable_debug_print:
 | 
			
		||||
            print("Can't load Python code for module:", module_name,
 | 
			
		||||
                  ". Reason:", err)
 | 
			
		||||
        # Extension doesn't contain extra py code
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
    if not hasattr(base, name):
 | 
			
		||||
        setattr(sys.modules[base], name, py_module)
 | 
			
		||||
    sys.modules[export_module_name] = py_module
 | 
			
		||||
    # If it is C extension module it is already loaded by cv2 package
 | 
			
		||||
    if native_module:
 | 
			
		||||
        setattr(py_module, "_native", native_module)
 | 
			
		||||
        for k, v in filter(lambda kv: not hasattr(py_module, kv[0]),
 | 
			
		||||
                           native_module.__dict__.items()):
 | 
			
		||||
            if enable_debug_print: print('    symbol: {} = {}'.format(k, v))
 | 
			
		||||
            setattr(py_module, k, v)
 | 
			
		||||
    return True
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def __collect_extra_submodules(enable_debug_print=False):
 | 
			
		||||
    def modules_filter(module):
 | 
			
		||||
        return all((
 | 
			
		||||
             # module is not internal
 | 
			
		||||
             not module.startswith("_"),
 | 
			
		||||
             # it is not a file
 | 
			
		||||
             os.path.isdir(os.path.join(_extra_submodules_init_path, module))
 | 
			
		||||
        ))
 | 
			
		||||
    if sys.version_info[0] < 3:
 | 
			
		||||
        if enable_debug_print:
 | 
			
		||||
            print("Extra submodules is loaded only for Python 3")
 | 
			
		||||
        return []
 | 
			
		||||
 | 
			
		||||
    __INIT_FILE_PATH = os.path.abspath(__file__)
 | 
			
		||||
    _extra_submodules_init_path = os.path.dirname(__INIT_FILE_PATH)
 | 
			
		||||
    return filter(modules_filter, os.listdir(_extra_submodules_init_path))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def bootstrap():
 | 
			
		||||
    import sys
 | 
			
		||||
 | 
			
		||||
    import copy
 | 
			
		||||
    save_sys_path = copy.copy(sys.path)
 | 
			
		||||
 | 
			
		||||
    if hasattr(sys, 'OpenCV_LOADER'):
 | 
			
		||||
        print(sys.path)
 | 
			
		||||
        raise ImportError('ERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation.')
 | 
			
		||||
    sys.OpenCV_LOADER = True
 | 
			
		||||
 | 
			
		||||
    DEBUG = False
 | 
			
		||||
    if hasattr(sys, 'OpenCV_LOADER_DEBUG'):
 | 
			
		||||
        DEBUG = True
 | 
			
		||||
 | 
			
		||||
    import platform
 | 
			
		||||
    if DEBUG: print('OpenCV loader: os.name="{}"  platform.system()="{}"'.format(os.name, str(platform.system())))
 | 
			
		||||
 | 
			
		||||
    LOADER_DIR = os.path.dirname(os.path.abspath(os.path.realpath(__file__)))
 | 
			
		||||
 | 
			
		||||
    PYTHON_EXTENSIONS_PATHS = []
 | 
			
		||||
    BINARIES_PATHS = []
 | 
			
		||||
 | 
			
		||||
    g_vars = globals()
 | 
			
		||||
    l_vars = locals()
 | 
			
		||||
 | 
			
		||||
    if sys.version_info[:2] < (3, 0):
 | 
			
		||||
        from . load_config_py2 import exec_file_wrapper
 | 
			
		||||
    else:
 | 
			
		||||
        from . load_config_py3 import exec_file_wrapper
 | 
			
		||||
 | 
			
		||||
    def load_first_config(fnames, required=True):
 | 
			
		||||
        for fname in fnames:
 | 
			
		||||
            fpath = os.path.join(LOADER_DIR, fname)
 | 
			
		||||
            if not os.path.exists(fpath):
 | 
			
		||||
                if DEBUG: print('OpenCV loader: config not found, skip: {}'.format(fpath))
 | 
			
		||||
                continue
 | 
			
		||||
            if DEBUG: print('OpenCV loader: loading config: {}'.format(fpath))
 | 
			
		||||
            exec_file_wrapper(fpath, g_vars, l_vars)
 | 
			
		||||
            return True
 | 
			
		||||
        if required:
 | 
			
		||||
            raise ImportError('OpenCV loader: missing configuration file: {}. Check OpenCV installation.'.format(fnames))
 | 
			
		||||
 | 
			
		||||
    load_first_config(['config.py'], True)
 | 
			
		||||
    load_first_config([
 | 
			
		||||
        'config-{}.{}.py'.format(sys.version_info[0], sys.version_info[1]),
 | 
			
		||||
        'config-{}.py'.format(sys.version_info[0])
 | 
			
		||||
    ], True)
 | 
			
		||||
 | 
			
		||||
    if DEBUG: print('OpenCV loader: PYTHON_EXTENSIONS_PATHS={}'.format(str(l_vars['PYTHON_EXTENSIONS_PATHS'])))
 | 
			
		||||
    if DEBUG: print('OpenCV loader: BINARIES_PATHS={}'.format(str(l_vars['BINARIES_PATHS'])))
 | 
			
		||||
 | 
			
		||||
    applySysPathWorkaround = False
 | 
			
		||||
    if hasattr(sys, 'OpenCV_REPLACE_SYS_PATH_0'):
 | 
			
		||||
        applySysPathWorkaround = True
 | 
			
		||||
    else:
 | 
			
		||||
        try:
 | 
			
		||||
            BASE_DIR = os.path.dirname(LOADER_DIR)
 | 
			
		||||
            if sys.path[0] == BASE_DIR or os.path.realpath(sys.path[0]) == BASE_DIR:
 | 
			
		||||
                applySysPathWorkaround = True
 | 
			
		||||
        except:
 | 
			
		||||
            if DEBUG: print('OpenCV loader: exception during checking workaround for sys.path[0]')
 | 
			
		||||
            pass  # applySysPathWorkaround is False
 | 
			
		||||
 | 
			
		||||
    for p in reversed(l_vars['PYTHON_EXTENSIONS_PATHS']):
 | 
			
		||||
        sys.path.insert(1 if not applySysPathWorkaround else 0, p)
 | 
			
		||||
 | 
			
		||||
    if os.name == 'nt':
 | 
			
		||||
        if sys.version_info[:2] >= (3, 8):  # https://github.com/python/cpython/pull/12302
 | 
			
		||||
            for p in l_vars['BINARIES_PATHS']:
 | 
			
		||||
                try:
 | 
			
		||||
                    os.add_dll_directory(p)
 | 
			
		||||
                except Exception as e:
 | 
			
		||||
                    if DEBUG: print('Failed os.add_dll_directory(): '+ str(e))
 | 
			
		||||
                    pass
 | 
			
		||||
        os.environ['PATH'] = ';'.join(l_vars['BINARIES_PATHS']) + ';' + os.environ.get('PATH', '')
 | 
			
		||||
        if DEBUG: print('OpenCV loader: PATH={}'.format(str(os.environ['PATH'])))
 | 
			
		||||
    else:
 | 
			
		||||
        # amending of LD_LIBRARY_PATH works for sub-processes only
 | 
			
		||||
        os.environ['LD_LIBRARY_PATH'] = ':'.join(l_vars['BINARIES_PATHS']) + ':' + os.environ.get('LD_LIBRARY_PATH', '')
 | 
			
		||||
 | 
			
		||||
    if DEBUG: print("Relink everything from native cv2 module to cv2 package")
 | 
			
		||||
 | 
			
		||||
    py_module = sys.modules.pop("cv2")
 | 
			
		||||
 | 
			
		||||
    native_module = importlib.import_module("cv2")
 | 
			
		||||
 | 
			
		||||
    sys.modules["cv2"] = py_module
 | 
			
		||||
    setattr(py_module, "_native", native_module)
 | 
			
		||||
 | 
			
		||||
    for item_name, item in filter(lambda kv: kv[0] not in ("__file__", "__loader__", "__spec__",
 | 
			
		||||
                                                           "__name__", "__package__"),
 | 
			
		||||
                                  native_module.__dict__.items()):
 | 
			
		||||
        if item_name not in g_vars:
 | 
			
		||||
            g_vars[item_name] = item
 | 
			
		||||
 | 
			
		||||
    sys.path = save_sys_path  # multiprocessing should start from bootstrap code (https://github.com/opencv/opencv/issues/18502)
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        del sys.OpenCV_LOADER
 | 
			
		||||
    except Exception as e:
 | 
			
		||||
        if DEBUG:
 | 
			
		||||
            print("Exception during delete OpenCV_LOADER:", e)
 | 
			
		||||
 | 
			
		||||
    if DEBUG: print('OpenCV loader: binary extension... OK')
 | 
			
		||||
 | 
			
		||||
    for submodule in __collect_extra_submodules(DEBUG):
 | 
			
		||||
        if __load_extra_py_code_for_module("cv2", submodule, DEBUG):
 | 
			
		||||
            if DEBUG: print("Extra Python code for", submodule, "is loaded")
 | 
			
		||||
 | 
			
		||||
    if DEBUG: print('OpenCV loader: DONE')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
bootstrap()
 | 
			
		||||
							
								
								
									
										6
									
								
								3rdparty/opencv-4.5.4/modules/python/package/cv2/load_config_py2.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								3rdparty/opencv-4.5.4/modules/python/package/cv2/load_config_py2.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
# flake8: noqa
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
if sys.version_info[:2] < (3, 0):
 | 
			
		||||
    def exec_file_wrapper(fpath, g_vars, l_vars):
 | 
			
		||||
        execfile(fpath, g_vars, l_vars)
 | 
			
		||||
							
								
								
									
										9
									
								
								3rdparty/opencv-4.5.4/modules/python/package/cv2/load_config_py3.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								3rdparty/opencv-4.5.4/modules/python/package/cv2/load_config_py3.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
# flake8: noqa
 | 
			
		||||
import os
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
if sys.version_info[:2] >= (3, 0):
 | 
			
		||||
    def exec_file_wrapper(fpath, g_vars, l_vars):
 | 
			
		||||
        with open(fpath) as f:
 | 
			
		||||
            code = compile(f.read(), os.path.basename(fpath), 'exec')
 | 
			
		||||
            exec(code, g_vars, l_vars)
 | 
			
		||||
							
								
								
									
										1
									
								
								3rdparty/opencv-4.5.4/modules/python/package/extra_modules/misc/__init__.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								3rdparty/opencv-4.5.4/modules/python/package/extra_modules/misc/__init__.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
from .version import get_ocv_version
 | 
			
		||||
							
								
								
									
										5
									
								
								3rdparty/opencv-4.5.4/modules/python/package/extra_modules/misc/version.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								3rdparty/opencv-4.5.4/modules/python/package/extra_modules/misc/version.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
import cv2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_ocv_version():
 | 
			
		||||
    return getattr(cv2, "__version__", "unavailable")
 | 
			
		||||
							
								
								
									
										59
									
								
								3rdparty/opencv-4.5.4/modules/python/package/setup.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								3rdparty/opencv-4.5.4/modules/python/package/setup.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,59 @@
 | 
			
		||||
import os
 | 
			
		||||
import sys
 | 
			
		||||
import platform
 | 
			
		||||
import setuptools
 | 
			
		||||
 | 
			
		||||
SCRIPT_DIR=os.path.dirname(os.path.abspath(__file__))
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    os.chdir(SCRIPT_DIR)
 | 
			
		||||
 | 
			
		||||
    package_name = 'opencv'
 | 
			
		||||
    package_version = os.environ.get('OPENCV_VERSION', '4.5.4')  # TODO
 | 
			
		||||
 | 
			
		||||
    long_description = 'Open Source Computer Vision Library Python bindings'  # TODO
 | 
			
		||||
 | 
			
		||||
    setuptools.setup(
 | 
			
		||||
        name=package_name,
 | 
			
		||||
        version=package_version,
 | 
			
		||||
        url='https://github.com/opencv/opencv',
 | 
			
		||||
        license='Apache 2.0',
 | 
			
		||||
        description='OpenCV python bindings',
 | 
			
		||||
        long_description=long_description,
 | 
			
		||||
        long_description_content_type="text/markdown",
 | 
			
		||||
        packages=setuptools.find_packages(),
 | 
			
		||||
        maintainer="OpenCV Team",
 | 
			
		||||
        install_requires="numpy",
 | 
			
		||||
        classifiers=[
 | 
			
		||||
          'Development Status :: 5 - Production/Stable',
 | 
			
		||||
          'Environment :: Console',
 | 
			
		||||
          'Intended Audience :: Developers',
 | 
			
		||||
          'Intended Audience :: Education',
 | 
			
		||||
          'Intended Audience :: Information Technology',
 | 
			
		||||
          'Intended Audience :: Science/Research',
 | 
			
		||||
          'License :: Apache 2.0 License',
 | 
			
		||||
          'Operating System :: MacOS',
 | 
			
		||||
          'Operating System :: Microsoft :: Windows',
 | 
			
		||||
          'Operating System :: POSIX',
 | 
			
		||||
          'Operating System :: Unix',
 | 
			
		||||
          'Programming Language :: Python',
 | 
			
		||||
          'Programming Language :: Python :: 2',
 | 
			
		||||
          'Programming Language :: Python :: 2.7',
 | 
			
		||||
          'Programming Language :: Python :: 3',
 | 
			
		||||
          'Programming Language :: Python :: 3.4',
 | 
			
		||||
          'Programming Language :: Python :: 3.5',
 | 
			
		||||
          'Programming Language :: Python :: 3.6',
 | 
			
		||||
          'Programming Language :: Python :: 3.7',
 | 
			
		||||
          'Programming Language :: Python :: 3.8',
 | 
			
		||||
          'Programming Language :: Python :: 3.9',
 | 
			
		||||
          'Programming Language :: C++',
 | 
			
		||||
          'Programming Language :: Python :: Implementation :: CPython',
 | 
			
		||||
          'Topic :: Scientific/Engineering',
 | 
			
		||||
          'Topic :: Scientific/Engineering :: Image Recognition',
 | 
			
		||||
          'Topic :: Software Development',
 | 
			
		||||
          'Topic :: Software Development :: Libraries',
 | 
			
		||||
        ],
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
							
								
								
									
										3
									
								
								3rdparty/opencv-4.5.4/modules/python/package/template/config-x.y.py.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								3rdparty/opencv-4.5.4/modules/python/package/template/config-x.y.py.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
PYTHON_EXTENSIONS_PATHS = [
 | 
			
		||||
    @CMAKE_PYTHON_EXTENSION_PATH@
 | 
			
		||||
] + PYTHON_EXTENSIONS_PATHS
 | 
			
		||||
							
								
								
									
										5
									
								
								3rdparty/opencv-4.5.4/modules/python/package/template/config.py.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								3rdparty/opencv-4.5.4/modules/python/package/template/config.py.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
BINARIES_PATHS = [
 | 
			
		||||
    @CMAKE_PYTHON_BINARIES_PATH@
 | 
			
		||||
] + BINARIES_PATHS
 | 
			
		||||
		Reference in New Issue
	
	Block a user