labelimgplusplus 3.2.0__tar.gz → 3.4.0__tar.gz
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.
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/HISTORY.rst +129 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/PKG-INFO +24 -3
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/README.rst +23 -2
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/labelImgPlusPlus.py +735 -98
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/labelimgplusplus.egg-info/PKG-INFO +24 -3
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/labelimgplusplus.egg-info/SOURCES.txt +3 -0
- labelimgplusplus-3.4.0/libs/__init__.py +18 -0
- labelimgplusplus-3.4.0/libs/core/__init__.py +33 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/commands.py +19 -1
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/sam_controller.py +15 -11
- labelimgplusplus-3.4.0/libs/core/sam_types.py +21 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/video_decoder.py +2 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/video_export.py +2 -1
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/video_model.py +276 -4
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/video_project.py +136 -12
- labelimgplusplus-3.4.0/libs/core/video_propagation.py +9 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/video_session.py +14 -4
- labelimgplusplus-3.4.0/libs/core/video_tracking.py +628 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/video_types.py +59 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/integrations/mask_to_polygon.py +42 -9
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/resources.py +172 -96
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/utils/constants.py +1 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/__init__.py +2 -1
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/canvas.py +96 -5
- labelimgplusplus-3.4.0/libs/widgets/inlineClassPicker.py +171 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/videoTimelineWidget.py +39 -1
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/workspacePages.py +53 -2
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/pyproject.toml +1 -1
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/resources.qrc +1 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/setup.cfg +1 -1
- labelimgplusplus-3.2.0/libs/__init__.py +0 -11
- labelimgplusplus-3.2.0/libs/core/__init__.py +0 -12
- labelimgplusplus-3.2.0/libs/core/video_tracking.py +0 -288
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/CONTRIBUTING.rst +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/LICENSE +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/MANIFEST.in +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/data/predefined_classes.txt +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/labelimgplusplus/__init__.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/labelimgplusplus/plugins.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/labelimgplusplus.egg-info/dependency_links.txt +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/labelimgplusplus.egg-info/entry_points.txt +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/labelimgplusplus.egg-info/requires.txt +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/labelimgplusplus.egg-info/top_level.txt +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/annotation_catalog.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/dataset.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/image_pipeline.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/keypoint_config.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/plugin_discovery.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/plugin_manager.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/plugin_registry.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/profiling.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/save_pipeline.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/settings.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/shape.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/shortcut_config.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/task_coordinator.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/ultralytics_export.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/core/workspace_settings.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/data/predefined_classes.txt +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/formats/__init__.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/formats/annotation_loader.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/formats/annotation_paths.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/formats/annotation_probe.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/formats/coco_io.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/formats/create_ml_io.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/formats/format_metadata.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/formats/labelFile.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/formats/pascal_voc_io.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/formats/yolo_io.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/formats/yolo_seg_io.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/integrations/__init__.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/integrations/image_convert.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/integrations/model_cache.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/integrations/segmentation.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/tools/__init__.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/tools/batch_verify.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/tools/dataset_splitter.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/tools/label_checker.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/utils/__init__.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/utils/dpi.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/utils/hashableQListWidgetItem.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/utils/stringBundle.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/utils/styles.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/utils/ustr.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/utils/utils.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/annotationInspector.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/batchVerifyDialog.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/colorDialog.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/combobox.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/commandBar.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/default_label_combobox.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/galleryWidget.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/gallery_status_controller.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/keypointPanel.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/labelCheckerDialog.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/labelDialog.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/lightWidget.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/pluginManagerDialog.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/sam_settings_dialog.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/shortcutsDialog.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/splitDialog.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/statsWidget.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/stats_controller.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/toolBar.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/toolRail.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/ultralyticsExportDialog.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/videoExportDialog.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/view_scaling.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/workspaceInspector.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/libs/widgets/zoomWidget.py +0 -0
- {labelimgplusplus-3.2.0 → labelimgplusplus-3.4.0}/resources/icons/feather/LICENSE.txt +0 -0
|
@@ -1,6 +1,135 @@
|
|
|
1
1
|
History
|
|
2
2
|
=======
|
|
3
3
|
|
|
4
|
+
3.4.0 (2026-08-12)
|
|
5
|
+
------------------
|
|
6
|
+
|
|
7
|
+
Portable whole-video propagation release adding multi-object OpenCV tracking,
|
|
8
|
+
durable gap records, atomic preview and commit, and bounded correction
|
|
9
|
+
regeneration while preserving legacy pending observations, annotation formats,
|
|
10
|
+
filenames, command-line entry points, plugin APIs, shortcut identifiers, and
|
|
11
|
+
Python 3.8 through 3.13 support. Optional SAM 2 propagation remains deferred to
|
|
12
|
+
3.5 and is not bundled or downloaded by this release.
|
|
13
|
+
|
|
14
|
+
Propagation and Gap Contracts
|
|
15
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
16
|
+
|
|
17
|
+
* Add frozen, Qt-free propagation requests, batches, results, and gap records,
|
|
18
|
+
plus a stateless backend interface. Workers exchange immutable plain data;
|
|
19
|
+
Qt widgets, canvas shapes, model mutation, and undo commands stay on the GUI
|
|
20
|
+
thread.
|
|
21
|
+
* Upgrade video projects transactionally from schema v1 to v2 with inclusive,
|
|
22
|
+
revisioned ``track_gaps``. Writable migration failure rolls back and reopens
|
|
23
|
+
read-only with an actionable warning, while read-only v1 projects retain an
|
|
24
|
+
empty gap projection.
|
|
25
|
+
* Preserve accepted, pending, and rejected legacy observations and extend
|
|
26
|
+
snapshots and save deltas for gap insertion, replacement, deletion, undo,
|
|
27
|
+
restoration, export, and revision conflicts.
|
|
28
|
+
|
|
29
|
+
Portable Whole-Video Propagation
|
|
30
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
31
|
+
|
|
32
|
+
* Add **Propagate across video** and **Propagate selected object** beside the
|
|
33
|
+
integrated timeline. Existing directional commands now use the same accepted
|
|
34
|
+
atomic result path rather than creating new pending suggestions.
|
|
35
|
+
* Decode each requested direction once and update all active tracks together
|
|
36
|
+
with bounded Lucas-Kanade flow and affine estimation. Rectangles transform
|
|
37
|
+
their corners, polygons transform every vertex, and associated keypoints use
|
|
38
|
+
the same affine transform.
|
|
39
|
+
* Protect every accepted manual anchor. Reaching another manual anchor retains
|
|
40
|
+
and reseeds it; a failed track records a stable ``low_confidence``,
|
|
41
|
+
``occluded``, ``out_of_frame``, or ``scene_cut`` gap while other tracks
|
|
42
|
+
continue.
|
|
43
|
+
* Stream generated observations into a preview-only canvas layer excluded from
|
|
44
|
+
canonical shapes, dirty state, saves, exports, plugins, inspectors, and undo.
|
|
45
|
+
Frame navigation remains available while geometry and class mutation, save,
|
|
46
|
+
export, undo, and redo are disabled.
|
|
47
|
+
* Validate document generation and revision, media fingerprint, stream and time
|
|
48
|
+
base, and every track revision before applying accepted tracker observations
|
|
49
|
+
and gaps in one model revision and one undo command. Cancellation, stale
|
|
50
|
+
state, source replacement, shutdown, or decoder failure clears preview state
|
|
51
|
+
without changing the model or durable project.
|
|
52
|
+
|
|
53
|
+
Correction Regeneration
|
|
54
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
|
55
|
+
|
|
56
|
+
* Editing tracker or interpolated geometry immediately creates an accepted
|
|
57
|
+
manual anchor as its own undoable correction.
|
|
58
|
+
* Regenerate only frames strictly between that correction and the nearest
|
|
59
|
+
manual anchor on each side, using media bounds where an anchor is absent.
|
|
60
|
+
Successful replacement affects only generated observations and overlapping
|
|
61
|
+
gap portions for that track and those intervals, and is recorded as a second
|
|
62
|
+
undo entry.
|
|
63
|
+
* Cancel superseded regeneration and discard results after correction undo,
|
|
64
|
+
intervening document or track revision, document replacement, or shutdown.
|
|
65
|
+
Failures preserve the correction, all manual anchors, other tracks, and prior
|
|
66
|
+
generated data.
|
|
67
|
+
|
|
68
|
+
Qualification
|
|
69
|
+
~~~~~~~~~~~~~
|
|
70
|
+
|
|
71
|
+
* Cover CFR and VFR media, forward and backward propagation, rectangles,
|
|
72
|
+
polygons, keypoints, multiple tracks, manual-anchor reseeding, scene cuts,
|
|
73
|
+
occlusion, out-of-frame loss, corrupted media, read-only and legacy projects,
|
|
74
|
+
cancellation, stale revisions, atomic undo, gap persistence, save/export
|
|
75
|
+
blocking, navigation during work, document close, and repeated teardown.
|
|
76
|
+
* Qualify Python 3.8 through 3.13, plugin, SAM, video, and combined extras while
|
|
77
|
+
keeping PyAV, NumPy, OpenCV, ONNX Runtime, Torch, and SAM 2 lazy or absent from
|
|
78
|
+
the base import path as applicable.
|
|
79
|
+
* Review the integrated propagation preview at fixed Linux 1366x768 and
|
|
80
|
+
1440x900 approval sizes with no clipped primary controls, docks, or detached
|
|
81
|
+
windows.
|
|
82
|
+
|
|
83
|
+
3.3.0 (2026-08-12)
|
|
84
|
+
------------------
|
|
85
|
+
|
|
86
|
+
Faster-annotation release adding non-modal class confirmation and selectable
|
|
87
|
+
Smart Select geometry while preserving the 3.2 workspace, annotation formats,
|
|
88
|
+
filenames, command-line entry points, plugin APIs, shortcut identifiers, and
|
|
89
|
+
Python 3.8 through 3.13 support.
|
|
90
|
+
|
|
91
|
+
Inline Class Confirmation
|
|
92
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
93
|
+
|
|
94
|
+
* Keep completed Box, Polygon, Smart Select, and video geometry in a transient
|
|
95
|
+
provisional layer until its class is confirmed. Provisional geometry is
|
|
96
|
+
excluded from canonical canvas shapes, the Objects inspector, dirty state,
|
|
97
|
+
saves, plugin snapshots, and undo history.
|
|
98
|
+
* Open a non-modal, screen-clamped class picker beside new geometry with
|
|
99
|
+
filtering, arrow-key navigation, valid new-class entry, Enter confirmation,
|
|
100
|
+
and Escape cancellation. Confirmation preserves the active tool and canvas
|
|
101
|
+
focus so repeated annotation remains uninterrupted.
|
|
102
|
+
* Commit confirmed image or video geometry through one ``CreateShapeCommand``.
|
|
103
|
+
Video confirmation creates an accepted manual anchor; cancellation leaves
|
|
104
|
+
both the in-memory model and durable project unchanged.
|
|
105
|
+
* Retain session-only last-class memory. Default-label mode bypasses the picker,
|
|
106
|
+
while single-class mode bypasses it only after the first class is confirmed
|
|
107
|
+
in the current session.
|
|
108
|
+
|
|
109
|
+
Smart Select Output Modes
|
|
110
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
111
|
+
|
|
112
|
+
* Add the frozen plain-data ``SamResult(polygon, bounds)`` contract. SAM workers
|
|
113
|
+
return a simplified polygon and tight, non-zero, half-open bounds for the
|
|
114
|
+
same largest mask component without mutating Qt or document state.
|
|
115
|
+
* Add a contextual Box/Polygon selector that appears only while Smart Select is
|
|
116
|
+
active. Its validated ``sam/outputMode`` setting defaults to ``polygon`` and
|
|
117
|
+
persists independently of model settings.
|
|
118
|
+
* Route both output types through the provisional picker and the same image and
|
|
119
|
+
video undo path. Existing stale-generation and cancellation guards remain in
|
|
120
|
+
place, and ONNX Runtime, NumPy, OpenCV, and model loading stay lazy.
|
|
121
|
+
|
|
122
|
+
Qualification
|
|
123
|
+
~~~~~~~~~~~~~
|
|
124
|
+
|
|
125
|
+
* Cover image and video confirmation, cancellation, focus, filtering, repeated
|
|
126
|
+
annotation, bypass modes, output bounds, simplification, persistence, stale
|
|
127
|
+
SAM results, manual video anchors, and one-step undo.
|
|
128
|
+
* Qualify the picker and Smart Select selector in light and dark themes at 1x
|
|
129
|
+
and true 2x DPI using 1366x768 and 1440x900 logical approval sizes.
|
|
130
|
+
* Make queued Gallery and annotation-catalog refreshes inert after window
|
|
131
|
+
shutdown so late Qt callbacks cannot submit work to a stopped coordinator.
|
|
132
|
+
|
|
4
133
|
3.2.0 (2026-08-11)
|
|
5
134
|
------------------
|
|
6
135
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: labelimgplusplus
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.4.0
|
|
4
4
|
Summary: labelImg++ is an enhanced graphical image annotation tool with Gallery Mode for browsing and labeling images
|
|
5
5
|
Author-email: Abhik Sarkar <abhiksark@gmail.com>
|
|
6
6
|
License: Copyright (c) <2015-Present> Tzutalin
|
|
@@ -78,7 +78,7 @@ polygons, and keypoints, designed for machine learning and computer vision
|
|
|
78
78
|
projects. It is forked from the original LabelImg with significant
|
|
79
79
|
enhancements.
|
|
80
80
|
|
|
81
|
-
**Version 3.
|
|
81
|
+
**Version 3.4.0 (stable).** Install with
|
|
82
82
|
``pip install labelimgplusplus``.
|
|
83
83
|
|
|
84
84
|
.. image:: https://raw.githubusercontent.com/abhiksark/labelImg-plus-plus/c7fbd5fc08a561206b210706143a50023c82a782/resources/demo/demo.gif
|
|
@@ -132,6 +132,27 @@ Workflow and Interface
|
|
|
132
132
|
annotation-status filter close at hand, and the inspector can be collapsed
|
|
133
133
|
when maximum canvas space is needed.
|
|
134
134
|
|
|
135
|
+
**Faster Class Confirmation**
|
|
136
|
+
New boxes, polygons, Smart Select results, and video geometry remain
|
|
137
|
+
provisional while a non-modal class picker opens beside the annotation.
|
|
138
|
+
Filter or enter a class, press **Enter** to commit one undoable annotation,
|
|
139
|
+
or press **Escape** to discard it without changing the document. Default
|
|
140
|
+
labels and established single-class sessions bypass the picker.
|
|
141
|
+
|
|
142
|
+
**Smart Select Output Modes**
|
|
143
|
+
While Smart Select is active, choose **Box** or **Polygon** from the compact
|
|
144
|
+
canvas control. The choice persists between sessions, and either result
|
|
145
|
+
follows the same provisional class-confirmation and undo workflow.
|
|
146
|
+
|
|
147
|
+
**Portable Whole-Video Propagation**
|
|
148
|
+
From the integrated timeline, propagate every accepted manual anchor on
|
|
149
|
+
the current frame or only the selected object. The portable OpenCV backend
|
|
150
|
+
processes rectangles, polygons, and associated keypoints together, shows
|
|
151
|
+
preview-only progress, protects later manual anchors, and commits accepted
|
|
152
|
+
observations and explicit gap records atomically in one undo step. Editing
|
|
153
|
+
generated geometry creates a manual correction first, then regenerates only
|
|
154
|
+
the bounded neighboring segments as a separate undoable change.
|
|
155
|
+
|
|
135
156
|
**Direct Ultralytics Dataset Export**
|
|
136
157
|
Choose **Tools → Export Ultralytics Dataset…** to create a ready-to-train
|
|
137
158
|
YOLO detection dataset with ``images/{train,val,test}``, matching
|
|
@@ -401,7 +422,7 @@ Or use **Menu > File > Reset All**
|
|
|
401
422
|
Release History
|
|
402
423
|
---------------
|
|
403
424
|
|
|
404
|
-
This source tree identifies itself as **3.
|
|
425
|
+
This source tree identifies itself as **3.4.0**, the stable 3.4 release. See
|
|
405
426
|
the `release history
|
|
406
427
|
<https://github.com/abhiksark/labelImg-plus-plus/blob/master/HISTORY.rst>`__ for
|
|
407
428
|
version-by-version changes and `GitHub Releases
|
|
@@ -26,7 +26,7 @@ polygons, and keypoints, designed for machine learning and computer vision
|
|
|
26
26
|
projects. It is forked from the original LabelImg with significant
|
|
27
27
|
enhancements.
|
|
28
28
|
|
|
29
|
-
**Version 3.
|
|
29
|
+
**Version 3.4.0 (stable).** Install with
|
|
30
30
|
``pip install labelimgplusplus``.
|
|
31
31
|
|
|
32
32
|
.. image:: https://raw.githubusercontent.com/abhiksark/labelImg-plus-plus/c7fbd5fc08a561206b210706143a50023c82a782/resources/demo/demo.gif
|
|
@@ -80,6 +80,27 @@ Workflow and Interface
|
|
|
80
80
|
annotation-status filter close at hand, and the inspector can be collapsed
|
|
81
81
|
when maximum canvas space is needed.
|
|
82
82
|
|
|
83
|
+
**Faster Class Confirmation**
|
|
84
|
+
New boxes, polygons, Smart Select results, and video geometry remain
|
|
85
|
+
provisional while a non-modal class picker opens beside the annotation.
|
|
86
|
+
Filter or enter a class, press **Enter** to commit one undoable annotation,
|
|
87
|
+
or press **Escape** to discard it without changing the document. Default
|
|
88
|
+
labels and established single-class sessions bypass the picker.
|
|
89
|
+
|
|
90
|
+
**Smart Select Output Modes**
|
|
91
|
+
While Smart Select is active, choose **Box** or **Polygon** from the compact
|
|
92
|
+
canvas control. The choice persists between sessions, and either result
|
|
93
|
+
follows the same provisional class-confirmation and undo workflow.
|
|
94
|
+
|
|
95
|
+
**Portable Whole-Video Propagation**
|
|
96
|
+
From the integrated timeline, propagate every accepted manual anchor on
|
|
97
|
+
the current frame or only the selected object. The portable OpenCV backend
|
|
98
|
+
processes rectangles, polygons, and associated keypoints together, shows
|
|
99
|
+
preview-only progress, protects later manual anchors, and commits accepted
|
|
100
|
+
observations and explicit gap records atomically in one undo step. Editing
|
|
101
|
+
generated geometry creates a manual correction first, then regenerates only
|
|
102
|
+
the bounded neighboring segments as a separate undoable change.
|
|
103
|
+
|
|
83
104
|
**Direct Ultralytics Dataset Export**
|
|
84
105
|
Choose **Tools → Export Ultralytics Dataset…** to create a ready-to-train
|
|
85
106
|
YOLO detection dataset with ``images/{train,val,test}``, matching
|
|
@@ -349,7 +370,7 @@ Or use **Menu > File > Reset All**
|
|
|
349
370
|
Release History
|
|
350
371
|
---------------
|
|
351
372
|
|
|
352
|
-
This source tree identifies itself as **3.
|
|
373
|
+
This source tree identifies itself as **3.4.0**, the stable 3.4 release. See
|
|
353
374
|
the `release history
|
|
354
375
|
<https://github.com/abhiksark/labelImg-plus-plus/blob/master/HISTORY.rst>`__ for
|
|
355
376
|
version-by-version changes and `GitHub Releases
|