coralnet-toolbox 0.0.76__py2.py3-none-any.whl → 0.0.77__py2.py3-none-any.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.
@@ -56,9 +56,13 @@ class PatchTool(Tool):
56
56
  self.update_cursor_annotation(scene_pos)
57
57
 
58
58
  def mouseMoveEvent(self, event: QMouseEvent):
59
- # First clear any existing cursor annotation
59
+ # Call parent implementation to handle crosshair
60
+ super().mouseMoveEvent(event)
61
+
62
+ # Then clear any existing cursor annotation
60
63
  self.clear_cursor_annotation()
61
-
64
+
65
+ # Continue with tool-specific behavior for cursor annotation
62
66
  if self.annotation_window.active_image and self.annotation_window.selected_label:
63
67
  scene_pos = self.annotation_window.mapToScene(event.pos())
64
68
  if self.annotation_window.cursorInWindow(event.pos()):
@@ -78,15 +78,17 @@ class PolygonTool(Tool):
78
78
  else:
79
79
  self.cancel_annotation()
80
80
 
81
- def mouseMoveEvent(self, event: QMouseEvent):
81
+ def mouseMoveEvent(self, event: QMouseEvent):
82
+ # Tool-specific behavior (non-crosshair related) for mouse move events
82
83
  if self.drawing_continuous:
83
- scene_pos = self.annotation_window.mapToScene(event.pos())
84
84
  active_image = self.annotation_window.active_image
85
85
  pixmap_image = self.annotation_window.pixmap_image
86
86
  cursor_in_window = self.annotation_window.cursorInWindow(event.pos())
87
+ scene_pos = self.annotation_window.mapToScene(event.pos())
88
+
87
89
  if active_image and pixmap_image and cursor_in_window and self.points:
88
90
  if self.ctrl_pressed and self.last_click_point:
89
- # Show a straight line preview from last point to cursor, do not modify self.points
91
+ # Show a straight line preview
90
92
  self.update_cursor_annotation(scene_pos)
91
93
  else:
92
94
  # Free-hand: add points as the mouse moves
@@ -2,7 +2,7 @@ import warnings
2
2
 
3
3
  from PyQt5.QtCore import Qt, QPointF
4
4
  from PyQt5.QtGui import QMouseEvent, QKeyEvent
5
- from PyQt5.QtWidgets import QMessageBox
5
+ from PyQt5.QtWidgets import QMessageBox, QGraphicsPixmapItem
6
6
 
7
7
  from coralnet_toolbox.Tools.QtTool import Tool
8
8
  from coralnet_toolbox.Annotations.QtRectangleAnnotation import RectangleAnnotation
@@ -29,9 +29,7 @@ class RectangleTool(Tool):
29
29
  self.annotation_window.setCursor(self.cursor)
30
30
 
31
31
  def deactivate(self):
32
- self.active = False
33
- self.annotation_window.setCursor(self.default_cursor)
34
- self.clear_cursor_annotation()
32
+ super().deactivate()
35
33
  self.start_point = None
36
34
  self.end_point = None
37
35
  self.drawing_continuous = False
@@ -72,8 +70,11 @@ class RectangleTool(Tool):
72
70
  self.cancel_annotation()
73
71
 
74
72
  def mouseMoveEvent(self, event: QMouseEvent):
73
+ # Call parent implementation to handle crosshair
74
+ super().mouseMoveEvent(event)
75
+
76
+ # Continue with tool-specific behavior
75
77
  if self.drawing_continuous:
76
- # Update the end point while drawing the rectangle
77
78
  self.end_point = self.annotation_window.mapToScene(event.pos())
78
79
 
79
80
  # Update the cursor annotation if we're in the window
@@ -82,12 +83,19 @@ class RectangleTool(Tool):
82
83
  cursor_in_window = self.annotation_window.cursorInWindow(event.pos())
83
84
  if active_image and pixmap_image and cursor_in_window and self.start_point:
84
85
  self.update_cursor_annotation(self.end_point)
86
+
87
+ # Show crosshair at current cursor position during drawing
88
+ self.update_crosshair(self.end_point)
85
89
  else:
86
90
  # Show a preview rectangle at the cursor position when not drawing
87
91
  scene_pos = self.annotation_window.mapToScene(event.pos())
88
- if self.annotation_window.cursorInWindow(event.pos()) and self.annotation_window.selected_label:
89
- self.clear_cursor_annotation()
90
- # No cursor annotation in non-drawing mode
92
+ cursor_in_window = self.annotation_window.cursorInWindow(event.pos())
93
+
94
+ # Show crosshair guides when cursor is over the image
95
+ if cursor_in_window and self.active and self.annotation_window.selected_label:
96
+ self.update_crosshair(scene_pos)
97
+ else:
98
+ self.clear_crosshair()
91
99
 
92
100
  def keyPressEvent(self, event: QKeyEvent):
93
101
  if event.key() == Qt.Key_Backspace:
@@ -183,4 +191,4 @@ class RectangleTool(Tool):
183
191
  def update_cursor_annotation(self, scene_pos: QPointF = None):
184
192
  """Update the rectangle cursor annotation."""
185
193
  self.clear_cursor_annotation()
186
- self.create_cursor_annotation(scene_pos)
194
+ self.create_cursor_annotation(scene_pos)
@@ -544,6 +544,10 @@ class SAMTool(Tool):
544
544
  """
545
545
  Handle mouse move events.
546
546
  """
547
+ # Call parent implementation to handle crosshair
548
+ super().mouseMoveEvent(event)
549
+
550
+ # Continue with tool-specific behavior
547
551
  scene_pos = self.annotation_window.mapToScene(event.pos())
548
552
  self.hover_pos = scene_pos
549
553
 
@@ -455,6 +455,10 @@ class SeeAnythingTool(Tool):
455
455
  Args:
456
456
  event (QMouseEvent): The mouse move event.
457
457
  """
458
+ # Call parent implementation to handle crosshair
459
+ super().mouseMoveEvent(event)
460
+
461
+ # Continue with tool-specific behavior
458
462
  scene_pos = self.annotation_window.mapToScene(event.pos())
459
463
  self.hover_pos = scene_pos
460
464
 
@@ -1,7 +1,8 @@
1
1
  import warnings
2
2
 
3
3
  from PyQt5.QtCore import Qt, QPointF
4
- from PyQt5.QtGui import QMouseEvent
4
+ from PyQt5.QtGui import QMouseEvent, QColor
5
+ from PyQt5.QtWidgets import QGraphicsPixmapItem
5
6
 
6
7
  warnings.filterwarnings("ignore", category=DeprecationWarning)
7
8
 
@@ -21,6 +22,11 @@ class Tool:
21
22
  self.cursor = Qt.ArrowCursor
22
23
  self.default_cursor = Qt.ArrowCursor
23
24
  self.cursor_annotation = None
25
+
26
+ # Crosshair settings
27
+ self.show_crosshair = True # Flag to toggle crosshair visibility for this tool
28
+ self.h_crosshair_line = None
29
+ self.v_crosshair_line = None
24
30
 
25
31
  def activate(self):
26
32
  self.active = True
@@ -30,12 +36,26 @@ class Tool:
30
36
  self.active = False
31
37
  self.annotation_window.setCursor(self.default_cursor)
32
38
  self.clear_cursor_annotation()
39
+ self.clear_crosshair() # Clear any crosshair when tool is deactivated
33
40
 
34
41
  def mousePressEvent(self, event: QMouseEvent):
35
42
  pass
36
43
 
37
44
  def mouseMoveEvent(self, event: QMouseEvent):
38
- pass
45
+ """
46
+ Base implementation of mouseMoveEvent that handles crosshair display.
47
+ Child classes should call super().mouseMoveEvent(event) in their implementation.
48
+ """
49
+ # Handle crosshair display
50
+ scene_pos = self.annotation_window.mapToScene(event.pos())
51
+ cursor_in_window = self.annotation_window.cursorInWindow(event.pos())
52
+
53
+ if (cursor_in_window and self.active and
54
+ self.annotation_window.selected_label and
55
+ self.show_crosshair):
56
+ self.update_crosshair(scene_pos)
57
+ else:
58
+ self.clear_crosshair()
39
59
 
40
60
  def mouseReleaseEvent(self, event: QMouseEvent):
41
61
  pass
@@ -77,4 +97,60 @@ class Tool:
77
97
  """
78
98
  if self.cursor_annotation:
79
99
  self.cursor_annotation.delete()
80
- self.cursor_annotation = None
100
+ self.cursor_annotation = None
101
+
102
+ def draw_crosshair(self, scene_pos):
103
+ """
104
+ Draw crosshair guides at the current cursor position.
105
+
106
+ Args:
107
+ scene_pos: Position in scene coordinates where to draw the crosshair
108
+ """
109
+ # Only draw if we have an active image and scene position
110
+ if (
111
+ not self.show_crosshair
112
+ or not self.annotation_window.active_image
113
+ or not scene_pos
114
+ or not self.annotation_window.pixmap_image
115
+ ):
116
+ return
117
+
118
+ # Remove any existing crosshair lines
119
+ self.clear_crosshair()
120
+
121
+ # Get image bounds
122
+ image_rect = QGraphicsPixmapItem(self.annotation_window.pixmap_image).boundingRect()
123
+
124
+ # Create horizontal line across the full width of the image
125
+ self.h_crosshair_line = self.graphics_utility.create_guide_line(
126
+ QPointF(image_rect.left(), scene_pos.y()),
127
+ QPointF(image_rect.right(), scene_pos.y())
128
+ )
129
+ self.annotation_window.scene.addItem(self.h_crosshair_line)
130
+
131
+ # Create vertical line across the full height of the image
132
+ self.v_crosshair_line = self.graphics_utility.create_guide_line(
133
+ QPointF(scene_pos.x(), image_rect.top()),
134
+ QPointF(scene_pos.x(), image_rect.bottom())
135
+ )
136
+ self.annotation_window.scene.addItem(self.v_crosshair_line)
137
+
138
+ def clear_crosshair(self):
139
+ """Remove any crosshair guide lines from the scene."""
140
+ if self.h_crosshair_line and self.h_crosshair_line.scene():
141
+ self.annotation_window.scene.removeItem(self.h_crosshair_line)
142
+ self.h_crosshair_line = None
143
+ if self.v_crosshair_line and self.v_crosshair_line.scene():
144
+ self.annotation_window.scene.removeItem(self.v_crosshair_line)
145
+ self.v_crosshair_line = None
146
+
147
+ def update_crosshair(self, scene_pos):
148
+ """
149
+ Update the crosshair position. This is a convenience method that
150
+ clears and redraws the crosshair.
151
+
152
+ Args:
153
+ scene_pos: New position for the crosshair
154
+ """
155
+ self.clear_crosshair()
156
+ self.draw_crosshair(scene_pos)
@@ -103,6 +103,10 @@ class WorkAreaTool(Tool):
103
103
 
104
104
  def mouseMoveEvent(self, event: QMouseEvent):
105
105
  """Handle mouse move events to update the work area while drawing."""
106
+ # Call parent implementation to handle crosshair
107
+ super().mouseMoveEvent(event)
108
+
109
+ # Continue with tool-specific behavior
106
110
  scene_pos = self.annotation_window.mapToScene(event.pos())
107
111
  self.hover_pos = scene_pos # Track hover position for spacebar confirmation
108
112
 
@@ -98,7 +98,8 @@ class QtBaseModel(DetectionBaseModel, ABC):
98
98
  confidence: Detection confidence threshold.
99
99
 
100
100
  Returns:
101
- A flat list of Ultralytics Results objects, one for each input image.
101
+ A list containing a single combined Ultralytics Results object with detections from all input images.
102
+ Returns an empty list if no detections are found in any image.
102
103
  """
103
104
  # Step 1: Normalize the input into a consistent list of images
104
105
  normalized_inputs = self._normalize_input(inputs)
@@ -1,6 +1,6 @@
1
1
  """Top-level package for CoralNet-Toolbox."""
2
2
 
3
- __version__ = "0.0.76"
3
+ __version__ = "0.0.77"
4
4
  __author__ = "Jordan Pierce"
5
5
  __email__ = "jordan.pierce@noaa.gov"
6
6
  __credits__ = "National Center for Coastal and Ocean Sciences (NCCOS)"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coralnet-toolbox
3
- Version: 0.0.76
3
+ Version: 0.0.77
4
4
  Summary: Tools for annotating and developing ML models for benthic imagery
5
5
  Author-email: Jordan Pierce <jordan.pierce@noaa.gov>
6
6
  License: MIT License
@@ -1,14 +1,14 @@
1
- coralnet_toolbox/QtAnnotationWindow.py,sha256=YpE4e5gu0EcTqtzRNUcFqZl5SIjDaPK_FWxtFavfm4k,40950
1
+ coralnet_toolbox/QtAnnotationWindow.py,sha256=Y_8jQVEWGp5cbTg7FWlSM75nn71BezAW3I_Y0KNN1v4,41132
2
2
  coralnet_toolbox/QtConfidenceWindow.py,sha256=L5hR23uW91GpqnsNS9R1XF3zCTe2aU7w0iDoQMV0oyE,16190
3
- coralnet_toolbox/QtEventFilter.py,sha256=utGSwtKlKl-3qepN6aaVQm4sL513bfuJpA3-3VTqnDU,7701
4
- coralnet_toolbox/QtImageWindow.py,sha256=B_38VR_0QARyo05UEvInmQKd3N74Dfb0g_QDeGCTUuY,51291
3
+ coralnet_toolbox/QtEventFilter.py,sha256=6JQ6HzWhSeOvV6VVdn18eI-DmtglpRdit1N9NtCfqZk,7712
4
+ coralnet_toolbox/QtImageWindow.py,sha256=PofY9-7_r90J5X9A5yQK0RjPI_U6AAJJfnQwxUwZLWk,51463
5
5
  coralnet_toolbox/QtLabelWindow.py,sha256=O-mLtE6ycuuGloYYZX0Z9JYZtsBMmspqNeJWslrjfFc,51419
6
6
  coralnet_toolbox/QtMainWindow.py,sha256=4Znd0fezebQ-cWOKHjHTPVfj_DPH45A7tnUfxUEiqOQ,123615
7
7
  coralnet_toolbox/QtPatchSampling.py,sha256=Ehj06auBGfQwIruLNYQjF8eFOCpl8G72p42UXXb2mUo,29013
8
8
  coralnet_toolbox/QtProgressBar.py,sha256=L9V1dD9NQ5K-IK2NhJtESoieWGd1ULLsACEXuUDE4Ck,7922
9
9
  coralnet_toolbox/QtSystemMonitor.py,sha256=KSsUZ11GcHPH0Q7Pl8TUsFSB_jnWzNqGmtnf7IYYXpQ,16567
10
10
  coralnet_toolbox/QtWorkArea.py,sha256=YXRvHQKpWUtWyv_o9lZ8rmxfm28dUOG9pmMUeimDhQ4,13578
11
- coralnet_toolbox/__init__.py,sha256=VV5fKKSOZQ99ek8daqcG9QSiYWU3u7JvjF5L9yq8tfA,207
11
+ coralnet_toolbox/__init__.py,sha256=IFl5I4PdkaZp2BugeAalSkzd3crH_pMIeSWcuJi3yG0,207
12
12
  coralnet_toolbox/main.py,sha256=6j2B_1reC_KDmqvq1C0fB-UeSEm8eeJOozp2f4XXMLQ,1573
13
13
  coralnet_toolbox/utilities.py,sha256=Up6_z0n-8p7KccFLgBvlSnhfgX8B_mVTSmIfajpkkug,31173
14
14
  coralnet_toolbox/Annotations/QtAnnotation.py,sha256=4KxqDe_WPMGK18OYHZ1NqWzV87ARv8MnLAQdHFXo-Yg,27527
@@ -21,7 +21,7 @@ coralnet_toolbox/Annotations/__init__.py,sha256=bpMldC70tT_lzMrOdBNDkEhG9dCX3tXE
21
21
  coralnet_toolbox/BreakTime/QtBreakout.py,sha256=KYlhLMHF_5HVkjR8JDjbNu8CB6SHsEpECAywXqWVw10,54763
22
22
  coralnet_toolbox/BreakTime/QtSnake.py,sha256=XxmV64A_1avYf1uC_fXQpOZV3kCetz3CqboQsFwSIJk,22398
23
23
  coralnet_toolbox/BreakTime/__init__.py,sha256=7d_CMXp7T872NV-a6xaGU4oq5wjWAWGyrnd-YD3BDJo,150
24
- coralnet_toolbox/Common/QtGraphicsUtility.py,sha256=i5pCEQJdzNJ4K4NC0OjTZY8b88cOUxgKbonoarXOUoo,5802
24
+ coralnet_toolbox/Common/QtGraphicsUtility.py,sha256=M53aLq2AfHdyHwjz41ecw2tE8QZ6cjSzHHdObDNSFZI,6281
25
25
  coralnet_toolbox/Common/QtMarginInput.py,sha256=RBpz6q_OkZxQH7_r7Gd8U3C8TvnvPzemgfoRxL427B8,7998
26
26
  coralnet_toolbox/Common/QtOverlapInput.py,sha256=O9Dvwe4YmYSmf-W5fhAhl5kOIFsLa3AIuG6cdfxwQc4,5803
27
27
  coralnet_toolbox/Common/QtTileSizeInput.py,sha256=qxts1ufiG6cGFJWEa8DFB9wHV9AVw5dgE5OyLMJMHP8,3164
@@ -41,7 +41,7 @@ coralnet_toolbox/IO/QtExportAnnotations.py,sha256=xeaS0BukC3cpkBIGT9DXRqHmvHhp-v
41
41
  coralnet_toolbox/IO/QtExportCoralNetAnnotations.py,sha256=4royhF63EmeOlSIBX389EUjjvE-SF44_maW6qm52mdA,2778
42
42
  coralnet_toolbox/IO/QtExportGeoJSONAnnotations.py,sha256=9HkHjQTRtH4VnYa50c5pyqQz30R_6gIH5i3xFF6kDWI,27759
43
43
  coralnet_toolbox/IO/QtExportLabels.py,sha256=Vsav0wd1EK4g065aEWvxyNuvvM9BFB7UXxz6IJzwVBU,2588
44
- coralnet_toolbox/IO/QtExportMaskAnnotations.py,sha256=7prXGsFFXjF1dvaybEqmwBO-N1th0c-s8GsedmyB_RQ,32651
44
+ coralnet_toolbox/IO/QtExportMaskAnnotations.py,sha256=0nWAMdgDq_joI7aCpBIg4isi0sZ3HlLiE7IxiOgh2Wc,34213
45
45
  coralnet_toolbox/IO/QtExportTagLabAnnotations.py,sha256=JL4r1a6_PUjCzWQjMxOzxtkF2gyqIttpD14OxEcW-dA,11330
46
46
  coralnet_toolbox/IO/QtExportTagLabLabels.py,sha256=e6OL8UNtLRAJrovfs1cxVz0k2bHuJXdVmO-A0OVpgSk,3164
47
47
  coralnet_toolbox/IO/QtExportViscoreAnnotations.py,sha256=AUTzVB-N9uwlQPSds74YXyPVZzEHph7HDq01R88OBJY,19166
@@ -49,12 +49,12 @@ coralnet_toolbox/IO/QtImportAnnotations.py,sha256=LYFmlsANRTdQqcQsIXfbWiTGNJcaeI
49
49
  coralnet_toolbox/IO/QtImportCoralNetAnnotations.py,sha256=N6wQV48r2cs3_KkuxdM0MUQkgTMwv9iT9qAmLGpyCMk,9917
50
50
  coralnet_toolbox/IO/QtImportCoralNetLabels.py,sha256=FKOawTboEEAC7M8KbyEtX7fXOoFKpU51EKNjWXb1DHk,4019
51
51
  coralnet_toolbox/IO/QtImportFrames.py,sha256=7azCV-0dYTeySeXvlcawzwxswXNzxHU3u3nnaA0VoWs,45774
52
- coralnet_toolbox/IO/QtImportImages.py,sha256=apgv16dzcg-j6ugimvG_Houtu3m--Y9jyAZgB-k7BrQ,4260
52
+ coralnet_toolbox/IO/QtImportImages.py,sha256=KXl-Tlt_nSNZmhe63fHHkn2WlB15QQP-CXDD7sP6wKo,3911
53
53
  coralnet_toolbox/IO/QtImportLabels.py,sha256=_xzm-TDoFVgAbjdBwvOscVskPcLN_z054P5IkT73ohU,3291
54
54
  coralnet_toolbox/IO/QtImportTagLabAnnotations.py,sha256=AH970q5HYiBLfud8NHxxcfm58pyOX5qwic3x4bF5GlQ,12781
55
55
  coralnet_toolbox/IO/QtImportTagLabLabels.py,sha256=cCqFBOrAlnbiOL0xFY8G_FSTmeVsnYWh-bmVE-rfg0k,3927
56
56
  coralnet_toolbox/IO/QtImportViscoreAnnotations.py,sha256=TYlDzCLMXizoHFRiaofNdE-t9Cr7sJGj5NFsVUi6cjU,11871
57
- coralnet_toolbox/IO/QtOpenProject.py,sha256=1nsntv5mlC6hmtLbquebIOuTAn6wNNgJVZTCulp14LQ,15060
57
+ coralnet_toolbox/IO/QtOpenProject.py,sha256=LVgT2t38MQ4GA4u2mAppTzFJiB3Pz1mynvOv161Q7lQ,14846
58
58
  coralnet_toolbox/IO/QtSaveProject.py,sha256=g7Uydya1Rcvh6GX3NfpQUgyZzs0wUDq1sJnmihx-8cM,10441
59
59
  coralnet_toolbox/IO/__init__.py,sha256=M3KH90zIoOVoPu1nDS-gvoVV3O24S_KM-4CvxXR-nfw,1538
60
60
  coralnet_toolbox/Icons/1.png,sha256=Ygcz3idjoa-RNaPXQXbHfw853DhnpD6iBa3nNFVimJ4,180
@@ -137,7 +137,7 @@ coralnet_toolbox/MachineLearning/ExportDataset/QtClassify.py,sha256=5LB8m2zJ24hj
137
137
  coralnet_toolbox/MachineLearning/ExportDataset/QtDetect.py,sha256=ptZ0rUoZ1Tc0RGjKuXU15ZTM87m3gO8vLu6I7w5PVgs,6669
138
138
  coralnet_toolbox/MachineLearning/ExportDataset/QtSegment.py,sha256=7sDczfciPPbGgMdb6D9pZn27DHs_Spg1bd-bc9_hI7Y,6696
139
139
  coralnet_toolbox/MachineLearning/ExportDataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
- coralnet_toolbox/MachineLearning/ImportDataset/QtBase.py,sha256=BQ_o5l_QHPm2dFD1jUkQxaQJ8ya1zysg3_14J7wei8E,29369
140
+ coralnet_toolbox/MachineLearning/ImportDataset/QtBase.py,sha256=hP-HZwYGV2q6cKYtRZb9_tuHxvYynaaNuvNy9JWGTEg,30600
141
141
  coralnet_toolbox/MachineLearning/ImportDataset/QtDetect.py,sha256=1YQFAgfuPUUZ18fXbvs4GP9Mrp_-9kfeDdmJHEA5e7I,1121
142
142
  coralnet_toolbox/MachineLearning/ImportDataset/QtSegment.py,sha256=D4bef57dCQa4nJWf8cUphrUILvbfT-a34C-rgpxi814,1163
143
143
  coralnet_toolbox/MachineLearning/ImportDataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -173,7 +173,7 @@ coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/load_camera_params.py,sha
173
173
  coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/run.py,sha256=eOXf7o9M9OB4T1BpvqBe3cx00VVTscw-YCCCHOOI2X8,26912
174
174
  coralnet_toolbox/Rasters/ImageFilter.py,sha256=EhH1YoVjC29ER4qU4t9xwybeX9E012fLq04iPFfbaz4,7928
175
175
  coralnet_toolbox/Rasters/QtRaster.py,sha256=qWqhKiZbBnv0JnCQvPXx6fQYENgSA7sp3vBUj4fdnhA,18435
176
- coralnet_toolbox/Rasters/RasterManager.py,sha256=GuTeuty3x4k8DWZ34FQ4BTNwRfjWu0lEhv3NfF2t5u4,6534
176
+ coralnet_toolbox/Rasters/RasterManager.py,sha256=FH0d7Hj_E6sR2Eesd8sA8AA1Dlqteut9UyNd6WdrCBo,6622
177
177
  coralnet_toolbox/Rasters/RasterTableModel.py,sha256=8ebirBkTUSy5Rdsoq10sqzDQBoYCH_Hu40dPiUhtlzc,15311
178
178
  coralnet_toolbox/Rasters/__init__.py,sha256=Pi88uDQbtWxwHfJFdlsvbkwGNhtlyM_013l8bbJlFfw,428
179
179
  coralnet_toolbox/Results/CombineResults.py,sha256=QrHyKhMrjNDtQ98PQabUflHhyv_8KXTGqU30tw9amV8,4523
@@ -187,7 +187,7 @@ coralnet_toolbox/SAM/QtDeployGenerator.py,sha256=UtJH1ZQ9g_Wqa4s09PBMCrmNRpqUZZa
187
187
  coralnet_toolbox/SAM/QtDeployPredictor.py,sha256=7jOFFnNqY7Ylr1IKjTI_YSrPYgCxHpI4ZBda7Kp806g,24413
188
188
  coralnet_toolbox/SAM/__init__.py,sha256=Zxd75pFMrt5DfSmNNVSsQeCucIQ2rVaEiS0hT_OVIMM,293
189
189
  coralnet_toolbox/SeeAnything/QtBatchInference.py,sha256=k3aftVzva84yATB4Su5DSI0lhkHDggUg3mVAx4AHmjw,7134
190
- coralnet_toolbox/SeeAnything/QtDeployGenerator.py,sha256=5wG2XKhHzdNXjmG3u5Npc7TGBfFLMWPHzYQ12NlZvd0,68578
190
+ coralnet_toolbox/SeeAnything/QtDeployGenerator.py,sha256=oF01_J46xm1kGLhT7wtMI9BurzhSsucXs7nsW3917xM,76953
191
191
  coralnet_toolbox/SeeAnything/QtDeployPredictor.py,sha256=sfaaJoDFM2ntdqD0CXsTSHRZIuCRfviVg4vqhG0sGdI,26804
192
192
  coralnet_toolbox/SeeAnything/QtTrainModel.py,sha256=dQ6ZkeIr1migU-edGO-gQMENVP4o7WJsIANlSVhFK8k,28031
193
193
  coralnet_toolbox/SeeAnything/__init__.py,sha256=4OgG9-aQ6_RZ942-Ift_q-kkp14kObMT4lDIIx9YSxQ,366
@@ -202,18 +202,18 @@ coralnet_toolbox/Tile/TileDataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
202
202
  coralnet_toolbox/Tools/QtCutSubTool.py,sha256=3mO8VLrS_sKuEukGQljF_gX8PMdf1za-dxudB6lyCGI,6456
203
203
  coralnet_toolbox/Tools/QtMoveSubTool.py,sha256=K5uXEGGl8nwKvGI0DBGZ8ILZsxWf22HVSfyLr0hKhuE,2165
204
204
  coralnet_toolbox/Tools/QtPanTool.py,sha256=q0g5Ryse6mIZ_Ss4qJw5NNwgoLuQQBIyQTXNFL643-s,3062
205
- coralnet_toolbox/Tools/QtPatchTool.py,sha256=57vFeR2jQ_VQRlMEIC_mH8NigUqOlVvmhaVkXDvd_Gw,5574
206
- coralnet_toolbox/Tools/QtPolygonTool.py,sha256=mQB2NuGGUmo7W4Pf8DJI9PDa3PW7Hu2nOMf4uTyWAq8,11236
207
- coralnet_toolbox/Tools/QtRectangleTool.py,sha256=VJWKktDiDN1TUZATRSe_1kjppFjV0AMYDZ8bK78dCXc,8672
205
+ coralnet_toolbox/Tools/QtPatchTool.py,sha256=-kmuJeGoua8EW5tHzSP4LvzTbPajAYTMOfdSi7oxK84,5742
206
+ coralnet_toolbox/Tools/QtPolygonTool.py,sha256=P1Csvzu-gAreVRyI0YCB5jNLUK7sPcLY7teX2P9E3Gw,11282
207
+ coralnet_toolbox/Tools/QtRectangleTool.py,sha256=TduGaouBgphStyr1-gA0RqY6erTZs-qUA5FIr1qaXkQ,8969
208
208
  coralnet_toolbox/Tools/QtResizeSubTool.py,sha256=cWJDx8PEtxoCLQKuyEyZ6ccBzFKau9j1djrSSpDgaq8,6524
209
- coralnet_toolbox/Tools/QtSAMTool.py,sha256=c719q573SRDxr5mLxNB7K5YNvZnWQYcFxzdm_I4f08Y,36529
210
- coralnet_toolbox/Tools/QtSeeAnythingTool.py,sha256=ZjqaM0At7MCB5R0wgibph75FkH2ZIePfRnXQUQko6wE,38515
209
+ coralnet_toolbox/Tools/QtSAMTool.py,sha256=fEEif1uah5DxNxS3oCIll4OiGgLETY87ue852MIekIk,36680
210
+ coralnet_toolbox/Tools/QtSeeAnythingTool.py,sha256=qo8IT8tOs_k7ck2xgMrL_Edc6otv_kQbhdo3yWs65aE,38666
211
211
  coralnet_toolbox/Tools/QtSelectSubTool.py,sha256=_FIjLhnEVY19Q87jhRKXGdghNfMBxxy_sECAIUo0BZA,3294
212
212
  coralnet_toolbox/Tools/QtSelectTool.py,sha256=qAXRIGmjdzWjaH6GwhvlQSodZuFa6OnyckzNVfVDG2w,20983
213
213
  coralnet_toolbox/Tools/QtSubTool.py,sha256=H25FoFqywdi6Bl35MfpEXGrr48ZTgdRRvHMxUy1tqN4,1601
214
214
  coralnet_toolbox/Tools/QtSubtractSubTool.py,sha256=u9zbkila7hJ_AEhWRM6e_z0OgGs5xqO5zbqVetvCAEU,2682
215
- coralnet_toolbox/Tools/QtTool.py,sha256=2MCjT151gYBN8KbsK0GX4WOrEg1uw3oeSkp7Elw1AUA,2531
216
- coralnet_toolbox/Tools/QtWorkAreaTool.py,sha256=ApsIiEbkyWFWKW6qnFPPnL_Wgs2xa_Edif5kZU5_n8M,22733
215
+ coralnet_toolbox/Tools/QtTool.py,sha256=Nvf8pqdanf3QMVEvSilFhijXIuj-18jUuVz-tlTuNgY,5677
216
+ coralnet_toolbox/Tools/QtWorkAreaTool.py,sha256=uncOi2vWanPxrxXQimuAR0wqokHWlsm4VhzV1wC6Q9s,22884
217
217
  coralnet_toolbox/Tools/QtZoomTool.py,sha256=F9CAoABv1jxcUS7dyIh1FYjgjOXYRI1xtBPNIR1g62o,4041
218
218
  coralnet_toolbox/Tools/__init__.py,sha256=UYStZw1eA_yJ07IVli1MYSvk0pSCs1aS169LcQo630s,867
219
219
  coralnet_toolbox/Transformers/QtBatchInference.py,sha256=Adry1H-oIMV6Ppo8yRJRx79oeG1yUthT5jqszj7EJ20,5764
@@ -222,11 +222,11 @@ coralnet_toolbox/Transformers/__init__.py,sha256=Oef7mKgwlK_hi5ZtXlRTvpyKhf98JPw
222
222
  coralnet_toolbox/Transformers/Models/GroundingDINO.py,sha256=V77tapTLsXtTISbqsV9ZSGYgkJQTI1RKsT95QagYhqk,2747
223
223
  coralnet_toolbox/Transformers/Models/OWLViT.py,sha256=l9R9XKN7grw6gF7EC9DWxF5sUsApLfi0WO-zj6pVVHU,2781
224
224
  coralnet_toolbox/Transformers/Models/OmDetTurbo.py,sha256=vaXaQNqBCvnEFcPMt6x_EJI-gf-Wy3eYZPak7a527WY,2592
225
- coralnet_toolbox/Transformers/Models/QtBase.py,sha256=AYGTOxopOXYrHSDWAenvyxAAgqHbQs3zIox-c4BX9YQ,4533
225
+ coralnet_toolbox/Transformers/Models/QtBase.py,sha256=nB9a4ZZqo2H4NW-uiPPpZPapSChlEcviq-uw_lxWBUg,4640
226
226
  coralnet_toolbox/Transformers/Models/__init__.py,sha256=icJnQkt2vZksubEJuih0sT0q2vLR_Y-12WuTGquvxt8,260
227
- coralnet_toolbox-0.0.76.dist-info/licenses/LICENSE.txt,sha256=AURacZ_G_PZKqqPQ9VB9Sqegblk67RNgWSGAYKwXXMY,521
228
- coralnet_toolbox-0.0.76.dist-info/METADATA,sha256=MlZwkwAUGZWKcCzQVqIpHkuoenuz2arqnEIzviPsFps,15381
229
- coralnet_toolbox-0.0.76.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
230
- coralnet_toolbox-0.0.76.dist-info/entry_points.txt,sha256=oEeMoDlJ_2lq95quOeDHIx9hZpubUlSo80OLtgbcrbM,63
231
- coralnet_toolbox-0.0.76.dist-info/top_level.txt,sha256=SMWPh4_9JfB8zVpPOOvjucV2_B_hvWW7bNWmMjG0LsY,17
232
- coralnet_toolbox-0.0.76.dist-info/RECORD,,
227
+ coralnet_toolbox-0.0.77.dist-info/licenses/LICENSE.txt,sha256=AURacZ_G_PZKqqPQ9VB9Sqegblk67RNgWSGAYKwXXMY,521
228
+ coralnet_toolbox-0.0.77.dist-info/METADATA,sha256=iwt0mxJ10RqbsFrHIrnkIrVYUlGLPUOTNMfPIScR-5Q,15381
229
+ coralnet_toolbox-0.0.77.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
230
+ coralnet_toolbox-0.0.77.dist-info/entry_points.txt,sha256=oEeMoDlJ_2lq95quOeDHIx9hZpubUlSo80OLtgbcrbM,63
231
+ coralnet_toolbox-0.0.77.dist-info/top_level.txt,sha256=SMWPh4_9JfB8zVpPOOvjucV2_B_hvWW7bNWmMjG0LsY,17
232
+ coralnet_toolbox-0.0.77.dist-info/RECORD,,