From dbd81b67f1f255711bac23747ca2804a8d4635f1 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sat, 7 Dec 2024 11:38:40 +0000 Subject: [PATCH] Fix typing of updated numpy and opencv --- april_vision/cli/calibrate.py | 3 ++- april_vision/utils.py | 6 +++--- april_vision/vision.py | 13 ++++++++----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/april_vision/cli/calibrate.py b/april_vision/cli/calibrate.py index e794440..299bd1f 100644 --- a/april_vision/cli/calibrate.py +++ b/april_vision/cli/calibrate.py @@ -154,7 +154,8 @@ def main(args: argparse.Namespace) -> None: width, height = frames[0].grey_frame.shape[::-1] # Calculate the camera calibration - reproj_error, camera_matrix, dist_coeff, _rvec, _tvec = cv2.calibrateCamera( + # typehints are incorrect for this function, so we ignore them + reproj_error, camera_matrix, dist_coeff, _rvec, _tvec = cv2.calibrateCamera( # type: ignore[call-overload,unused-ignore] objectPoints, imagePoints, (width, height), diff --git a/april_vision/utils.py b/april_vision/utils.py index bec9fa1..eea8464 100644 --- a/april_vision/utils.py +++ b/april_vision/utils.py @@ -5,7 +5,6 @@ from typing import Deque, NamedTuple, Optional, Tuple, Union import cv2 -import numpy as np from numpy.typing import NDArray from .marker import Marker, PixelCoordinates @@ -30,7 +29,8 @@ def from_colour_frame( if colourspace is not None: grey_frame = cv2.cvtColor(colour_frame, colourspace) else: - grey_frame = colour_frame.copy() + # mypy doesn't understand that Mat is a numpy array until numpy 2.1 + grey_frame = colour_frame.copy() # type: ignore[assignment,unused-ignore] return cls( grey_frame=grey_frame, @@ -62,7 +62,7 @@ def annotate_text( cv2.putText( frame_type, text, - np.array(location, dtype=np.int32), + location, cv2.FONT_HERSHEY_DUPLEX, text_scale, color=text_colour, # in BGR diff --git a/april_vision/vision.py b/april_vision/vision.py index 93d4b96..1066173 100644 --- a/april_vision/vision.py +++ b/april_vision/vision.py @@ -122,7 +122,8 @@ def _annotate( for frame_type in frame: cv2.polylines( frame_type, - [integer_corners], + # mypy doesn't understand that Mat is a numpy array until numpy 2.1 + [integer_corners], # type: ignore[assignment,unused-ignore] isClosed=True, color=(0, 255, 0), # Green (BGR) thickness=line_thickness, @@ -148,7 +149,8 @@ def _annotate( cv2.polylines( frame_type, - [origin_square], + # mypy doesn't understand that Mat is a numpy array until numpy 2.1 + [origin_square], # type: ignore[assignment,unused-ignore] isClosed=True, color=(0, 0, 255), # red thickness=line_thickness, @@ -157,9 +159,10 @@ def _annotate( marker_text_scale = text_scale * normalise_marker_text(marker) # Approximately center the text - text_origin = np.array(marker.pixel_centre, dtype=np.int32) - text_origin += np.array( - [-40 * marker_text_scale, 10 * marker_text_scale], dtype=np.int32) + text_origin = ( + int(marker.pixel_centre.x - 40 * marker_text_scale), + int(marker.pixel_centre.y + 10 * marker_text_scale), + ) cv2.putText( frame_type,