vtool-ibeis-ext 0.1.3__cp313-cp313-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vtool_ibeis_ext/__init__.py +8 -0
- vtool_ibeis_ext/lib/sver.dll +0 -0
- vtool_ibeis_ext/sver_c_wrapper.py +182 -0
- vtool_ibeis_ext-0.1.3.dist-info/METADATA +194 -0
- vtool_ibeis_ext-0.1.3.dist-info/RECORD +7 -0
- vtool_ibeis_ext-0.1.3.dist-info/WHEEL +5 -0
- vtool_ibeis_ext-0.1.3.dist-info/top_level.txt +1 -0
|
Binary file
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
"""
|
|
3
|
+
wraps c implementations slower parts of spatial verification
|
|
4
|
+
|
|
5
|
+
CommandLine:
|
|
6
|
+
python -m vtool_ibeis_ext.sver_c_wrapper --rebuild-sver
|
|
7
|
+
python -m vtool_ibeis_ext.sver_c_wrapper --rebuild-sver
|
|
8
|
+
xdoctest -m vtool_ibeis_ext.sver_c_wrapper
|
|
9
|
+
|
|
10
|
+
Example:
|
|
11
|
+
>>> import numpy as np
|
|
12
|
+
>>> kpts1 = np.array([[ 3.2e+01, 2.7e+01, 1.7e+01, 5.0e+00, 2.1e+01, 6.2e+00],
|
|
13
|
+
>>> [ 1.3e+02, 2.3e+01, 2.0e+01, 2.7e+00, 2.1e+01, 6.3e+00],
|
|
14
|
+
>>> [ 2.3e+02, 2.4e+01, 1.7e+01, -9.2e+00, 1.6e+01, 4.7e-01],
|
|
15
|
+
>>> [ 3.0e+01, 1.3e+02, 1.6e+01, -9.2e+00, 1.8e+01, 5.6e+00],
|
|
16
|
+
>>> [ 1.3e+02, 1.4e+02, 1.9e+01, -1.6e-01, 2.1e+01, 1.1e-01],
|
|
17
|
+
>>> [ 2.3e+02, 1.3e+02, 1.9e+01, -1.1e+00, 2.0e+01, 4.8e-02],
|
|
18
|
+
>>> [ 3.5e+01, 2.2e+02, 1.8e+01, -3.0e+00, 2.0e+01, 1.8e-01],
|
|
19
|
+
>>> [ 1.4e+02, 2.3e+02, 1.8e+01, -2.4e+00, 2.0e+01, 6.0e+00],
|
|
20
|
+
>>> [ 2.3e+02, 2.3e+02, 2.3e+01, 1.3e+00, 1.9e+01, 4.4e-01]], dtype=np.float64)
|
|
21
|
+
>>> kpts2 = np.array([[3.4e+01, 2.8e+01, 2.0e+01, 1.6e+00, 1.7e+01, 1.8e-02],
|
|
22
|
+
>>> [1.3e+02, 2.7e+01, 2.1e+01, 4.4e+00, 2.0e+01, 6.3e+00],
|
|
23
|
+
>>> [2.3e+02, 2.6e+01, 2.0e+01, 3.8e+00, 2.0e+01, 7.3e-03],
|
|
24
|
+
>>> [3.2e+01, 1.3e+02, 2.3e+01, 1.1e+00, 2.2e+01, 6.0e+00],
|
|
25
|
+
>>> [1.2e+02, 1.3e+02, 1.9e+01, 1.6e+00, 2.3e+01, 6.2e+00],
|
|
26
|
+
>>> [2.3e+02, 1.4e+02, 1.8e+01, 4.5e+00, 1.6e+01, 2.7e-01],
|
|
27
|
+
>>> [3.3e+01, 2.3e+02, 2.0e+01, 2.0e+00, 1.9e+01, 1.7e-01],
|
|
28
|
+
>>> [1.3e+02, 2.3e+02, 2.1e+01, 4.0e+00, 2.1e+01, 1.1e-01],
|
|
29
|
+
>>> [2.3e+02, 2.3e+02, 1.6e+01, 2.5e+00, 2.2e+01, 6.2e+00]], dtype=np.float64)
|
|
30
|
+
>>> fm = np.array([[0, 0],[1, 1],[2, 2],[3, 3],[4, 4],[5, 5],[6, 6],[7, 7],[8, 8]], dtype=np.int64)
|
|
31
|
+
>>> fs = np.array([1., 1., 1., 1., 1., 1., 1., 1., 1.], dtype=np.float64)
|
|
32
|
+
>>> xy_thresh_sqrd = 100
|
|
33
|
+
>>> scale_thresh_sqrd = 100
|
|
34
|
+
>>> ori_thresh = 100
|
|
35
|
+
>>> from vtool_ibeis_ext.sver_c_wrapper import *
|
|
36
|
+
>>> out_inliers, out_errors, out_mats = get_affine_inliers_cpp(kpts1, kpts2, fm, fs, xy_thresh_sqrd, scale_thresh_sqrd, ori_thresh)
|
|
37
|
+
>>> out_inliers, out_errors, out_mats = get_best_affine_inliers_cpp(kpts1, kpts2, fm, fs, xy_thresh_sqrd, scale_thresh_sqrd, ori_thresh)
|
|
38
|
+
"""
|
|
39
|
+
import ctypes as C
|
|
40
|
+
import numpy as np
|
|
41
|
+
import ubelt as ub
|
|
42
|
+
from os.path import dirname, join
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
if ub.WIN32:
|
|
46
|
+
lib_ext = '.dll'
|
|
47
|
+
elif ub.DARWIN:
|
|
48
|
+
lib_ext = '.dylib'
|
|
49
|
+
elif ub.LINUX:
|
|
50
|
+
lib_ext = '.so'
|
|
51
|
+
else:
|
|
52
|
+
lib_ext = '.so'
|
|
53
|
+
|
|
54
|
+
c_double_p = C.POINTER(C.c_double)
|
|
55
|
+
|
|
56
|
+
# copied/adapted from _pyhesaff.py
|
|
57
|
+
kpts_dtype = np.float64
|
|
58
|
+
fm_dtype = np.int64 if C.sizeof(C.c_size_t) == 8 else np.int32
|
|
59
|
+
fs_dtype = np.float64
|
|
60
|
+
FLAGS_RW = 'aligned, c_contiguous, writeable'
|
|
61
|
+
FLAGS_RO = 'aligned, c_contiguous'
|
|
62
|
+
|
|
63
|
+
kpts_t = np.ctypeslib.ndpointer(dtype=kpts_dtype, ndim=2, flags=FLAGS_RO)
|
|
64
|
+
fm_t = np.ctypeslib.ndpointer(dtype=fm_dtype, ndim=2, flags=FLAGS_RO)
|
|
65
|
+
fs_t = np.ctypeslib.ndpointer(dtype=fs_dtype, ndim=1, flags=FLAGS_RO)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def inliers_t(ndim):
|
|
69
|
+
return np.ctypeslib.ndpointer(dtype=bool, ndim=ndim, flags=FLAGS_RW)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def errs_t(ndim):
|
|
73
|
+
return np.ctypeslib.ndpointer(dtype=np.float64, ndim=ndim, flags=FLAGS_RW)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def mats_t(ndim):
|
|
77
|
+
return np.ctypeslib.ndpointer(dtype=np.float64, ndim=ndim, flags=FLAGS_RW)
|
|
78
|
+
|
|
79
|
+
dpath = dirname(__file__)
|
|
80
|
+
|
|
81
|
+
_lib_search_paths = [join(dpath, 'lib'), dpath]
|
|
82
|
+
_lib_basenames = ['libsver', 'sver']
|
|
83
|
+
if ub.WIN32:
|
|
84
|
+
# Windows builds typically produce sver.dll (no 'lib' prefix)
|
|
85
|
+
_lib_basenames = ['sver', 'libsver']
|
|
86
|
+
|
|
87
|
+
lib_fname_cand = []
|
|
88
|
+
for _base in _lib_basenames:
|
|
89
|
+
lib_fname_cand.extend(list(ub.find_path(
|
|
90
|
+
name=_base + lib_ext,
|
|
91
|
+
path=_lib_search_paths,
|
|
92
|
+
exact=False)
|
|
93
|
+
))
|
|
94
|
+
lib_fname_cand = list(dict.fromkeys(lib_fname_cand))
|
|
95
|
+
|
|
96
|
+
if len(lib_fname_cand):
|
|
97
|
+
if len(lib_fname_cand) > 1:
|
|
98
|
+
print('multiple libsver candidates: {}'.format(lib_fname_cand))
|
|
99
|
+
lib_fname = lib_fname_cand[0]
|
|
100
|
+
else:
|
|
101
|
+
raise Exception(
|
|
102
|
+
'cannot find sver library; tried names={} in paths={}'.format(
|
|
103
|
+
_lib_basenames, _lib_search_paths
|
|
104
|
+
)
|
|
105
|
+
)
|
|
106
|
+
lib_fname = None
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
if __name__ != '__main__':
|
|
110
|
+
try:
|
|
111
|
+
c_sver = C.cdll[lib_fname]
|
|
112
|
+
except Exception:
|
|
113
|
+
print('Failed to open lib_fname = %r' % (lib_fname,))
|
|
114
|
+
raise
|
|
115
|
+
c_getaffineinliers = c_sver['get_affine_inliers']
|
|
116
|
+
c_getaffineinliers.restype = C.c_int
|
|
117
|
+
# for every affine hypothesis, for every keypoint pair (is
|
|
118
|
+
# it an inlier, the error triples, the hypothesis itself)
|
|
119
|
+
c_getaffineinliers.argtypes = [kpts_t, C.c_size_t,
|
|
120
|
+
kpts_t, C.c_size_t,
|
|
121
|
+
fm_t, fs_t, C.c_size_t,
|
|
122
|
+
C.c_double, C.c_double, C.c_double,
|
|
123
|
+
inliers_t(2), errs_t(3), mats_t(3)]
|
|
124
|
+
# for the best affine hypothesis, for every keypoint pair
|
|
125
|
+
# (is it an inlier, the error triples (transposed?), the
|
|
126
|
+
# hypothesis itself)
|
|
127
|
+
c_getbestaffineinliers = c_sver['get_best_affine_inliers']
|
|
128
|
+
c_getbestaffineinliers.restype = C.c_int
|
|
129
|
+
c_getbestaffineinliers.argtypes = [kpts_t, C.c_size_t,
|
|
130
|
+
kpts_t, C.c_size_t,
|
|
131
|
+
fm_t, fs_t, C.c_size_t,
|
|
132
|
+
C.c_double, C.c_double, C.c_double,
|
|
133
|
+
inliers_t(1), errs_t(2), mats_t(2)]
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def get_affine_inliers_cpp(kpts1, kpts2, fm, fs, xy_thresh_sqrd, scale_thresh_sqrd, ori_thresh):
|
|
137
|
+
#np.ascontiguousarray(kpts1)
|
|
138
|
+
num_matches = len(fm)
|
|
139
|
+
fm = np.ascontiguousarray(fm, dtype=fm_dtype)
|
|
140
|
+
out_inlier_flags = np.empty((num_matches, num_matches), bool)
|
|
141
|
+
out_errors = np.empty((num_matches, 3, num_matches), np.float64)
|
|
142
|
+
out_mats = np.empty((num_matches, 3, 3), np.float64)
|
|
143
|
+
c_getaffineinliers(kpts1, kpts1.size,
|
|
144
|
+
kpts2, kpts2.size,
|
|
145
|
+
fm, fs, len(fm),
|
|
146
|
+
xy_thresh_sqrd, scale_thresh_sqrd, ori_thresh,
|
|
147
|
+
out_inlier_flags, out_errors, out_mats)
|
|
148
|
+
out_inliers = [np.where(row)[0] for row in out_inlier_flags]
|
|
149
|
+
out_errors = list(map(tuple, out_errors))
|
|
150
|
+
return out_inliers, out_errors, out_mats
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def get_best_affine_inliers_cpp(kpts1, kpts2, fm, fs, xy_thresh_sqrd,
|
|
154
|
+
scale_thresh_sqrd, ori_thresh):
|
|
155
|
+
#np.ascontiguousarray(kpts1)
|
|
156
|
+
fm = np.ascontiguousarray(fm, dtype=fm_dtype)
|
|
157
|
+
out_inlier_flags = np.empty((len(fm),), bool)
|
|
158
|
+
out_errors = np.empty((3, len(fm)), np.float64)
|
|
159
|
+
out_mat = np.empty((3, 3), np.float64)
|
|
160
|
+
c_getbestaffineinliers(kpts1, 6 * len(kpts1),
|
|
161
|
+
kpts2, 6 * len(kpts2),
|
|
162
|
+
fm, fs, len(fm),
|
|
163
|
+
xy_thresh_sqrd, scale_thresh_sqrd, ori_thresh,
|
|
164
|
+
out_inlier_flags, out_errors, out_mat)
|
|
165
|
+
out_inliers = np.where(out_inlier_flags)[0]
|
|
166
|
+
out_errors = tuple(out_errors)
|
|
167
|
+
return out_inliers, out_errors, out_mat
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def call_hello():
|
|
171
|
+
lib = C.cdll['./sver.so']
|
|
172
|
+
hello = lib['hello_world']
|
|
173
|
+
hello()
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
if __name__ == '__main__':
|
|
177
|
+
"""
|
|
178
|
+
CommandLine:
|
|
179
|
+
xdoctest -m vtool_ibeis_ext.sver_c_wrapper
|
|
180
|
+
"""
|
|
181
|
+
import xdoctest
|
|
182
|
+
xdoctest.doctest_module(__file__)
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vtool_ibeis_ext
|
|
3
|
+
Version: 0.1.3
|
|
4
|
+
Summary: The vtool_ibeis_ext module
|
|
5
|
+
Home-page: https://github.com/Erotemic/vtool_ibeis_ext
|
|
6
|
+
Author: Jon Crall, Avi Weinstock
|
|
7
|
+
Author-email: erotemic@gmail.com
|
|
8
|
+
License: Apache 2
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
12
|
+
Classifier: Topic :: Utilities
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
|
+
Requires-Python: >=3.9
|
|
20
|
+
Description-Content-Type: text/x-rst
|
|
21
|
+
Requires-Dist: ubelt>=1.3.4
|
|
22
|
+
Requires-Dist: numpy>=2.3.2; python_version < "4.0" and python_version >= "3.14"
|
|
23
|
+
Requires-Dist: numpy>=2.1.0; python_version < "3.14" and python_version >= "3.13"
|
|
24
|
+
Requires-Dist: numpy>=1.26.0; python_version < "3.13" and python_version >= "3.12"
|
|
25
|
+
Requires-Dist: numpy>=1.24.0; python_version < "3.12" and python_version >= "3.11"
|
|
26
|
+
Requires-Dist: numpy>=1.21.6; python_version < "3.11" and python_version >= "3.10"
|
|
27
|
+
Requires-Dist: numpy>=1.19.3; python_version < "3.10" and python_version >= "3.9"
|
|
28
|
+
Provides-Extra: all
|
|
29
|
+
Requires-Dist: ubelt>=1.3.4; extra == "all"
|
|
30
|
+
Requires-Dist: numpy>=2.3.2; (python_version < "4.0" and python_version >= "3.14") and extra == "all"
|
|
31
|
+
Requires-Dist: numpy>=2.1.0; (python_version < "3.14" and python_version >= "3.13") and extra == "all"
|
|
32
|
+
Requires-Dist: numpy>=1.26.0; (python_version < "3.13" and python_version >= "3.12") and extra == "all"
|
|
33
|
+
Requires-Dist: numpy>=1.24.0; (python_version < "3.12" and python_version >= "3.11") and extra == "all"
|
|
34
|
+
Requires-Dist: numpy>=1.21.6; (python_version < "3.11" and python_version >= "3.10") and extra == "all"
|
|
35
|
+
Requires-Dist: numpy>=1.19.3; (python_version < "3.10" and python_version >= "3.9") and extra == "all"
|
|
36
|
+
Requires-Dist: pytest>=8.1.1; (python_version < "4.0" and python_version >= "3.13") and extra == "all"
|
|
37
|
+
Requires-Dist: pytest>=8.1.1; (python_version < "3.13" and python_version >= "3.12") and extra == "all"
|
|
38
|
+
Requires-Dist: pytest>=8.1.1; (python_version < "3.12" and python_version >= "3.11") and extra == "all"
|
|
39
|
+
Requires-Dist: pytest>=6.2.5; (python_version < "3.11" and python_version >= "3.10") and extra == "all"
|
|
40
|
+
Requires-Dist: pytest>=6.2.5; (python_version < "3.10" and python_version >= "3.8") and extra == "all"
|
|
41
|
+
Requires-Dist: pytest-cov>=3.0.0; extra == "all"
|
|
42
|
+
Requires-Dist: coverage>=7.3.0; (python_version < "4.0" and python_version >= "3.12") and extra == "all"
|
|
43
|
+
Requires-Dist: coverage>=6.1.1; (python_version < "3.12" and python_version >= "3.10") and extra == "all"
|
|
44
|
+
Requires-Dist: coverage>=5.3.1; (python_version < "3.10" and python_version >= "3.9") and extra == "all"
|
|
45
|
+
Requires-Dist: coverage>=6.1.1; (python_version < "3.9" and python_version >= "3.8") and extra == "all"
|
|
46
|
+
Requires-Dist: xdoctest>=1.1.5; extra == "all"
|
|
47
|
+
Provides-Extra: headless
|
|
48
|
+
Requires-Dist: opencv-python-headless>=4.10.0.84; (python_version < "4.0" and python_version >= "3.13") and extra == "headless"
|
|
49
|
+
Requires-Dist: opencv-python-headless>=4.5.5.64; (python_version < "3.13" and python_version >= "3.11") and extra == "headless"
|
|
50
|
+
Requires-Dist: opencv-python-headless>=4.5.4.58; (python_version < "3.11" and python_version >= "3.10") and extra == "headless"
|
|
51
|
+
Requires-Dist: opencv-python-headless>=3.4.15.55; (python_version < "3.10" and python_version >= "3.9") and extra == "headless"
|
|
52
|
+
Provides-Extra: graphics
|
|
53
|
+
Requires-Dist: opencv-python>=4.10.0.84; (python_version < "4.0" and python_version >= "3.13") and extra == "graphics"
|
|
54
|
+
Requires-Dist: opencv-python>=4.5.5.64; (python_version < "3.13" and python_version >= "3.11") and extra == "graphics"
|
|
55
|
+
Requires-Dist: opencv-python>=4.5.4.58; (python_version < "3.11" and python_version >= "3.10") and extra == "graphics"
|
|
56
|
+
Requires-Dist: opencv-python>=3.4.15.55; (python_version < "3.10" and python_version >= "3.9") and extra == "graphics"
|
|
57
|
+
Provides-Extra: docs
|
|
58
|
+
Requires-Dist: sphinx>=5.0.1; extra == "docs"
|
|
59
|
+
Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "docs"
|
|
60
|
+
Requires-Dist: sphinx_rtd_theme>=1.0.0; extra == "docs"
|
|
61
|
+
Requires-Dist: sphinxcontrib-napoleon>=0.7; extra == "docs"
|
|
62
|
+
Requires-Dist: sphinx-autoapi>=1.8.4; extra == "docs"
|
|
63
|
+
Requires-Dist: Pygments>=2.9.0; extra == "docs"
|
|
64
|
+
Requires-Dist: myst_parser>=0.18.0; extra == "docs"
|
|
65
|
+
Requires-Dist: sphinx-reredirects>=0.0.1; extra == "docs"
|
|
66
|
+
Provides-Extra: optional
|
|
67
|
+
Provides-Extra: runtime
|
|
68
|
+
Requires-Dist: ubelt>=1.3.4; extra == "runtime"
|
|
69
|
+
Requires-Dist: numpy>=2.3.2; (python_version < "4.0" and python_version >= "3.14") and extra == "runtime"
|
|
70
|
+
Requires-Dist: numpy>=2.1.0; (python_version < "3.14" and python_version >= "3.13") and extra == "runtime"
|
|
71
|
+
Requires-Dist: numpy>=1.26.0; (python_version < "3.13" and python_version >= "3.12") and extra == "runtime"
|
|
72
|
+
Requires-Dist: numpy>=1.24.0; (python_version < "3.12" and python_version >= "3.11") and extra == "runtime"
|
|
73
|
+
Requires-Dist: numpy>=1.21.6; (python_version < "3.11" and python_version >= "3.10") and extra == "runtime"
|
|
74
|
+
Requires-Dist: numpy>=1.19.3; (python_version < "3.10" and python_version >= "3.9") and extra == "runtime"
|
|
75
|
+
Provides-Extra: tests
|
|
76
|
+
Requires-Dist: pytest>=8.1.1; (python_version < "4.0" and python_version >= "3.13") and extra == "tests"
|
|
77
|
+
Requires-Dist: pytest>=8.1.1; (python_version < "3.13" and python_version >= "3.12") and extra == "tests"
|
|
78
|
+
Requires-Dist: pytest>=8.1.1; (python_version < "3.12" and python_version >= "3.11") and extra == "tests"
|
|
79
|
+
Requires-Dist: pytest>=6.2.5; (python_version < "3.11" and python_version >= "3.10") and extra == "tests"
|
|
80
|
+
Requires-Dist: pytest>=6.2.5; (python_version < "3.10" and python_version >= "3.8") and extra == "tests"
|
|
81
|
+
Requires-Dist: pytest-cov>=3.0.0; extra == "tests"
|
|
82
|
+
Requires-Dist: coverage>=7.3.0; (python_version < "4.0" and python_version >= "3.12") and extra == "tests"
|
|
83
|
+
Requires-Dist: coverage>=6.1.1; (python_version < "3.12" and python_version >= "3.10") and extra == "tests"
|
|
84
|
+
Requires-Dist: coverage>=5.3.1; (python_version < "3.10" and python_version >= "3.9") and extra == "tests"
|
|
85
|
+
Requires-Dist: coverage>=6.1.1; (python_version < "3.9" and python_version >= "3.8") and extra == "tests"
|
|
86
|
+
Requires-Dist: xdoctest>=1.1.5; extra == "tests"
|
|
87
|
+
Provides-Extra: all-strict
|
|
88
|
+
Requires-Dist: ubelt==1.3.4; extra == "all-strict"
|
|
89
|
+
Requires-Dist: numpy==2.3.2; (python_version < "4.0" and python_version >= "3.14") and extra == "all-strict"
|
|
90
|
+
Requires-Dist: numpy==2.1.0; (python_version < "3.14" and python_version >= "3.13") and extra == "all-strict"
|
|
91
|
+
Requires-Dist: numpy==1.26.0; (python_version < "3.13" and python_version >= "3.12") and extra == "all-strict"
|
|
92
|
+
Requires-Dist: numpy==1.24.0; (python_version < "3.12" and python_version >= "3.11") and extra == "all-strict"
|
|
93
|
+
Requires-Dist: numpy==1.21.6; (python_version < "3.11" and python_version >= "3.10") and extra == "all-strict"
|
|
94
|
+
Requires-Dist: numpy==1.19.3; (python_version < "3.10" and python_version >= "3.9") and extra == "all-strict"
|
|
95
|
+
Requires-Dist: pytest==8.1.1; (python_version < "4.0" and python_version >= "3.13") and extra == "all-strict"
|
|
96
|
+
Requires-Dist: pytest==8.1.1; (python_version < "3.13" and python_version >= "3.12") and extra == "all-strict"
|
|
97
|
+
Requires-Dist: pytest==8.1.1; (python_version < "3.12" and python_version >= "3.11") and extra == "all-strict"
|
|
98
|
+
Requires-Dist: pytest==6.2.5; (python_version < "3.11" and python_version >= "3.10") and extra == "all-strict"
|
|
99
|
+
Requires-Dist: pytest==6.2.5; (python_version < "3.10" and python_version >= "3.8") and extra == "all-strict"
|
|
100
|
+
Requires-Dist: pytest-cov==3.0.0; extra == "all-strict"
|
|
101
|
+
Requires-Dist: coverage==7.3.0; (python_version < "4.0" and python_version >= "3.12") and extra == "all-strict"
|
|
102
|
+
Requires-Dist: coverage==6.1.1; (python_version < "3.12" and python_version >= "3.10") and extra == "all-strict"
|
|
103
|
+
Requires-Dist: coverage==5.3.1; (python_version < "3.10" and python_version >= "3.9") and extra == "all-strict"
|
|
104
|
+
Requires-Dist: coverage==6.1.1; (python_version < "3.9" and python_version >= "3.8") and extra == "all-strict"
|
|
105
|
+
Requires-Dist: xdoctest==1.1.5; extra == "all-strict"
|
|
106
|
+
Provides-Extra: headless-strict
|
|
107
|
+
Requires-Dist: opencv-python-headless==4.10.0.84; (python_version < "4.0" and python_version >= "3.13") and extra == "headless-strict"
|
|
108
|
+
Requires-Dist: opencv-python-headless==4.5.5.64; (python_version < "3.13" and python_version >= "3.11") and extra == "headless-strict"
|
|
109
|
+
Requires-Dist: opencv-python-headless==4.5.4.58; (python_version < "3.11" and python_version >= "3.10") and extra == "headless-strict"
|
|
110
|
+
Requires-Dist: opencv-python-headless==3.4.15.55; (python_version < "3.10" and python_version >= "3.9") and extra == "headless-strict"
|
|
111
|
+
Provides-Extra: graphics-strict
|
|
112
|
+
Requires-Dist: opencv-python==4.10.0.84; (python_version < "4.0" and python_version >= "3.13") and extra == "graphics-strict"
|
|
113
|
+
Requires-Dist: opencv-python==4.5.5.64; (python_version < "3.13" and python_version >= "3.11") and extra == "graphics-strict"
|
|
114
|
+
Requires-Dist: opencv-python==4.5.4.58; (python_version < "3.11" and python_version >= "3.10") and extra == "graphics-strict"
|
|
115
|
+
Requires-Dist: opencv-python==3.4.15.55; (python_version < "3.10" and python_version >= "3.9") and extra == "graphics-strict"
|
|
116
|
+
Provides-Extra: docs-strict
|
|
117
|
+
Requires-Dist: sphinx==5.0.1; extra == "docs-strict"
|
|
118
|
+
Requires-Dist: sphinx-autobuild==2021.3.14; extra == "docs-strict"
|
|
119
|
+
Requires-Dist: sphinx_rtd_theme==1.0.0; extra == "docs-strict"
|
|
120
|
+
Requires-Dist: sphinxcontrib-napoleon==0.7; extra == "docs-strict"
|
|
121
|
+
Requires-Dist: sphinx-autoapi==1.8.4; extra == "docs-strict"
|
|
122
|
+
Requires-Dist: Pygments==2.9.0; extra == "docs-strict"
|
|
123
|
+
Requires-Dist: myst_parser==0.18.0; extra == "docs-strict"
|
|
124
|
+
Requires-Dist: sphinx-reredirects==0.0.1; extra == "docs-strict"
|
|
125
|
+
Provides-Extra: optional-strict
|
|
126
|
+
Provides-Extra: runtime-strict
|
|
127
|
+
Requires-Dist: ubelt==1.3.4; extra == "runtime-strict"
|
|
128
|
+
Requires-Dist: numpy==2.3.2; (python_version < "4.0" and python_version >= "3.14") and extra == "runtime-strict"
|
|
129
|
+
Requires-Dist: numpy==2.1.0; (python_version < "3.14" and python_version >= "3.13") and extra == "runtime-strict"
|
|
130
|
+
Requires-Dist: numpy==1.26.0; (python_version < "3.13" and python_version >= "3.12") and extra == "runtime-strict"
|
|
131
|
+
Requires-Dist: numpy==1.24.0; (python_version < "3.12" and python_version >= "3.11") and extra == "runtime-strict"
|
|
132
|
+
Requires-Dist: numpy==1.21.6; (python_version < "3.11" and python_version >= "3.10") and extra == "runtime-strict"
|
|
133
|
+
Requires-Dist: numpy==1.19.3; (python_version < "3.10" and python_version >= "3.9") and extra == "runtime-strict"
|
|
134
|
+
Provides-Extra: tests-strict
|
|
135
|
+
Requires-Dist: pytest==8.1.1; (python_version < "4.0" and python_version >= "3.13") and extra == "tests-strict"
|
|
136
|
+
Requires-Dist: pytest==8.1.1; (python_version < "3.13" and python_version >= "3.12") and extra == "tests-strict"
|
|
137
|
+
Requires-Dist: pytest==8.1.1; (python_version < "3.12" and python_version >= "3.11") and extra == "tests-strict"
|
|
138
|
+
Requires-Dist: pytest==6.2.5; (python_version < "3.11" and python_version >= "3.10") and extra == "tests-strict"
|
|
139
|
+
Requires-Dist: pytest==6.2.5; (python_version < "3.10" and python_version >= "3.8") and extra == "tests-strict"
|
|
140
|
+
Requires-Dist: pytest-cov==3.0.0; extra == "tests-strict"
|
|
141
|
+
Requires-Dist: coverage==7.3.0; (python_version < "4.0" and python_version >= "3.12") and extra == "tests-strict"
|
|
142
|
+
Requires-Dist: coverage==6.1.1; (python_version < "3.12" and python_version >= "3.10") and extra == "tests-strict"
|
|
143
|
+
Requires-Dist: coverage==5.3.1; (python_version < "3.10" and python_version >= "3.9") and extra == "tests-strict"
|
|
144
|
+
Requires-Dist: coverage==6.1.1; (python_version < "3.9" and python_version >= "3.8") and extra == "tests-strict"
|
|
145
|
+
Requires-Dist: xdoctest==1.1.5; extra == "tests-strict"
|
|
146
|
+
Dynamic: author
|
|
147
|
+
Dynamic: author-email
|
|
148
|
+
Dynamic: classifier
|
|
149
|
+
Dynamic: description
|
|
150
|
+
Dynamic: description-content-type
|
|
151
|
+
Dynamic: home-page
|
|
152
|
+
Dynamic: license
|
|
153
|
+
Dynamic: provides-extra
|
|
154
|
+
Dynamic: requires-dist
|
|
155
|
+
Dynamic: requires-python
|
|
156
|
+
Dynamic: summary
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
The vtool_ibeis_ext Module
|
|
160
|
+
==========================
|
|
161
|
+
|
|
162
|
+
|Pypi| |PypiDownloads| |GithubActions| |Codecov|
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
+------------------+----------------------------------------------+
|
|
166
|
+
| Github | https://github.com/Erotemic/vtool_ibeis_ext |
|
|
167
|
+
+------------------+----------------------------------------------+
|
|
168
|
+
| Pypi | https://pypi.org/project/vtool_ibeis_ext |
|
|
169
|
+
+------------------+----------------------------------------------+
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
Contains the binary spatial verification code used by `vtool_ibeis <https://github.com/Erotemic/vtool_ibeis>`_
|
|
173
|
+
|
|
174
|
+
This is mainly maintained for the `IBEIS <https://github.com/Erotemic/IBEIS>`_ application.
|
|
175
|
+
|
|
176
|
+
Binary packages related to IBEIS:
|
|
177
|
+
|
|
178
|
+
* https://github.com/Erotemic/vtool_ibeis_ext
|
|
179
|
+
* https://github.com/Erotemic/pyflann_ibeis
|
|
180
|
+
* https://github.com/Erotemic/pyhesaff
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
.. |Pypi| image:: https://img.shields.io/pypi/v/vtool_ibeis_ext.svg
|
|
184
|
+
:target: https://pypi.python.org/pypi/vtool_ibeis_ext
|
|
185
|
+
|
|
186
|
+
.. |PypiDownloads| image:: https://img.shields.io/pypi/dm/vtool_ibeis_ext.svg
|
|
187
|
+
:target: https://pypistats.org/packages/vtool_ibeis_ext
|
|
188
|
+
|
|
189
|
+
.. |GithubActions| image:: https://github.com/Erotemic/vtool_ibeis_ext/actions/workflows/tests.yml/badge.svg?branch=main
|
|
190
|
+
:target: https://github.com/Erotemic/vtool_ibeis_ext/actions?query=branch%3Amain
|
|
191
|
+
|
|
192
|
+
.. |Codecov| image:: https://codecov.io/github/Erotemic/vtool_ibeis_ext/badge.svg?branch=main&service=github
|
|
193
|
+
:target: https://codecov.io/github/Erotemic/vtool_ibeis_ext?branch=main
|
|
194
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
vtool_ibeis_ext/__init__.py,sha256=SUqB5NuiEo6cee97gEOqv40dbfq5e-dNLP1EthMdq-4,199
|
|
2
|
+
vtool_ibeis_ext/sver_c_wrapper.py,sha256=p-TRuUqpmT2mLMkjmlfNte2UWKRe6t0xCZC4-vbxyG4,7617
|
|
3
|
+
vtool_ibeis_ext/lib/sver.dll,sha256=KnO-CgCSR612bnhRE078vrCLSZTKAbbIleRuUbWKhyU,18944
|
|
4
|
+
vtool_ibeis_ext-0.1.3.dist-info/METADATA,sha256=QLA6_ZLgvtSNR9otVi5T7XFyWTzZJ0NVzJdeJWgOviM,13697
|
|
5
|
+
vtool_ibeis_ext-0.1.3.dist-info/WHEEL,sha256=4dU9bvlPw8d_96aXToRp7-Ml2sgZj7vbQmzTV5aNNOE,96
|
|
6
|
+
vtool_ibeis_ext-0.1.3.dist-info/top_level.txt,sha256=crNmwKhzrAm9YaLTKwQjrOLZ2ZrOhJ0YjuQOlPl0Dhk,16
|
|
7
|
+
vtool_ibeis_ext-0.1.3.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
vtool_ibeis_ext
|