From e9c39dab6575c8d97f87468a4147c3eff69d75c3 Mon Sep 17 00:00:00 2001 From: Douglas Balish Date: Fri, 10 Oct 2025 15:57:56 -0400 Subject: [PATCH 1/4] tweak rectified focal length util (C++) to better match usage --- .../RectifiedFocalLengthUtility.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/Utilities/LibMultiSense/RectifiedFocalLengthUtility/RectifiedFocalLengthUtility.cc b/source/Utilities/LibMultiSense/RectifiedFocalLengthUtility/RectifiedFocalLengthUtility.cc index 65bd2298..a5f8d21c 100644 --- a/source/Utilities/LibMultiSense/RectifiedFocalLengthUtility/RectifiedFocalLengthUtility.cc +++ b/source/Utilities/LibMultiSense/RectifiedFocalLengthUtility/RectifiedFocalLengthUtility.cc @@ -116,9 +116,9 @@ int main(int argc, char** argv) } } - if (!rectified_focal_length || rectified_focal_length.value() < 0.0) + if ((!rectified_focal_length || rectified_focal_length.value() < 0.0) && set) { - std::cerr << "Invalid input rectified focal length" << std::endl;; + std::cerr << "Invalid input rectified focal length" << std::endl; usage(*argv); } @@ -131,10 +131,10 @@ int main(int argc, char** argv) const auto current_calibration = channel->get_calibration(); - const auto new_calibration = update_calibration(current_calibration, rectified_focal_length.value()); - if (set) { + const auto new_calibration = update_calibration(current_calibration, rectified_focal_length.value()); + if (channel->set_calibration(new_calibration) != lms::Status::OK) { std::cerr << "Failed to set the updated calibration" << std::endl; @@ -143,7 +143,7 @@ int main(int argc, char** argv) } else { - std::cout << "Please add the \"-s\" argument to write the new rectified focal length to the camera" << std::endl; + std::cout << "Current focal length: " << current_calibration.left.P[0][0] << "px" << std::endl; } return 0; From 8b1998b813b0d5e38febf6299fbc08b69db45b22 Mon Sep 17 00:00:00 2001 From: Douglas Balish Date: Fri, 10 Oct 2025 16:10:10 -0400 Subject: [PATCH 2/4] tweak python focal length util to match c++ version --- .../rectified_focal_length_utility.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/source/Utilities/LibMultiSense/RectifiedFocalLengthUtility/rectified_focal_length_utility.py b/source/Utilities/LibMultiSense/RectifiedFocalLengthUtility/rectified_focal_length_utility.py index e875bde9..8e5938fa 100755 --- a/source/Utilities/LibMultiSense/RectifiedFocalLengthUtility/rectified_focal_length_utility.py +++ b/source/Utilities/LibMultiSense/RectifiedFocalLengthUtility/rectified_focal_length_utility.py @@ -71,19 +71,23 @@ def main(args): print("Invalid channel") exit(1) - current_calibration = channel.get_calibration(); - - new_calibration = update_calibration(current_calibration, args.rectified_focal_length) + current_calibration = channel.get_calibration() if args.set: + if args.rectified_focal_length is None: + print("Unable to set new focal length, --rectified-focal-length (-r) is required when trying to --set") + exit(1) + new_calibration = update_calibration(current_calibration, args.rectified_focal_length) if channel.set_calibration(new_calibration) != lms.Status.OK: print("Failed to set the updated calibration") exit(1) + else: + print("Current focal length: " + str(current_calibration.left.P[0][0]) + "px") if __name__ == '__main__': - parser = argparse.ArgumentParser("LibMultiSense save image utility") + parser = argparse.ArgumentParser("LibMultiSense rectified focal length utility") parser.add_argument("-a", "--ip_address", default="10.66.171.21", help="The IPv4 address of the MultiSense.") parser.add_argument("-m", "--mtu", type=int, default=1500, help="The MTU to use to communicate with the camera.") - parser.add_argument("-r", "--rectified-focal-length", type=float, required=True, help="The new rectified focal length") - parser.add_argument("-s", "--set", action="store_true", help="Write the new calibration to camera") + parser.add_argument("-r", "--rectified-focal-length", type=float, help="The new rectified focal length") + parser.add_argument("-s", "--set", action="store_true", help="Write the new calibration to camera (default query)") main(parser.parse_args()) From 798064f68e4789c03a4eba183778dbcd69acdcdd Mon Sep 17 00:00:00 2001 From: Douglas Balish Date: Fri, 10 Oct 2025 16:10:25 -0400 Subject: [PATCH 3/4] Fix python util argparse names --- .../LibMultiSense/DeviceInfoUtility/device_info_utility.py | 2 +- .../LibMultiSense/ImageCalUtility/image_cal_utility.py | 2 +- .../LibMultiSense/VersionInfoUtility/version_info_utility.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/Utilities/LibMultiSense/DeviceInfoUtility/device_info_utility.py b/source/Utilities/LibMultiSense/DeviceInfoUtility/device_info_utility.py index e9045592..f6055034 100755 --- a/source/Utilities/LibMultiSense/DeviceInfoUtility/device_info_utility.py +++ b/source/Utilities/LibMultiSense/DeviceInfoUtility/device_info_utility.py @@ -56,7 +56,7 @@ def main(args): separators=(',', ': '))) if __name__ == '__main__': - parser = argparse.ArgumentParser("LibMultiSense save image utility") + parser = argparse.ArgumentParser("LibMultiSense device info utility") parser.add_argument("-a", "--ip_address", default="10.66.171.21", help="The IPv4 address of the MultiSense.") parser.add_argument("-m", "--mtu", type=int, default=1500, help="The MTU to use to communicate with the camera.") main(parser.parse_args()) diff --git a/source/Utilities/LibMultiSense/ImageCalUtility/image_cal_utility.py b/source/Utilities/LibMultiSense/ImageCalUtility/image_cal_utility.py index 5f4cca71..c45bc331 100755 --- a/source/Utilities/LibMultiSense/ImageCalUtility/image_cal_utility.py +++ b/source/Utilities/LibMultiSense/ImageCalUtility/image_cal_utility.py @@ -110,7 +110,7 @@ def main(args): write_cal(intrinsics, extrinsics, 3, calibration.aux) if __name__ == '__main__': - parser = argparse.ArgumentParser("LibMultiSense save image utility") + parser = argparse.ArgumentParser("LibMultiSense image cal utility") parser.add_argument("-a", "--ip_address", default="10.66.171.21", help="The IPv4 address of the MultiSense.") parser.add_argument("-m", "--mtu", type=int, default=1500, help="The MTU to use to communicate with the camera.") parser.add_argument("-i", "--intrinsics", required=True, help="The path to the intrinsics file to read from/write to.") diff --git a/source/Utilities/LibMultiSense/VersionInfoUtility/version_info_utility.py b/source/Utilities/LibMultiSense/VersionInfoUtility/version_info_utility.py index e822d57b..bb237d8d 100755 --- a/source/Utilities/LibMultiSense/VersionInfoUtility/version_info_utility.py +++ b/source/Utilities/LibMultiSense/VersionInfoUtility/version_info_utility.py @@ -56,7 +56,7 @@ def main(args): print("Hardware version : ", hex(info.version.hardware_version)) if __name__ == '__main__': - parser = argparse.ArgumentParser("LibMultiSense save image utility") + parser = argparse.ArgumentParser("LibMultiSense version info utility") parser.add_argument("-a", "--ip_address", default="10.66.171.21", help="The IPv4 address of the MultiSense.") parser.add_argument("-m", "--mtu", type=int, default=1500, help="The MTU to use to communicate with the camera.") main(parser.parse_args()) From 19b421dbbd7f41cee64d98cfc8f986ec5e99f0ca Mon Sep 17 00:00:00 2001 From: Douglas Balish Date: Fri, 10 Oct 2025 16:52:06 -0400 Subject: [PATCH 4/4] require at least one image stream selected in python saveimageutil --- .../LibMultiSense/SaveImageUtility/save_image_utility.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/Utilities/LibMultiSense/SaveImageUtility/save_image_utility.py b/source/Utilities/LibMultiSense/SaveImageUtility/save_image_utility.py index bf5368b6..6ac8ac6b 100755 --- a/source/Utilities/LibMultiSense/SaveImageUtility/save_image_utility.py +++ b/source/Utilities/LibMultiSense/SaveImageUtility/save_image_utility.py @@ -133,7 +133,8 @@ def main(args): parser.add_argument("-a", "--ip_address", default="10.66.171.21", help="The IPv4 address of the MultiSense.") parser.add_argument("-m", "--mtu", type=int, default=1500, help="The MTU to use to communicate with the camera.") parser.add_argument("-n", "--number-of-images", type=int, default=1, help="The number of images to save.") - parser.add_argument("-d", "--save-depth", action='store_true', help="Save a 16 bit depth image.") - parser.add_argument("-l", "--save-left-rect", action='store_true', help="Save a left rectified image.") - parser.add_argument("-c", "--save-color", action='store_true', help="Save a color image.") + streams_group = parser.add_mutually_exclusive_group(required=True) + streams_group.add_argument("-d", "--save-depth", action='store_true', help="Save a 16 bit depth image.") + streams_group.add_argument("-l", "--save-left-rect", action='store_true', help="Save a left rectified image.") + streams_group.add_argument("-c", "--save-color", action='store_true', help="Save a color image.") main(parser.parse_args())