added cli commands to show and save an image
This commit is contained in:
61
clicamesh.py
61
clicamesh.py
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user