refactor(cameras): move find_cameras to the base class
This commit is contained in:
@@ -15,6 +15,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import abc
|
import abc
|
||||||
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
@@ -66,6 +67,16 @@ class Camera(abc.ABC):
|
|||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
@abc.abstractmethod
|
||||||
|
def find_cameras() -> List[Dict[str, Any]]:
|
||||||
|
"""Detects available cameras connected to the system.
|
||||||
|
Returns:
|
||||||
|
List[Dict[str, Any]]: A list of dictionaries,
|
||||||
|
where each dictionary contains information about a detected camera.
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def connect(self, warmup: bool = True) -> None:
|
def connect(self, warmup: bool = True) -> None:
|
||||||
"""Establish connection to the camera.
|
"""Establish connection to the camera.
|
||||||
|
|||||||
@@ -259,15 +259,12 @@ class OpenCVCamera(Camera):
|
|||||||
logger.debug(f"Capture height set to {actual_height} for {self}.")
|
logger.debug(f"Capture height set to {actual_height} for {self}.")
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def find_cameras(max_index_search_range=MAX_OPENCV_INDEX) -> List[Dict[str, Any]]:
|
def find_cameras() -> List[Dict[str, Any]]:
|
||||||
"""
|
"""
|
||||||
Detects available OpenCV cameras connected to the system.
|
Detects available OpenCV cameras connected to the system.
|
||||||
|
|
||||||
On Linux, it scans '/dev/video*' paths. On other systems (like macOS, Windows),
|
On Linux, it scans '/dev/video*' paths. On other systems (like macOS, Windows),
|
||||||
it checks indices from 0 up to `max_index_search_range`.
|
it checks indices from 0 up to `MAX_OPENCV_INDEX`.
|
||||||
|
|
||||||
Args:
|
|
||||||
max_index_search_range (int): The maximum index to check on non-Linux systems.
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
List[Dict[str, Any]]: A list of dictionaries,
|
List[Dict[str, Any]]: A list of dictionaries,
|
||||||
@@ -283,9 +280,9 @@ class OpenCVCamera(Camera):
|
|||||||
logger.debug(f"Found potential paths: {targets_to_scan}")
|
logger.debug(f"Found potential paths: {targets_to_scan}")
|
||||||
else:
|
else:
|
||||||
logger.info(
|
logger.info(
|
||||||
f"{platform.system()} system detected. Scanning indices from 0 to {max_index_search_range}..."
|
f"{platform.system()} system detected. Scanning indices from 0 to {MAX_OPENCV_INDEX}..."
|
||||||
)
|
)
|
||||||
targets_to_scan = list(range(max_index_search_range))
|
targets_to_scan = list(range(MAX_OPENCV_INDEX))
|
||||||
|
|
||||||
for target in targets_to_scan:
|
for target in targets_to_scan:
|
||||||
camera = cv2.VideoCapture(target)
|
camera = cv2.VideoCapture(target)
|
||||||
|
|||||||
Reference in New Issue
Block a user