Skip to content

Commit 6bc315e

Browse files
committed
Latest version, removal of flashCalibration2
1 parent 731eafa commit 6bc315e

4 files changed

Lines changed: 48 additions & 26 deletions

File tree

calibrate.py

Lines changed: 45 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,38 @@
11
#!/usr/bin/env python3
2+
from datetime import datetime, timedelta
3+
from argparse import ArgumentParser
4+
from collections import deque
5+
from pathlib import Path
6+
import itertools
7+
import traceback
28
import argparse
9+
310
import json
4-
from pydoc import render_doc
511
import shutil
6-
import traceback
7-
from argparse import ArgumentParser
8-
from pathlib import Path
12+
913
import time
10-
from datetime import datetime, timedelta
11-
from collections import deque
12-
from scipy.spatial.transform import Rotation
13-
import traceback
14-
import itertools
1514
import math
1615

1716
import cv2
18-
from cv2 import resize
17+
import sys
18+
import os
19+
20+
def check_opencv_version(REQUIRED_VERSION = "4.5.5"):
21+
installed = cv2.__version__
22+
if installed != REQUIRED_VERSION:
23+
print(f"[ERROR] OpenCV version mismatch!")
24+
print(f"Installed: {installed}")
25+
print(f"Required : {REQUIRED_VERSION}")
26+
print("Please re-run:")
27+
print(" pip install -r calib_requirements.txt")
28+
sys.exit(1)
29+
else:
30+
print(f"[OK] OpenCV version {installed} is correct.")
31+
32+
check_opencv_version()
33+
1934
import depthai as dai
2035
import numpy as np
21-
import copy
2236
from packaging import version
2337
import sys
2438

@@ -168,7 +182,7 @@ def parse_args():
168182
help="Enable the display of polynoms.")
169183
parser.add_argument('-dbg', '--debugProcessingMode', default=False, action="store_true",
170184
help="Enable processing of images without using the camera.")
171-
parser.add_argument('-v3', '--useDepthaiV3', default=False, action="store_true",
185+
parser.add_argument('-v3', '--useDepthaiV3', default=True, action="store_true",
172186
help="Use depthai v3.")
173187
options = parser.parse_args()
174188
# Set some extra defaults, `-brd` would override them
@@ -599,17 +613,21 @@ def create_pipeline_v3(self):
599613
pipeline = dai.Pipeline(self.device)
600614
self.camera_queue = {}
601615
fps = self.args.framerate
616+
sync = pipeline.create(dai.node.Sync)
617+
sync.setSyncThreshold(timedelta(milliseconds=50))
602618
for cam_id in self.board_config['cameras']:
603619
cam_info = self.board_config['cameras'][cam_id]
604620
if cam_info["name"] not in self.args.disableCamera:
605621
if cam_info['type'] == 'mono':
606-
cam_node = pipeline.create(dai.node.Camera).build(stringToCam[cam_id])
607-
self.camera_queue[cam_info['name']] = cam_node.requestFullResolutionOutput(type=dai.ImgFrame.Type.NV12).createOutputQueue(blocking=False)
622+
cam_node = pipeline.create(dai.node.Camera, fps = fps).build(stringToCam[cam_id])
623+
cam_output = cam_node.requestFullResolutionOutput(type=dai.ImgFrame.Type.NV12)
624+
cam_output.link(sync.inputs[cam_info["name"]])
625+
self.camera_queue[cam_info['name']] = cam_output
608626
sensorName = cam_info['sensorName']
609627
print(f'Sensor name for {cam_info["name"]} is {sensorName}')
610628
else:
611-
cam_node = pipeline.create(dai.node.Camera).build(stringToCam[cam_id])
612-
self.camera_queue[cam_info['name']] = cam_node.requestFullResolutionOutput(type=dai.ImgFrame.Type.NV12).createOutputQueue(blocking=False)
629+
cam_node = pipeline.create(dai.node.Camera, fps = fps).build(stringToCam[cam_id])
630+
self.camera_queue[cam_info['name']] = cam_node.requestFullResolutionOutput(type=dai.ImgFrame.Type.NV12).link(sync.inputs[cam_info["name"]])
613631
if cam_info['sensorName'] == "OV9*82":
614632
cam_node.initialControl.setSharpness(0)
615633
cam_node.initialControl.setLumaDenoise(0)
@@ -619,14 +637,13 @@ def create_pipeline_v3(self):
619637
if self.args.rgbLensPosition:
620638
cam_node.initialControl.setManualFocus(int(self.args.rgbLensPosition[stringToCam[cam_id].name.lower()]))
621639
else:
622-
cam_node.initialControl.setManualFocusRaw(int(130 / 255))
640+
cam_node.initialControl.setManualFocusRaw(int(135 / 255))
623641

624-
controlIn = pipeline.createXLinkIn()
625-
controlIn.setStreamName(cam_info['name'] + '-control')
626-
controlIn.out.link(cam_node.inputControl)
642+
self.control_queue = cam_node.inputControl.createInputQueue()
627643
sensorName = cam_info['sensorName']
628644
print(f'Sensor name for {cam_info["name"]} is {sensorName}')
629-
cam_node.initialControl.setAntiBandingMode(antibandingOpts[self.args.antibanding])
645+
#cam_node.initialControl.setAntiBandingMode(antibandingOpts[self.args.antibanding])
646+
self.sync_queue = sync.out.createOutputQueue()
630647
return pipeline
631648

632649
def parse_frame(self, frame, stream_name):
@@ -766,8 +783,13 @@ def capture_images_sync(self):
766783
sync_trys = 0
767784
while not finished:
768785
currImageList = {}
786+
if self.args.useDepthaiV3:
787+
msg_group = self.sync_queue.get()
769788
for key in self.camera_queue.keys():
770-
frameMsg = self.camera_queue[key].get()
789+
if self.args.useDepthaiV3:
790+
frameMsg = msg_group[key]
791+
else:
792+
frameMsg = self.camera_queue[key].get()
771793

772794
#print(f'Timestamp of {key} is {frameMsg.getTimestamp()}')
773795

@@ -1143,7 +1165,7 @@ def calibrate(self):
11431165
Path(self.args.saveCalibPath).parent.mkdir(parents=True, exist_ok=True)
11441166
calibration_handler.eepromToJsonFile(self.args.saveCalibPath)
11451167
# try:
1146-
self.device.flashCalibration2(calibration_handler)
1168+
self.device.flashCalibration(calibration_handler)
11471169
is_write_succesful = True
11481170
# except RuntimeError as e:
11491171
# is_write_succesful = False

depthai_calibration

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ opencv-contrib-python==4.5.5.62 # Last successful RPi build, also covers M1 with
66
pyqt5>5,<5.15.6 ; platform_machine != "armv6l" and platform_machine != "armv7l" and platform_machine != "aarch64" and platform_machine != "arm64"
77
--extra-index-url https://artifacts.luxonis.com/artifactory/luxonis-python-snapshot-local/
88
depthai
9-
numpy>=1.21.4,<2.0.0 # For RPi Buster (last successful build) and macOS M1 (first build). But allow for higher versions, to support Python3.11 (not available in 1.21.4 yet)
9+
numpy>=1.26.4,<2.0.0 # For RPi Buster (last successful build) and macOS M1 (first build). But allow for higher versions, to support Python3.11 (not available in 1.21.4 yet)
1010
Qt.py
1111
scipy
1212
matplotlib

resources/depthai_boards

Submodule depthai_boards updated 61 files

0 commit comments

Comments
 (0)