def test_match_template(): image1 = toolbox.imread(IMAGE_PATH) image2 = toolbox.imread(IMAGE_PATH) ret = toolbox.match_template_with_object(image1, image2) assert ret["ok"] ret = toolbox.match_template_with_path(IMAGE_PATH, image2) assert ret["ok"]
def contain_image(self, image_path: str = None, image_object: np.ndarray = None, threshold: float = None, *args, **kwargs): assert image_path or image_object, 'should fill image_path or image_object' if not threshold: threshold = 0.99 if image_path: logger.debug(f'found image path, use it first: {image_path}') assert os.path.isfile( image_path), f'image {image_path} not existed' image_object = toolbox.imread(image_path) image_object = toolbox.turn_grey(image_object) # TODO use client or itself..? fi = FindIt(engine=['template']) fi_template_name = 'default' fi.load_template(fi_template_name, pic_object=image_object) with toolbox.video_capture(self.video.path) as cap: target_id = self.pick(*args, **kwargs)[0] frame = toolbox.get_frame(cap, target_id) frame = toolbox.turn_grey(frame) result = fi.find(str(target_id), target_pic_object=frame) find_result = result['data'][fi_template_name]['TemplateEngine'] position = find_result['target_point'] sim = find_result['target_sim'] logger.debug(f'position: {position}, sim: {sim}') return sim > threshold
def contain_image(self, image_path: str = None, image_object: np.ndarray = None, *args, **kwargs) -> typing.Dict: assert image_path or image_object, "should fill image_path or image_object" if image_path: logger.debug(f"found image path, use it first: {image_path}") assert os.path.isfile( image_path), f"image {image_path} not existed" image_object = toolbox.imread(image_path) image_object = toolbox.turn_grey(image_object) # TODO use client or itself..? fi = FindIt(engine=["template"]) fi_template_name = "default" fi.load_template(fi_template_name, pic_object=image_object) target_id = self.pick(*args, **kwargs)[0] operator = self.video.get_operator() frame = operator.get_frame_by_id(target_id) result = fi.find(str(target_id), target_pic_object=frame.data) return result["data"][fi_template_name]["TemplateEngine"]
def test_keep_data(): cl = SVMClassifier() cl.load_model(MODEL_PATH) stable, _ = cutter_res.get_range() classify_result = cl.classify(VIDEO_PATH, stable, keep_data=True) # todo findit bug here image_object = toolbox.imread(IMAGE_PATH)[0:20, 0:20] assert classify_result.data[0].contain_image(image_object=image_object)
def predict(self, pic_path: str) -> str: """ predict a single picture :param pic_path: :return: """ pic_object = toolbox.imread(pic_path) return self.predict_with_object(pic_object)
def predict(self, pic_path: str, *args, **kwargs) -> str: """ predict a single picture :param pic_path: :return: """ pic_object = toolbox.imread(pic_path) # fake VideoFrame for apply_hook fake_frame = VideoFrame(0, 0.0, pic_object) fake_frame = self._apply_hook(fake_frame, *args, **kwargs) return self.predict_with_object(fake_frame.data)
def test_compress(): image = toolbox.imread(IMAGE_PATH) frame = toolbox.compress_frame(image, target_size=(100, 100)) assert frame.shape == (100, 100)
def test_turn_lbp_desc(): image = toolbox.imread(IMAGE_PATH) toolbox.turn_lbp_desc(image)
def test_turn_binary(): image = toolbox.imread(IMAGE_PATH) toolbox.turn_binary(image)
def test_turn_blur(): image = toolbox.imread(IMAGE_PATH) grey = toolbox.turn_grey(image) toolbox.turn_blur(grey)
def read_from_path(data: typing.List[pathlib.Path], *_, **__): return (toolbox.imread(each.as_posix()) for each in data)