123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- """
- 通用处理工具,字符串切分
- """
- from pathlib import Path
- import cv2
- def divide_string(s, num_parts):
- """
- 切割字符串为指定均分的部分
- :param s: 待切割的字符串
- :param num_parts: 切割份数
- :return: 切分结果
- """
- n = len(s)
- part_size = n // num_parts
- sizes = [part_size + 1 if i < n % num_parts else part_size for i in range(num_parts)]
- parts = []
- start = 0
- for size in sizes:
- parts.append(s[start:start + size])
- start += size
- return parts
- def find_relative_directories(root_dir, target_dir):
- """
- 查找指定目录下的目标目录相对路径
- :param root_dir: 根目录
- :param target_dir: 目标目录
- :return: 根目录到目标目录的相对路径
- """
- root_path = Path(root_dir)
- yolox_paths = []
- # 递归查找指定目录
- for path in root_path.rglob(target_dir):
- if path.is_dir():
- # 计算相对路径
- relative_path = path.relative_to(root_path)
- yolox_paths.append(relative_path)
- return yolox_paths
- def detect_and_decode_qr_code(img_path):
- """
- 从图片中提取二维码中的内容
- :param img_path: 待提取二维码内容的图片地址
- :return: 提取信息
- """
- image = cv2.imread(img_path)
- # Initialize the QRCode detector
- qr_code_detector = cv2.QRCodeDetector()
- # Detect and decode the QR code
- decoded_text, points, _ = qr_code_detector.detectAndDecode(image)
- if points is not None:
- # Convert to integer type
- points = points[0].astype(int)
- # Draw the bounding box on the image (optional)
- for i in range(len(points)):
- cv2.line(image, tuple(points[i]), tuple(points[(i + 1) % len(points)]), (255, 0, 0), 2)
- return decoded_text, points
- else:
- return None, None
- def get_file_extension(filename):
- """
- 获取文件扩展名
- :param filename: 文件名
- :return: 扩展名
- """
- return filename.rsplit('.', 1)[1].lower()
|