diff --git a/face_rec.py b/face_rec.py index 6f208a2..7dbfbfa 100644 --- a/face_rec.py +++ b/face_rec.py @@ -160,7 +160,7 @@ class FaceRecognitionSystem: self.screen_height = screen.height self.logger.info(f"屏幕尺寸已缓存: {self.screen_width}x{self.screen_height}") except Exception as e: - self.logger.debug(f"无法获取屏幕尺寸,使用默认尺寸: {e}") + self.logger.warning(f"无法获取屏幕尺寸,使用默认尺寸 1920x1080: {e}") def _force_cleanup_ffmpeg(self): """强制清理所有FFmpeg相关资源 - 防止多进程推流""" @@ -689,17 +689,19 @@ class FaceRecognitionSystem: self.logger.error(f"无法读取二维码图片: {self.qrcode_image_path}") return False + # 获取二维码图片尺寸 + qr_height, qr_width = qr_image.shape[:2] + + # 使用屏幕缓存尺寸,如果获取失败则使用图片尺寸 + canvas_width = self.screen_width if self.screen_width > 0 else qr_width + canvas_height = self.screen_height if self.screen_height > 0 else qr_height + # 创建二维码窗口 cv2.namedWindow(self.qrcode_window_name, cv2.WINDOW_NORMAL | cv2.WINDOW_GUI_NORMAL) - # 使用缓存的屏幕尺寸 - canvas_width = self.screen_width - canvas_height = self.screen_height x_pos = 0 y_pos = 0 - qr_height, qr_width = qr_image.shape[:2] - rendered = self._build_qrcode_instruction_canvas(qr_image, (canvas_width, canvas_height)) if rendered is None: # 回退到原二维码展示 @@ -710,14 +712,13 @@ class FaceRecognitionSystem: new_height = int(qr_height * scale) resized_qr = cv2.resize(qr_image, (new_width, new_height), interpolation=cv2.INTER_LINEAR) - # 创建黑色背景画布,完全填充屏幕 + # 创建背景画布 rendered = np.zeros((canvas_height, canvas_width, 3), dtype=np.uint8) # 计算居中位置 x_offset = (canvas_width - new_width) // 2 y_offset = (canvas_height - new_height) // 2 - # 将二维码放在中央 rendered[y_offset:y_offset+new_height, x_offset:x_offset+new_width] = resized_qr cv2.resizeWindow(self.qrcode_window_name, canvas_width, canvas_height)