Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
041393ff61
@ -19,6 +19,9 @@ class HikrobotSmartCamera(Component):
|
||||
self.simulate = "--sim-camera" in sys.argv
|
||||
self.num_cameras=1
|
||||
self.connected = False
|
||||
self.ok_memory = True
|
||||
self.ok_frames = []
|
||||
self.ok_results =[]
|
||||
|
||||
def config_changed(self):
|
||||
self.connected = False
|
||||
@ -99,14 +102,21 @@ class HikrobotSmartCamera(Component):
|
||||
for cam_idx in range(self.num_cameras):
|
||||
cam = self.cam_list[cam_idx]
|
||||
self.log.info(f"GET FRAME CAMERA # {cam_idx}")
|
||||
|
||||
if self.ok_results[cam_idx]:
|
||||
# keep last good result
|
||||
frame = self.ok_frames[cam_idx]
|
||||
res = False
|
||||
else:
|
||||
# Trigger acquisition & test execution
|
||||
nRet = mv_lib.MV_VS_SetCommandValue(cam["handle"], b"AcquisitionStart")
|
||||
if nRet != MV_VS_OK:
|
||||
self.log.error(f"CAM{cam_idx} AcquisitionStart failed! [{nRet&0xFFFFFFFF:#x}]")
|
||||
self.connected = False
|
||||
frame_res = None
|
||||
else:
|
||||
# get frame
|
||||
frame_res = MV_VS_GetFrame(cam["handle"])
|
||||
|
||||
if frame_res is not None:
|
||||
res = frame_res["res"]["ScDeviceSolutionRunningResult"]
|
||||
frame = frame_res["frame"]
|
||||
@ -117,21 +127,28 @@ class HikrobotSmartCamera(Component):
|
||||
frame = cv2.rotate(frame, cv2.ROTATE_90_COUNTERCLOCKWISE)
|
||||
if rot[cam_idx] == "3":
|
||||
frame = cv2.rotate(frame, cv2.ROTATE_180)
|
||||
|
||||
else:
|
||||
self.connected = False
|
||||
if concat_frame is None:
|
||||
concat_frame = copy.deepcopy(frame)
|
||||
else:
|
||||
concat_frame = cv2.hconcat([concat_frame, frame])
|
||||
concat_results.append(not res)
|
||||
else:
|
||||
self.connected = False
|
||||
super()._get([concat_frame, concat_results])
|
||||
if not res:
|
||||
self.ok_results[cam_idx] = True
|
||||
self.ok_frames[cam_idx] = copy.deepcopy(frame)
|
||||
|
||||
super()._get([concat_frame, self.ok_results])
|
||||
|
||||
def resume(self):
|
||||
self.log.info(f"RESUMING")
|
||||
if not self.connected:
|
||||
self.config_changed()
|
||||
if self.connected:
|
||||
# init OK result memory
|
||||
self.ok_frames = [None for n in range(self.num_cameras)]
|
||||
self.ok_results = [False for n in range(self.num_cameras)]
|
||||
|
||||
if len(self.cam_list) == self.num_cameras:
|
||||
# Dummy acquisition for each camera to avoid reading past images
|
||||
for cam_idx in range(self.num_cameras):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user