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.simulate = "--sim-camera" in sys.argv
|
||||||
self.num_cameras=1
|
self.num_cameras=1
|
||||||
self.connected = False
|
self.connected = False
|
||||||
|
self.ok_memory = True
|
||||||
|
self.ok_frames = []
|
||||||
|
self.ok_results =[]
|
||||||
|
|
||||||
def config_changed(self):
|
def config_changed(self):
|
||||||
self.connected = False
|
self.connected = False
|
||||||
@ -99,39 +102,53 @@ class HikrobotSmartCamera(Component):
|
|||||||
for cam_idx in range(self.num_cameras):
|
for cam_idx in range(self.num_cameras):
|
||||||
cam = self.cam_list[cam_idx]
|
cam = self.cam_list[cam_idx]
|
||||||
self.log.info(f"GET FRAME CAMERA # {cam_idx}")
|
self.log.info(f"GET FRAME CAMERA # {cam_idx}")
|
||||||
|
if self.ok_results[cam_idx]:
|
||||||
# Trigger acquisition & test execution
|
# keep last good result
|
||||||
nRet = mv_lib.MV_VS_SetCommandValue(cam["handle"], b"AcquisitionStart")
|
frame = self.ok_frames[cam_idx]
|
||||||
if nRet != MV_VS_OK:
|
res = False
|
||||||
self.log.error(f"CAM{cam_idx} AcquisitionStart failed! [{nRet&0xFFFFFFFF:#x}]")
|
|
||||||
self.connected = False
|
|
||||||
# get frame
|
|
||||||
frame_res = MV_VS_GetFrame(cam["handle"])
|
|
||||||
if frame_res is not None:
|
|
||||||
res = frame_res["res"]["ScDeviceSolutionRunningResult"]
|
|
||||||
frame = frame_res["frame"]
|
|
||||||
# rotate frame
|
|
||||||
if rot[cam_idx] == "1":
|
|
||||||
frame = cv2.rotate(frame, cv2.ROTATE_90_CLOCKWISE)
|
|
||||||
if rot[cam_idx] == "2":
|
|
||||||
frame = cv2.rotate(frame, cv2.ROTATE_90_COUNTERCLOCKWISE)
|
|
||||||
if rot[cam_idx] == "3":
|
|
||||||
frame = cv2.rotate(frame, cv2.ROTATE_180)
|
|
||||||
|
|
||||||
if concat_frame is None:
|
|
||||||
concat_frame = copy.deepcopy(frame)
|
|
||||||
else:
|
|
||||||
concat_frame = cv2.hconcat([concat_frame, frame])
|
|
||||||
concat_results.append(not res)
|
|
||||||
else:
|
else:
|
||||||
self.connected = False
|
# Trigger acquisition & test execution
|
||||||
super()._get([concat_frame, concat_results])
|
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"]
|
||||||
|
# rotate frame
|
||||||
|
if rot[cam_idx] == "1":
|
||||||
|
frame = cv2.rotate(frame, cv2.ROTATE_90_CLOCKWISE)
|
||||||
|
if rot[cam_idx] == "2":
|
||||||
|
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)
|
||||||
|
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):
|
def resume(self):
|
||||||
self.log.info(f"RESUMING")
|
self.log.info(f"RESUMING")
|
||||||
if not self.connected:
|
if not self.connected:
|
||||||
self.config_changed()
|
self.config_changed()
|
||||||
if self.connected:
|
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:
|
if len(self.cam_list) == self.num_cameras:
|
||||||
# Dummy acquisition for each camera to avoid reading past images
|
# Dummy acquisition for each camera to avoid reading past images
|
||||||
for cam_idx in range(self.num_cameras):
|
for cam_idx in range(self.num_cameras):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user