added cli commands to show and save an image

This commit is contained in:
2020-07-01 14:19:14 +02:00
parent 3431a2602f
commit 8d0603139b

View File

@ -2,12 +2,14 @@
import argparse import argparse
from time import sleep from time import sleep
import numpy as np
from matplotlib import pyplot as plt
from cameras.cameraclient import CameraClient from cameras.cameraclient import CameraClient
def main(): def main():
commands = ["restart", "roi", "status", "test"] commands = ["restart", "roi", "status", "test", "show", "save"]
commands.sort() commands.sort()
printable_commands = ", ".join(commands) printable_commands = ", ".join(commands)
@ -20,6 +22,8 @@ def main():
subparser_roi = subparsers.add_parser("roi", description="Set ROI") subparser_roi = subparsers.add_parser("roi", description="Set ROI")
subparser_status = subparsers.add_parser("status", description="Print status") subparser_status = subparsers.add_parser("status", description="Print status")
subparser_test = subparsers.add_parser("test", description="Test setting ROIs") subparser_test = subparsers.add_parser("test", description="Test setting ROIs")
subparser_show = subparsers.add_parser("show", description="Show current image")
subparser_save = subparsers.add_parser("save", description="Save current image")
for sp in subparsers.choices.values(): for sp in subparsers.choices.values():
sp.add_argument("-v", "--verbose", help="verbose output", action="store_true") sp.add_argument("-v", "--verbose", help="verbose output", action="store_true")
@ -31,6 +35,8 @@ def main():
subparser_roi.add_argument("ymin", type=int, help="y min") subparser_roi.add_argument("ymin", type=int, help="y min")
subparser_roi.add_argument("ymax", type=int, help="y max") subparser_roi.add_argument("ymax", type=int, help="y max")
subparser_save.add_argument("filename", help="Output filename")
clargs = parser.parse_args() clargs = parser.parse_args()
command = clargs.command command = clargs.command
if command is None: if command is None:
@ -52,6 +58,10 @@ def main():
do_test(camera, clargs) do_test(camera, clargs)
elif command == "status": elif command == "status":
do_status(camera, clargs) do_status(camera, clargs)
elif command == "show":
do_show(camera, clargs)
elif command == "save":
do_save(camera, clargs)
else: else:
print(f"nothing assigned to command: {command}") print(f"nothing assigned to command: {command}")
parser.print_help() parser.print_help()
@ -81,6 +91,53 @@ def do_test(camera, _clargs):
camera.set_roi(i, 1500, i, 1900, debug=True) camera.set_roi(i, 1500, i, 1900, debug=True)
def do_show(camera, _clargs):
img = camera.get()
proj_x = img.sum(axis=1)
proj_y = img.sum(axis=0)
fig = plt.figure()
# ax_px = fig.add_subplot(222)
# ax_py = fig.add_subplot(223)
# ax_img = fig.add_subplot(221, sharex = ax_px, sharey = ax_py)
left, width = bottom, height = 0.1, 0.65
spacing = 0.005
rect_img = [left, bottom, width, height]
rect_px = [left, bottom + height + spacing, width, 0.2]
rect_py = [left + width + spacing, bottom, 0.2, height]
ax_img = plt.axes(rect_img)
ax_px = plt.axes(rect_px)
ax_py = plt.axes(rect_py)
ax_img.tick_params(direction='in', top=True, right=True)
ax_px.tick_params(direction='in', labelbottom=False)
ax_py.tick_params(direction='in', labelleft=False)
ax_img.imshow(img.T, origin="lower", interpolation="none")
ax_px.plot(proj_x)
ax_py.plot(proj_y, range(len(proj_y)))
# aspx = np.diff(ax_px.get_xlim())[0] / np.diff(ax_px.get_ylim())[0]
# ax_px.set_aspect(aspx)
# aspy = np.diff(ax_py.get_xlim())[0] / np.diff(ax_py.get_ylim())[0]
# ax_py.set_aspect(aspy)
plt.show()
def do_save(camera, clargs):
ext = ".npy"
filename = clargs.filename
filename = filename if filename.endswith(ext) else filename + ext
img = camera.get()
img.dump(filename)
@ -92,7 +149,7 @@ if __name__ == "__main__":
#Aborted (core dumped) #Aborted (core dumped)
# "solved" by # "solved" by
sleep(0.0001) sleep(0.001)