bsw215583320
2025-04-16 fba9ef8743b9c91a02cb822f5d441583bc3deba6
identifier.py
@@ -21,7 +21,7 @@
        self.get_output_details()
    def idengify(self, image):
        input_tensor, ratio = self.prepare_input(image)
        input_tensor = self.prepare_input(image)
        # Perform inference on the image
        outputs = self.inference(input_tensor)
@@ -36,14 +36,16 @@
        input_img = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        # Resize图片不要直接使用resize,需要按比例缩放,空白区域填空纯色即可
        input_img, ratio = self.ratioresize(input_img)
        # input_img = self.ratioresize(input_img)
        # 启用中心裁剪
        input_img = self.center_crop(input_img)
        # Scale input pixel values to 0 to 1
        input_img = input_img / 255.0
        input_img = input_img.transpose(2, 0, 1)
        input_tensor = input_img[np.newaxis, :, :, :].astype(np.float32)
        return input_tensor, ratio
        return input_tensor
    def inference(self, input_tensor):
        start = time.perf_counter()
@@ -83,6 +85,21 @@
        padded_img[: new_unpad[1], : new_unpad[0]] = im
        padded_img = np.ascontiguousarray(padded_img)
        return padded_img, 1 / r
        return padded_img
    def center_crop(self, img):
        # 新增中心裁剪方法
        h, w = img.shape[:2]
        desired_h = self.input_height
        desired_w = self.input_width
        # 如果图片尺寸大于目标尺寸,则进行中心裁剪
        if h > desired_h and w > desired_w:
            start_y = (h - desired_h) // 2
            start_x = (w - desired_w) // 2
            end_y = start_y + desired_h
            end_x = start_x + desired_w
            return img[start_y:end_y, start_x:end_x]
        else:
            # 否则进行缩放
            return self.ratioresize(img)