整体修改

物流展会算法
LAPTOP-S9HJSOEB\昊天 1 week ago
parent 45e125266a
commit 92380171e4

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

@ -0,0 +1,332 @@
import os
import random
import math
import numpy as np
from PIL import Image, ImageDraw, ImageFilter, ImageEnhance
from qrcode import QRCode
import qrcode.constants
import cv2
def generate_random_gradient(size=(2048, 2048)):
"""生成随机渐变背景"""
width, height = size
# 随机选择两个颜色
color1 = [random.randint(0, 255) for _ in range(3)]
color2 = [random.randint(0, 255) for _ in range(3)]
# 使用 NumPy 生成渐变数组(更高效)
gradient = np.linspace(color1, color2, height, dtype=np.uint8)
gradient = np.tile(gradient, (width, 1, 1))
gradient = np.transpose(gradient, (1, 0, 2))
# 转换为 PIL Image
img = Image.fromarray(gradient)
return img
def generate_qr_code(size=(200, 200)):
"""生成二维码(透明背景)"""
qr = QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
# 随机生成数据
data = ''.join([str(random.randint(0, 9)) for _ in range(50)])
qr.add_data(data)
qr.make(fit=True)
# 转换为 PIL Image先生成白色背景
img = qr.make_image(fill_color="black", back_color="white")
# 转换为 RGBA
img = img.convert('RGBA')
# 将白色背景转为透明
datas = img.getdata()
new_data = []
for item in datas:
# 如果是白色(接近白色),则设为透明
if item[0] > 230 and item[1] > 230 and item[2] > 230:
new_data.append((255, 255, 255, 0))
else:
new_data.append(item)
img.putdata(new_data)
# 调整大小
img = img.resize(size, Image.Resampling.LANCZOS)
return img
def transform_qr_code(qr_img):
"""对二维码进行随机变换(亮度、清晰度)"""
# 确保图片是 RGBA 模式
if qr_img.mode != 'RGBA':
qr_img = qr_img.convert('RGBA')
# 随机亮度(只影响 RGB 通道,不影响 alpha 通道)
r, g, b, a = qr_img.split()
rgb_img = Image.merge('RGB', (r, g, b))
brightness = ImageEnhance.Brightness(rgb_img)
rgb_img = brightness.enhance(random.uniform(0.7, 1.3))
# 随机对比度
contrast = ImageEnhance.Contrast(rgb_img)
rgb_img = contrast.enhance(random.uniform(0.8, 1.2))
# 随机模糊(清晰度)
blur_radius = random.uniform(0, 1.5)
if blur_radius > 0:
rgb_img = rgb_img.filter(ImageFilter.GaussianBlur(radius=blur_radius))
# 重新合并 RGB 和 alpha 通道
qr_img = Image.merge('RGBA', rgb_img.split() + (a,))
return qr_img
def is_overlapping(x1, y1, w1, h1, x2, y2, w2, h2, margin=20):
"""检查两个矩形是否重叠(添加边距)"""
return not (x1 + w1 + margin < x2 or
x2 + w2 + margin < x1 or
y1 + h1 + margin < y2 or
y2 + h2 + margin < y1)
def calculate_bbox(img_size, x, y, width, height):
"""
计算边界框YOLO 格式
Args:
img_size: 原始图片大小 (width, height)
x, y: 二维码左上角坐标
width, height: 二维码宽高
Returns:
(x_center, y_center, bbox_width, bbox_height) - YOLO 格式的归一化坐标
"""
img_w, img_h = img_size
# 计算二维码中心
center_x = x + width / 2
center_y = y + height / 2
# 边界框就是二维码本身
bbox_width = width
bbox_height = height
# 归一化到 [0, 1]
x_norm = center_x / img_w
y_norm = center_y / img_h
w_norm = bbox_width / img_w
h_norm = bbox_height / img_h
# 确保在 [0, 1] 范围内
x_norm = max(0, min(1, x_norm))
y_norm = max(0, min(1, y_norm))
w_norm = max(0, min(1, w_norm))
h_norm = max(0, min(1, h_norm))
return x_norm, y_norm, w_norm, h_norm
def place_qr_codes(img, num_qrcodes=20):
"""
在图片上放置多个不重叠的二维码
Returns:
img: 生成的图片
annotations: 标注信息列表 [(x, y, w, h), ...]
"""
img_w, img_h = img.size
annotations = []
placed_boxes = []
for i in range(num_qrcodes):
# 随机二维码大小50-200像素
# 重点关注 50-100 范围,增加小目标样本
if random.random() < 0.7:
# 70% 概率生成 50-100 的小目标
qr_size_value = random.randint(50, 100)
else:
# 30% 概率生成 100-200 的中等目标
qr_size_value = random.randint(100, 200)
qr_size = (qr_size_value, qr_size_value)
# 生成二维码
qr_img = generate_qr_code(qr_size)
# 变换二维码(不旋转)
qr_img_transformed = transform_qr_code(qr_img)
qr_w, qr_h = qr_img_transformed.size
# 随机位置(确保二维码完全在图片内)
max_x = img_w - qr_w
max_y = img_h - qr_h
# 尝试找到不重叠的位置
max_attempts = 100
for attempt in range(max_attempts):
x = random.randint(0, max_x)
y = random.randint(0, max_y)
# 检查是否与已放置的二维码重叠
overlapping = False
for px, py, pw, ph in placed_boxes:
if is_overlapping(x, y, qr_w, qr_h, px, py, pw, ph):
overlapping = True
break
if not overlapping:
# 粘贴二维码(使用 alpha 通道作为 mask
# img 需要先转换为 RGBA 模式
if img.mode != 'RGBA':
img = img.convert('RGBA')
# 提取 alpha 通道作为 mask
alpha = qr_img_transformed.split()[-1]
img.paste(qr_img_transformed, (x, y), alpha)
# 记录放置的盒子
placed_boxes.append((x, y, qr_w, qr_h))
# 计算边界框(直接使用二维码的位置和大小)
bbox_x, bbox_y, bbox_w, bbox_h = calculate_bbox(
(img_w, img_h), x, y, qr_w, qr_h
)
annotations.append((bbox_x, bbox_y, bbox_w, bbox_h))
break
else:
print(f"Warning: Could not place QR code {i+1} without overlap")
return img, annotations
def save_annotation(label_path, annotations):
"""保存标注文件YOLO 格式)"""
with open(label_path, 'w') as f:
for x, y, w, h in annotations:
# 类别为 0二维码
f.write(f"0 {x:.6f} {y:.6f} {w:.6f} {h:.6f}\n")
def generate_dataset(output_root, num_train_images=30):
"""生成 YOLO8 二维码检测数据集"""
image_size = (2048, 2048)
# 增加每张图片的二维码数量,提高小目标检测效果
num_qrcodes_per_image = 50 # 从 20 增加到 50
num_val_images = max(1, num_train_images // 10)
# 创建文件夹
train_images_dir = os.path.join(output_root, "train", "images")
train_labels_dir = os.path.join(output_root, "train", "labels")
val_images_dir = os.path.join(output_root, "val", "images")
val_labels_dir = os.path.join(output_root, "val", "labels")
os.makedirs(train_images_dir, exist_ok=True)
os.makedirs(train_labels_dir, exist_ok=True)
os.makedirs(val_images_dir, exist_ok=True)
os.makedirs(val_labels_dir, exist_ok=True)
print(f"Generating {num_train_images} training images...")
for i in range(num_train_images):
print(f" Generating training image {i+1}/{num_train_images}")
# 生成随机渐变背景
img = generate_random_gradient(image_size)
# 放置二维码
img, annotations = place_qr_codes(img, num_qrcodes_per_image)
# 保存图片(转换为 RGBJPEG 不支持透明通道)
if img.mode == 'RGBA':
img = img.convert('RGB')
img_name = f"train_{i:04d}.jpg"
img_path = os.path.join(train_images_dir, img_name)
img.save(img_path, quality=95)
# 保存标注
label_name = f"train_{i:04d}.txt"
label_path = os.path.join(train_labels_dir, label_name)
save_annotation(label_path, annotations)
print(f"Generating {num_val_images} validation images...")
for i in range(num_val_images):
print(f" Generating validation image {i+1}/{num_val_images}")
# 生成随机渐变背景
img = generate_random_gradient(image_size)
# 放置二维码
img, annotations = place_qr_codes(img, num_qrcodes_per_image)
# 保存图片(转换为 RGBJPEG 不支持透明通道)
if img.mode == 'RGBA':
img = img.convert('RGB')
img_name = f"val_{i:04d}.jpg"
img_path = os.path.join(val_images_dir, img_name)
img.save(img_path, quality=95)
# 保存标注
label_name = f"val_{i:04d}.txt"
label_path = os.path.join(val_labels_dir, label_name)
save_annotation(label_path, annotations)
# 生成 data.yaml
yaml_content = f"""path: {os.path.abspath(output_root)}
train: train/images
val: val/images
nc: 1
names: ['qrcode']
"""
yaml_path = os.path.join(output_root, "data.yaml")
with open(yaml_path, 'w', encoding='utf-8') as f:
f.write(yaml_content)
print("\n" + "="*50)
print("Dataset generation completed!")
print("="*50)
print(f"Output directory: {output_root}")
print(f"Training images: {num_train_images}")
print(f"Validation images: {num_val_images}")
print(f"QR codes per image: {num_qrcodes_per_image}")
print(f"Image size: {image_size}")
print(f"Number of classes: 1")
print(f"Class name: qrcode")
print("="*50)
if __name__ == '__main__':
# 输出目录
output_root = r"D:\PycharmProjects\yolo\qrcode_dataset"
# 生成训练集图片数量(建议至少 100 张)
num_train_images = 100
# 生成数据集
generate_dataset(output_root, num_train_images)
print("\n" + "="*50)
print("训练建议:")
print("="*50)
print("使用 YOLOv8-p2 进行小目标检测:")
print(" yolo train data=data.yaml model=yolov8n-p2.pt epochs=200 imgsz=4096")
print("")
print("如果显存足够,可以使用 8192 输入尺寸:")
print(" yolo train data=data.yaml model=yolov8n-p2.pt epochs=200 imgsz=8192")
print("")
print("如果需要更高精度,使用 s 模型:")
print(" yolo train data=data.yaml model=yolov8s-p2.pt epochs=200 imgsz=4096")
print("="*50)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

@ -1,633 +1,7 @@
2026-04-03 09:26:54.925 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化所有Lx相机数量: 1
2026-04-03 09:26:54.930 [main] WARN [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - DLL文件已存在跳过复制: D:\git\测试\lxCameraApi\libs\plc\LxCameraApi-1.dll
2026-04-03 09:26:54.972 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化设备: SN=192.168.100.82, Type=1
2026-04-03 09:26:55.810 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 初始化成功
2026-04-03 09:26:55.810 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备详细信息:
2026-04-03 09:26:55.810 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备类型: 1005
2026-04-03 09:26:55.811 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - ID: F83B51129860
2026-04-03 09:26:55.811 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - IP: 192.168.100.82:3956
2026-04-03 09:26:55.811 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - SN: 04C8BF8A094B12F3
2026-04-03 09:26:55.811 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - MAC: fa:7e:64:c8:27:97
2026-04-03 09:26:55.811 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 固件版本: V1.1.26_231031
2026-04-03 09:26:55.811 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 算法版本: 1.1.5,20231025
2026-04-03 09:26:55.811 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备名称: camera_M4_192.168.100.82_3956
2026-04-03 09:26:56.736 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 流启动成功
2026-04-03 09:26:56.812 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 命令码设置成功5001
2026-04-03 09:26:56.813 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 初始化成功
2026-04-03 09:26:56.813 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 所有Lx相机初始化完成成功: 1
2026-04-03 09:26:57.081 [main] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageCropper] - ImageCropper 初始化完成
2026-04-03 09:27:02.241 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 09:27:02.245 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 09:27:02.247 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 09:27:02.897 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_092702.pcd, 结果: 0
2026-04-03 09:27:02.897 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_092702.pcd
2026-04-03 09:27:02.897 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 09:27:02.897 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_092702.pcd, floorHeight=null, boxSize=155.0x155.0x250.0
2026-04-03 09:27:02.898 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_092702.pcd, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:27:03.513 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 257085
2026-04-03 09:27:03.540 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 09:27:03.541 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 09:27:04.133 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 85921.0 mm², 点数: 21655
2026-04-03 09:27:04.133 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 4
2026-04-03 09:27:04.133 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 4, 用时: 1235ms
2026-04-03 09:27:04.134 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 4, 层数: 1, 最高层: 1, 用时: 1235ms
2026-04-03 09:28:03.483 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化所有Lx相机数量: 1
2026-04-03 09:28:03.485 [main] WARN [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - DLL文件已存在跳过复制: D:\git\测试\lxCameraApi\libs\plc\LxCameraApi-1.dll
2026-04-03 09:28:03.523 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化设备: SN=192.168.100.82, Type=1
2026-04-03 09:28:04.397 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 初始化成功
2026-04-03 09:28:04.398 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备详细信息:
2026-04-03 09:28:04.398 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备类型: 1005
2026-04-03 09:28:04.398 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - ID: F83B51129860
2026-04-03 09:28:04.398 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - IP: 192.168.100.82:3956
2026-04-03 09:28:04.398 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - SN: 04C8BF8A094B12F3
2026-04-03 09:28:04.398 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - MAC: fa:7e:64:c8:27:97
2026-04-03 09:28:04.398 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 固件版本: V1.1.26_231031
2026-04-03 09:28:04.398 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 算法版本: 1.1.5,20231025
2026-04-03 09:28:04.398 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备名称: camera_M4_192.168.100.82_3956
2026-04-03 09:28:05.340 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 流启动成功
2026-04-03 09:28:05.387 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 命令码设置成功5001
2026-04-03 09:28:05.387 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 初始化成功
2026-04-03 09:28:05.387 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 所有Lx相机初始化完成成功: 1
2026-04-03 09:28:05.777 [main] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageCropper] - ImageCropper 初始化完成
2026-04-03 09:28:08.531 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 09:28:08.536 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 09:28:08.539 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 09:28:09.367 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_092808.pcd, 结果: 0
2026-04-03 09:28:09.367 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_092808.pcd
2026-04-03 09:28:09.367 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 09:28:09.367 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_092808.pcd, floorHeight=null, boxSize=155.0x155.0x250.0
2026-04-03 09:28:09.367 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_092808.pcd, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:28:09.686 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 256795
2026-04-03 09:28:09.704 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 09:28:09.705 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 09:28:09.922 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 147857.0 mm², 点数: 21618
2026-04-03 09:28:09.922 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 6
2026-04-03 09:28:09.922 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 6, 用时: 555ms
2026-04-03 09:28:09.923 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 6, 层数: 1, 最高层: 1, 用时: 555ms
2026-04-03 09:32:56.454 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 09:32:56.454 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 09:32:56.456 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 09:32:57.153 [http-nio-8097-exec-3] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093256.pcd, 结果: 0
2026-04-03 09:32:57.153 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093256.pcd
2026-04-03 09:32:57.153 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 09:32:57.154 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093256.pcd, floorHeight=null, boxSize=155.0x155.0x250.0
2026-04-03 09:32:57.154 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093256.pcd, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:32:57.633 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 257637
2026-04-03 09:32:57.645 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 09:32:57.645 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 09:32:57.854 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 129026.0 mm², 点数: 18902
2026-04-03 09:32:57.855 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 5
2026-04-03 09:32:57.855 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 5, 用时: 701ms
2026-04-03 09:32:57.855 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 5, 层数: 1, 最高层: 1, 用时: 701ms
2026-04-03 09:33:07.526 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 09:33:07.526 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 09:33:07.528 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 09:33:08.278 [http-nio-8097-exec-4] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093307.pcd, 结果: 0
2026-04-03 09:33:08.279 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093307.pcd
2026-04-03 09:33:08.279 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 09:33:08.279 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093307.pcd, floorHeight=null, boxSize=155.0x155.0x250.0
2026-04-03 09:33:08.279 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093307.pcd, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:33:08.766 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 258226
2026-04-03 09:33:08.780 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 09:33:08.781 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 09:33:09.016 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 129699.0 mm², 点数: 18925
2026-04-03 09:33:09.016 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 5
2026-04-03 09:33:09.018 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 5, 用时: 739ms
2026-04-03 09:33:09.019 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 5, 层数: 1, 最高层: 1, 用时: 739ms
2026-04-03 09:36:22.834 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 09:36:22.834 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 09:36:22.836 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 09:36:23.263 [http-nio-8097-exec-6] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093622.pcd, 结果: 0
2026-04-03 09:36:23.264 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093622.pcd
2026-04-03 09:36:23.264 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 09:36:23.264 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093622.pcd, floorHeight=null, boxSize=155.0x155.0x250.0
2026-04-03 09:36:23.264 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093622.pcd, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:36:23.527 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 257168
2026-04-03 09:36:23.534 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 09:36:23.534 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 09:36:23.662 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 146661.0 mm², 点数: 21757
2026-04-03 09:38:19.703 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 6
2026-04-03 09:38:19.703 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 6, 用时: 116439ms
2026-04-03 09:38:19.703 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 6, 层数: 1, 最高层: 1, 用时: 116439ms
2026-04-03 09:38:33.777 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 09:38:33.779 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 09:38:33.782 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 09:38:34.611 [http-nio-8097-exec-8] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093833.pcd, 结果: 0
2026-04-03 09:38:34.612 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093833.pcd
2026-04-03 09:38:34.612 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 09:38:34.612 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093833.pcd, floorHeight=null, boxSize=140.0x140.0x250.0
2026-04-03 09:38:34.613 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_093833.pcd, floorHeight=null, boxLength=140.0, boxWidth=140.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:38:35.131 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 256818
2026-04-03 09:38:35.143 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 09:38:35.144 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 09:38:35.369 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 147223.0 mm², 点数: 21793
2026-04-03 09:38:39.818 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 8
2026-04-03 09:38:39.819 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 8, 用时: 5206ms
2026-04-03 09:38:39.819 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 5206ms
2026-04-03 09:40:07.685 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 09:40:07.685 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 09:40:07.685 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 09:40:08.101 [http-nio-8097-exec-9] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094007.pcd, 结果: 0
2026-04-03 09:40:08.101 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094007.pcd
2026-04-03 09:40:08.101 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 09:40:08.101 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094007.pcd, floorHeight=null, boxSize=140.0x140.0x250.0
2026-04-03 09:40:08.101 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094007.pcd, floorHeight=null, boxLength=140.0, boxWidth=140.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:40:08.373 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 257626
2026-04-03 09:40:08.381 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 09:40:08.381 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 09:40:08.486 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 128367.0 mm², 点数: 18791
2026-04-03 09:40:16.235 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 7
2026-04-03 09:40:16.235 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 7, 用时: 8134ms
2026-04-03 09:40:16.235 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 7, 层数: 1, 最高层: 1, 用时: 8134ms
2026-04-03 09:41:01.298 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化所有Lx相机数量: 1
2026-04-03 09:41:01.300 [main] WARN [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - DLL文件已存在跳过复制: D:\git\测试\lxCameraApi\libs\plc\LxCameraApi-1.dll
2026-04-03 09:41:01.339 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化设备: SN=192.168.100.82, Type=1
2026-04-03 09:41:02.138 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 初始化成功
2026-04-03 09:41:02.138 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备详细信息:
2026-04-03 09:41:02.138 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备类型: 1005
2026-04-03 09:41:02.139 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - ID: F83B51129860
2026-04-03 09:41:02.139 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - IP: 192.168.100.82:3956
2026-04-03 09:41:02.139 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - SN: 04C8BF8A094B12F3
2026-04-03 09:41:02.139 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - MAC: fa:7e:64:c8:27:97
2026-04-03 09:41:02.139 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 固件版本: V1.1.26_231031
2026-04-03 09:41:02.139 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 算法版本: 1.1.5,20231025
2026-04-03 09:41:02.139 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备名称: camera_M4_192.168.100.82_3956
2026-04-03 09:41:03.053 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 流启动成功
2026-04-03 09:41:03.147 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 命令码设置成功5001
2026-04-03 09:41:03.147 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 初始化成功
2026-04-03 09:41:03.147 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 所有Lx相机初始化完成成功: 1
2026-04-03 09:41:03.387 [main] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageCropper] - ImageCropper 初始化完成
2026-04-03 09:41:08.029 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 09:41:08.032 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 09:41:08.034 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 09:41:08.473 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094108.pcd, 结果: 0
2026-04-03 09:41:08.474 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094108.pcd
2026-04-03 09:41:08.474 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 09:41:08.474 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094108.pcd, floorHeight=null, boxSize=140.0x140.0x250.0
2026-04-03 09:41:08.474 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094108.pcd, floorHeight=null, boxLength=140.0, boxWidth=140.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:41:08.800 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 257765
2026-04-03 09:41:08.816 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 09:41:08.816 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 09:41:09.052 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 128270.0 mm², 点数: 18792 比例6.544387755102041
2026-04-03 09:41:09.052 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 7
2026-04-03 09:41:09.052 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 7, 用时: 578ms
2026-04-03 09:41:09.053 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 7, 层数: 1, 最高层: 1, 用时: 578ms
2026-04-03 09:41:35.289 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 09:41:35.289 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 09:41:35.290 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 09:41:35.706 [http-nio-8097-exec-2] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094135.pcd, 结果: 0
2026-04-03 09:41:35.706 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094135.pcd
2026-04-03 09:41:35.706 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 09:41:35.706 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094135.pcd, floorHeight=null, boxSize=137.0x137.0x250.0
2026-04-03 09:41:35.707 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094135.pcd, floorHeight=null, boxLength=137.0, boxWidth=137.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:41:35.985 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 257920
2026-04-03 09:41:35.993 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 09:41:35.993 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 09:41:36.099 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 128398.0 mm², 点数: 18795 比例6.840961159358517
2026-04-03 09:41:36.099 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 7
2026-04-03 09:41:36.100 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 7, 用时: 393ms
2026-04-03 09:41:36.100 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 7, 层数: 1, 最高层: 1, 用时: 393ms
2026-04-03 09:44:55.070 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 09:44:55.071 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 09:44:55.071 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 09:44:55.500 [http-nio-8097-exec-4] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094455.pcd, 结果: 0
2026-04-03 09:44:55.501 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094455.pcd
2026-04-03 09:44:55.501 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 09:44:55.501 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094455.pcd, floorHeight=null, boxSize=137.0x137.0x250.0
2026-04-03 09:44:55.501 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_094455.pcd, floorHeight=null, boxLength=137.0, boxWidth=137.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:44:55.815 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 256852
2026-04-03 09:44:55.825 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 09:44:55.825 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 09:44:55.887 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 17633.0 mm², 点数: 2280 比例0.9394746656721189
2026-04-03 09:44:55.887 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 1
2026-04-03 09:44:55.887 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 1, 用时: 386ms
2026-04-03 09:44:55.887 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 1, 层数: 1, 最高层: 1, 用时: 386ms
2026-04-03 10:05:47.902 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:05:47.902 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:05:47.904 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:05:48.306 [http-nio-8097-exec-6] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100547.pcd, 结果: 0
2026-04-03 10:05:48.306 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100547.pcd
2026-04-03 10:05:48.306 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 10:05:48.306 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100547.pcd, floorHeight=null, boxSize=137.0x137.0x250.0
2026-04-03 10:05:48.306 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100547.pcd, floorHeight=null, boxLength=137.0, boxWidth=137.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:05:48.567 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 257011
2026-04-03 10:05:48.576 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 10:05:48.576 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:05:48.640 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 17526.0 mm², 点数: 2276 比例0.9337737759070808
2026-04-03 10:05:48.640 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 1
2026-04-03 10:05:48.640 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 1, 用时: 334ms
2026-04-03 10:05:48.640 [http-nio-8097-exec-6] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 1, 层数: 1, 最高层: 1, 用时: 334ms
2026-04-03 10:06:09.198 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:06:09.198 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:06:09.199 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:06:09.611 [http-nio-8097-exec-7] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100609.pcd, 结果: 0
2026-04-03 10:06:09.612 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100609.pcd
2026-04-03 10:06:09.612 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 10:06:09.612 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100609.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:06:09.612 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100609.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:06:09.873 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 256607
2026-04-03 10:06:09.881 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 10:06:09.882 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:06:09.943 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 17479.0 mm², 点数: 2276 比例0.9590672153635117
2026-04-03 10:06:09.943 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 1
2026-04-03 10:06:09.943 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 1, 用时: 331ms
2026-04-03 10:06:09.943 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 1, 层数: 1, 最高层: 1, 用时: 331ms
2026-04-03 10:06:51.382 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:06:51.382 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:06:51.384 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:06:51.781 [http-nio-8097-exec-8] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100651.pcd, 结果: 0
2026-04-03 10:06:51.781 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100651.pcd
2026-04-03 10:06:51.781 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 10:06:51.781 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100651.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:06:51.781 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100651.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:06:52.049 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 255430
2026-04-03 10:06:52.054 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 10:06:52.054 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:06:52.129 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 51341.0 mm², 点数: 6990 比例2.8170644718792865
2026-04-03 10:06:52.129 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 3
2026-04-03 10:06:52.129 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 3, 用时: 348ms
2026-04-03 10:06:52.129 [http-nio-8097-exec-8] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 3, 层数: 1, 最高层: 1, 用时: 348ms
2026-04-03 10:07:27.330 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:07:27.330 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:07:27.331 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:07:27.748 [http-nio-8097-exec-9] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100727.pcd, 结果: 0
2026-04-03 10:07:27.748 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100727.pcd
2026-04-03 10:07:27.748 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 10:07:27.748 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100727.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:07:27.748 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100727.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:07:28.009 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 253881
2026-04-03 10:07:28.017 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 10:07:28.017 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:07:28.126 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 144606.0 mm², 点数: 21063 比例7.934485596707819
2026-04-03 10:07:28.127 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 8
2026-04-03 10:07:28.127 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 8, 用时: 379ms
2026-04-03 10:07:28.127 [http-nio-8097-exec-9] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 379ms
2026-04-03 10:07:49.418 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:07:49.418 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:07:49.420 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:07:49.827 [http-nio-8097-exec-10] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100749.pcd, 结果: 0
2026-04-03 10:07:49.828 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100749.pcd
2026-04-03 10:07:49.828 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 10:07:49.828 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100749.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:07:49.828 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100749.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:07:50.084 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 245998
2026-04-03 10:07:50.092 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 10:07:50.093 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:07:50.191 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 99428.0 mm², 点数: 14297 比例5.455582990397805
2026-04-03 10:07:50.191 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 5
2026-04-03 10:07:50.191 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 5, 用时: 363ms
2026-04-03 10:07:50.191 [http-nio-8097-exec-10] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 5, 层数: 1, 最高层: 1, 用时: 363ms
2026-04-03 10:09:30.253 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化所有Lx相机数量: 1
2026-04-03 10:09:30.255 [main] WARN [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - DLL文件已存在跳过复制: D:\git\测试\lxCameraApi\libs\plc\LxCameraApi-1.dll
2026-04-03 10:09:30.291 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化设备: SN=192.168.100.82, Type=1
2026-04-03 10:09:31.110 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 初始化成功
2026-04-03 10:09:31.110 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备详细信息:
2026-04-03 10:09:31.110 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备类型: 1005
2026-04-03 10:09:31.110 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - ID: F83B51129860
2026-04-03 10:09:31.110 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - IP: 192.168.100.82:3956
2026-04-03 10:09:31.110 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - SN: 04C8BF8A094B12F3
2026-04-03 10:09:31.110 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - MAC: fa:7e:64:c8:27:97
2026-04-03 10:09:31.110 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 固件版本: V1.1.26_231031
2026-04-03 10:09:31.110 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 算法版本: 1.1.5,20231025
2026-04-03 10:09:31.110 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备名称: camera_M4_192.168.100.82_3956
2026-04-03 10:09:32.039 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 流启动成功
2026-04-03 10:09:32.102 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 命令码设置成功5001
2026-04-03 10:09:32.102 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 初始化成功
2026-04-03 10:09:32.102 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 所有Lx相机初始化完成成功: 1
2026-04-03 10:09:32.330 [main] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageCropper] - ImageCropper 初始化完成
2026-04-03 10:09:53.976 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:09:53.981 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:09:53.983 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:09:54.425 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100953.pcd, 结果: 0
2026-04-03 10:09:54.425 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100953.pcd
2026-04-03 10:09:54.425 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 10:09:54.425 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100953.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:09:54.426 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_100953.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:09:54.803 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 246751
2026-04-03 10:09:54.817 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 10:09:54.817 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:09:55.032 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 99611.0 mm², 点数: 14319 比例5.46562414266118
2026-04-03 10:09:55.032 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 5
2026-04-03 10:09:55.032 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 5, 用时: 606ms
2026-04-03 10:09:55.033 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 5, 层数: 1, 最高层: 1, 用时: 606ms
2026-04-03 10:22:16.218 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:22:16.219 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:22:16.220 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:22:16.690 [http-nio-8097-exec-3] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102216.pcd, 结果: 0
2026-04-03 10:22:16.690 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102216.pcd
2026-04-03 10:22:16.690 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 10:22:16.690 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102216.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:22:16.690 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102216.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:22:17.033 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 246229
2026-04-03 10:22:17.042 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 10:22:17.042 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:23:26.602 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 99476.0 mm², 点数: 14291 比例5.458216735253773
2026-04-03 10:23:26.602 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 5
2026-04-03 10:23:26.602 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 5, 用时: 69912ms
2026-04-03 10:23:26.602 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 5, 层数: 1, 最高层: 1, 用时: 69912ms
2026-04-03 10:23:32.423 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化所有Lx相机数量: 1
2026-04-03 10:23:32.427 [main] WARN [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - DLL文件已存在跳过复制: D:\git\测试\lxCameraApi\libs\plc\LxCameraApi-1.dll
2026-04-03 10:23:32.490 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化设备: SN=192.168.100.82, Type=1
2026-04-03 10:23:33.362 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 初始化成功
2026-04-03 10:23:33.362 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备详细信息:
2026-04-03 10:23:33.362 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备类型: 1005
2026-04-03 10:23:33.363 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - ID: F83B51129860
2026-04-03 10:23:33.363 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - IP: 192.168.100.82:3956
2026-04-03 10:23:33.363 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - SN: 04C8BF8A094B12F3
2026-04-03 10:23:33.363 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - MAC: fa:7e:64:c8:27:97
2026-04-03 10:23:33.363 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 固件版本: V1.1.26_231031
2026-04-03 10:23:33.363 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 算法版本: 1.1.5,20231025
2026-04-03 10:23:33.363 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备名称: camera_M4_192.168.100.82_3956
2026-04-03 10:23:34.286 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 流启动成功
2026-04-03 10:23:34.364 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 命令码设置成功5001
2026-04-03 10:23:34.364 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 初始化成功
2026-04-03 10:23:34.364 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 所有Lx相机初始化完成成功: 1
2026-04-03 10:23:34.780 [main] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageCropper] - ImageCropper 初始化完成
2026-04-03 10:23:37.997 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:23:38.001 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:23:38.003 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:23:38.466 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102338.pcd, 结果: 0
2026-04-03 10:23:38.467 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102338.pcd
2026-04-03 10:23:38.467 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 10:23:38.467 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102338.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:23:38.467 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102338.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:23:38.862 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 246603
2026-04-03 10:23:38.879 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 3
2026-04-03 10:23:38.879 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:24:06.729 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 2 层面积: 17067.0 mm², 点数: 4045 比例0.9364609053497942
2026-04-03 10:24:12.341 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 2 层箱子数: 1
2026-04-03 10:24:12.341 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 1, 用时: 33874ms
2026-04-03 10:24:12.343 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 1, 层数: 1, 最高层: 2, 用时: 33874ms
2026-04-03 10:25:41.008 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:25:41.009 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:25:41.010 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:25:41.444 [http-nio-8097-exec-3] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102541.pcd, 结果: 0
2026-04-03 10:25:41.444 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102541.pcd
2026-04-03 10:25:41.445 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 10:25:41.445 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102541.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:25:41.445 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102541.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:25:41.752 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 246261
2026-04-03 10:25:41.762 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 3
2026-04-03 10:25:41.762 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:25:45.800 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 2 层面积: 17139.0 mm², 点数: 4045 比例0.9404115226337448
2026-04-03 10:27:36.912 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 2 层箱子数: 1
2026-04-03 10:27:36.914 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 1, 用时: 115469ms
2026-04-03 10:27:36.915 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 1, 层数: 1, 最高层: 2, 用时: 115469ms
2026-04-03 10:27:46.271 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化所有Lx相机数量: 1
2026-04-03 10:27:46.272 [main] WARN [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - DLL文件已存在跳过复制: D:\git\测试\lxCameraApi\libs\plc\LxCameraApi-1.dll
2026-04-03 10:27:46.324 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化设备: SN=192.168.100.82, Type=1
2026-04-03 10:27:47.152 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 初始化成功
2026-04-03 10:27:47.152 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备详细信息:
2026-04-03 10:27:47.152 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备类型: 1005
2026-04-03 10:27:47.152 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - ID: F83B51129860
2026-04-03 10:27:47.152 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - IP: 192.168.100.82:3956
2026-04-03 10:27:47.152 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - SN: 04C8BF8A094B12F3
2026-04-03 10:27:47.152 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - MAC: fa:7e:64:c8:27:97
2026-04-03 10:27:47.152 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 固件版本: V1.1.26_231031
2026-04-03 10:27:47.152 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 算法版本: 1.1.5,20231025
2026-04-03 10:27:47.153 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备名称: camera_M4_192.168.100.82_3956
2026-04-03 10:27:48.082 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 流启动成功
2026-04-03 10:27:48.146 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 命令码设置成功5001
2026-04-03 10:27:48.146 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 初始化成功
2026-04-03 10:27:48.146 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 所有Lx相机初始化完成成功: 1
2026-04-03 10:27:48.514 [main] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageCropper] - ImageCropper 初始化完成
2026-04-03 10:27:51.830 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:27:51.835 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:27:51.837 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:27:52.309 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102751.pcd, 结果: 0
2026-04-03 10:27:52.309 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102751.pcd
2026-04-03 10:27:52.309 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 10:27:52.309 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102751.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:27:52.309 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_102751.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:27:52.667 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 246299
2026-04-03 10:27:52.684 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 3
2026-04-03 10:27:52.685 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:27:52.950 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 2 层面积: 17147.0 mm², 点数: 4044 比例0.9408504801097394
2026-04-03 10:27:57.194 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 2 层箱子数: 1
2026-04-03 10:27:57.194 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 9, 用时: 4885ms
2026-04-03 10:27:57.195 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 9, 层数: 1, 最高层: 2, 用时: 4885ms
2026-04-03 10:33:05.805 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:33:05.806 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:33:05.806 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:33:06.240 [http-nio-8097-exec-3] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_103305.pcd, 结果: 0
2026-04-03 10:33:06.241 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_103305.pcd
2026-04-03 10:33:06.241 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 10:33:06.241 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_103305.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:33:06.241 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_103305.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:33:06.514 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 246486
2026-04-03 10:33:06.522 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 3
2026-04-03 10:33:06.522 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:33:06.599 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 2 层面积: 17233.0 mm², 点数: 4045 比例0.9455692729766804
2026-04-03 10:33:06.599 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 2 层箱子数: 1
2026-04-03 10:33:06.599 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 9, 用时: 358ms
2026-04-03 10:33:06.599 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 9, 层数: 1, 最高层: 2, 用时: 358ms
2026-04-03 10:40:28.859 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:40:28.861 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:40:28.863 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:40:29.560 [http-nio-8097-exec-5] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104028.pcd, 结果: 0
2026-04-03 10:40:29.561 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104028.pcd
2026-04-03 10:40:29.561 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 10:40:29.561 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104028.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:40:29.561 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104028.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:40:30.079 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 237739
2026-04-03 10:40:30.099 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 10:40:30.100 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:40:30.347 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 143434.0 mm², 点数: 20246 比例7.870178326474623
2026-04-03 10:40:30.347 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 8
2026-04-03 10:40:30.347 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 8, 用时: 786ms
2026-04-03 10:40:30.347 [http-nio-8097-exec-5] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 786ms
2026-04-03 10:47:50.500 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=false, captureRgb=false, captureDepth=false, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:47:50.502 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:47:50.503 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:47:50.948 [http-nio-8097-exec-7] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104750.pcd, 结果: 0
2026-04-03 10:47:50.948 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104750.pcd
2026-04-03 10:47:50.948 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 1
2026-04-03 10:47:50.948 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104750.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:47:50.948 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104750.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:47:51.246 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 238138
2026-04-03 10:47:51.256 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 10:47:51.256 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:47:51.388 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 144096.0 mm², 点数: 20184 比例7.906502057613169
2026-04-03 10:47:51.388 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 8
2026-04-03 10:47:51.388 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 8, 用时: 440ms
2026-04-03 10:47:51.388 [http-nio-8097-exec-7] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 440ms
2026-04-03 10:47:59.021 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化所有Lx相机数量: 1
2026-04-03 10:47:59.023 [main] WARN [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - DLL文件已存在跳过复制: D:\git\测试\lxCameraApi\libs\plc\LxCameraApi-1.dll
2026-04-03 10:47:59.079 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化设备: SN=192.168.100.82, Type=1
2026-04-03 10:47:59.903 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 初始化成功
2026-04-03 10:47:59.903 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备详细信息:
2026-04-03 10:47:59.903 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备类型: 1005
2026-04-03 10:47:59.903 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - ID: F83B51129860
2026-04-03 10:47:59.903 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - IP: 192.168.100.82:3956
2026-04-03 10:47:59.904 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - SN: 04C8BF8A094B12F3
2026-04-03 10:47:59.904 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - MAC: fa:7e:64:c8:27:97
2026-04-03 10:47:59.904 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 固件版本: V1.1.26_231031
2026-04-03 10:47:59.904 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 算法版本: 1.1.5,20231025
2026-04-03 10:47:59.904 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备名称: camera_M4_192.168.100.82_3956
2026-04-03 10:48:00.832 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 流启动成功
2026-04-03 10:48:00.925 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 命令码设置成功5001
2026-04-03 10:48:00.925 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 初始化成功
2026-04-03 10:48:00.925 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 所有Lx相机初始化完成成功: 1
2026-04-03 10:48:01.201 [main] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageCropper] - ImageCropper 初始化完成
2026-04-03 10:48:14.621 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=true, captureRgb=true, captureDepth=true, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:48:14.622 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:48:14.624 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:48:14.645 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 创建目录: D:\data\20260403\amplitude
2026-04-03 10:48:14.660 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 图像保存: D:\data\20260403\amplitude\192.168.100.82_amplitude_20260403_104814.png, 结果: true, 文件是否存在: true
2026-04-03 10:48:14.661 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 强度图保存成功: D:\data\/20260403/amplitude/192.168.100.82_amplitude_20260403_104814.png
2026-04-03 10:48:14.661 [http-nio-8097-exec-1] ERROR [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 获取RGB数据失败: Unknow Error
2026-04-03 10:48:14.662 [http-nio-8097-exec-1] WARN [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 RGB图保存失败
2026-04-03 10:48:14.663 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 创建目录: D:\data\20260403\depth
2026-04-03 10:48:14.667 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 图像保存: D:\data\20260403\depth\192.168.100.82_depth_20260403_104814.png, 结果: true, 文件是否存在: true
2026-04-03 10:48:14.668 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 深度图保存成功: D:\data\/20260403/depth/192.168.100.82_depth_20260403_104814.png
2026-04-03 10:48:15.064 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104814.pcd, 结果: 0
2026-04-03 10:48:15.064 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104814.pcd
2026-04-03 10:48:15.064 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 3
2026-04-03 10:48:15.064 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104814.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:48:15.064 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104814.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:48:15.391 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 237818
2026-04-03 10:48:15.405 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 10:48:15.405 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:48:15.654 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 144104.0 mm², 点数: 20166 比例7.9069410150891635
2026-04-03 10:48:15.654 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 8
2026-04-03 10:48:15.654 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 8, 用时: 590ms
2026-04-03 10:48:15.655 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 590ms
2026-04-03 10:49:47.414 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=true, captureRgb=true, captureDepth=true, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:49:47.416 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:49:47.417 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:49:47.422 [http-nio-8097-exec-3] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 图像保存: D:\data\20260403\amplitude\192.168.100.82_amplitude_20260403_104947.png, 结果: true, 文件是否存在: true
2026-04-03 10:49:47.422 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 强度图保存成功: D:\data\/20260403/amplitude/192.168.100.82_amplitude_20260403_104947.png
2026-04-03 10:49:53.522 [http-nio-8097-exec-3] ERROR [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 获取RGB数据失败: Unknow Error
2026-04-03 10:50:12.076 [http-nio-8097-exec-3] WARN [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 RGB图保存失败
2026-04-03 10:50:12.079 [http-nio-8097-exec-3] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 图像保存: D:\data\20260403\depth\192.168.100.82_depth_20260403_104947.png, 结果: true, 文件是否存在: true
2026-04-03 10:50:12.080 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 深度图保存成功: D:\data\/20260403/depth/192.168.100.82_depth_20260403_104947.png
2026-04-03 10:50:12.452 [http-nio-8097-exec-3] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104947.pcd, 结果: 0
2026-04-03 10:50:12.452 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104947.pcd
2026-04-03 10:50:12.453 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 3
2026-04-03 10:50:12.453 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104947.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:50:12.453 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_104947.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:50:12.688 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 237908
2026-04-03 10:50:12.696 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 10:50:12.696 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:50:12.813 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 143699.0 mm², 点数: 20179 比例7.884718792866941
2026-04-03 10:50:12.813 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 8
2026-04-03 10:50:12.813 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 8, 用时: 360ms
2026-04-03 10:50:12.813 [http-nio-8097-exec-3] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 360ms
2026-04-03 10:51:55.733 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化所有Lx相机数量: 1
2026-04-03 10:51:55.734 [main] WARN [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - DLL文件已存在跳过复制: D:\git\测试\lxCameraApi\libs\plc\LxCameraApi-1.dll
2026-04-03 10:51:55.775 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化设备: SN=192.168.100.82, Type=1
2026-04-03 10:51:56.608 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 初始化成功
2026-04-03 10:51:56.609 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备详细信息:
2026-04-03 10:51:56.609 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备类型: 1005
2026-04-03 10:51:56.609 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - ID: F83B51129860
2026-04-03 10:51:56.609 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - IP: 192.168.100.82:3956
2026-04-03 10:51:56.609 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - SN: 04C8BF8A094B12F3
2026-04-03 10:51:56.609 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - MAC: fa:7e:64:c8:27:97
2026-04-03 10:51:56.609 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 固件版本: V1.1.26_231031
2026-04-03 10:51:56.609 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 算法版本: 1.1.5,20231025
2026-04-03 10:51:56.609 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备名称: camera_M4_192.168.100.82_3956
2026-04-03 10:51:57.553 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 流启动成功
2026-04-03 10:51:57.637 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 命令码设置成功5001
2026-04-03 10:51:57.637 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 初始化成功
2026-04-03 10:51:57.637 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 所有Lx相机初始化完成成功: 1
2026-04-03 10:51:57.967 [main] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageCropper] - ImageCropper 初始化完成
2026-04-03 10:52:20.272 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=true, captureRgb=true, captureDepth=true, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:52:20.278 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:52:20.301 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:52:20.328 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 图像保存: D:\data\20260403\amplitude\192.168.100.82_amplitude_20260403_105220.png, 结果: true, 文件是否存在: true
2026-04-03 10:52:20.328 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 强度图保存成功: D:\data\/20260403/amplitude/192.168.100.82_amplitude_20260403_105220.png
2026-04-03 10:52:25.595 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 创建目录: D:\data\20260403\rgb
2026-04-03 10:52:25.608 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 图像保存: D:\data\20260403\rgb\192.168.100.82_rgb_20260403_105220.png, 结果: true, 文件是否存在: true
2026-04-03 10:52:27.408 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 RGB图保存成功: D:\data\/20260403/rgb/192.168.100.82_rgb_20260403_105220.png
2026-04-03 10:52:29.169 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 图像保存: D:\data\20260403\depth\192.168.100.82_depth_20260403_105220.png, 结果: true, 文件是否存在: true
2026-04-03 10:52:29.170 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 深度图保存成功: D:\data\/20260403/depth/192.168.100.82_depth_20260403_105220.png
2026-04-03 10:52:29.511 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_105220.pcd, 结果: 0
2026-04-03 10:52:29.511 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_105220.pcd
2026-04-03 10:52:29.512 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 4
2026-04-03 10:52:29.512 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_105220.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:52:29.512 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_105220.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:52:29.775 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 238012
2026-04-03 10:52:29.786 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 10:52:29.786 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:52:30.007 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 143754.0 mm², 点数: 20167 比例7.887736625514403
2026-04-03 10:52:30.007 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 8
2026-04-03 10:52:30.007 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 8, 用时: 495ms
2026-04-03 10:52:30.008 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 495ms
2026-04-03 10:54:51.656 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化所有Lx相机数量: 1
2026-04-03 10:54:51.658 [main] WARN [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - DLL文件已存在跳过复制: D:\git\测试\lxCameraApi\libs\plc\LxCameraApi-1.dll
2026-04-03 10:54:51.708 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化设备: SN=192.168.100.82, Type=1
2026-04-03 10:54:52.582 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 初始化成功
2026-04-03 10:54:52.582 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备详细信息:
2026-04-03 10:54:52.582 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备类型: 1005
2026-04-03 10:54:52.582 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - ID: F83B51129860
2026-04-03 10:54:52.582 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - IP: 192.168.100.82:3956
2026-04-03 10:54:52.582 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - SN: 04C8BF8A094B12F3
2026-04-03 10:54:52.582 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - MAC: fa:7e:64:c8:27:97
2026-04-03 10:54:52.582 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 固件版本: V1.1.26_231031
2026-04-03 10:54:52.583 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 算法版本: 1.1.5,20231025
2026-04-03 10:54:52.583 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备名称: camera_M4_192.168.100.82_3956
2026-04-03 10:54:53.519 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 流启动成功
2026-04-03 10:54:53.548 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 命令码设置成功5001
2026-04-03 10:54:53.548 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 初始化成功
2026-04-03 10:54:53.548 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 所有Lx相机初始化完成成功: 1
2026-04-03 10:54:53.820 [main] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageCropper] - ImageCropper 初始化完成
2026-04-03 10:55:04.357 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=true, captureRgb=true, captureDepth=true, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 10:55:04.362 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 10:55:04.387 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 10:55:04.424 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 图像保存: D:\data\20260403\amplitude\192.168.100.82_amplitude_20260403_105504.png, 结果: true, 文件是否存在: true
2026-04-03 10:55:04.425 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 强度图保存成功: D:\data\/20260403/amplitude/192.168.100.82_amplitude_20260403_105504.png
2026-04-03 10:55:09.554 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 图像保存: D:\data\20260403\rgb\192.168.100.82_rgb_20260403_105504.png, 结果: true, 文件是否存在: true
2026-04-03 10:55:11.248 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 RGB图保存成功: D:\data\/20260403/rgb/192.168.100.82_rgb_20260403_105504.png
2026-04-03 10:55:12.858 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 图像保存: D:\data\20260403\depth\192.168.100.82_depth_20260403_105504.png, 结果: true, 文件是否存在: true
2026-04-03 10:55:12.858 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 深度图保存成功: D:\data\/20260403/depth/192.168.100.82_depth_20260403_105504.png
2026-04-03 10:55:13.308 [http-nio-8097-exec-1] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_105504.pcd, 结果: 0
2026-04-03 10:55:13.309 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_105504.pcd
2026-04-03 10:55:13.309 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 4
2026-04-03 10:55:13.309 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_105504.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 10:55:13.310 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_105504.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:55:13.585 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 238704
2026-04-03 10:55:13.598 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 10:55:13.598 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 10:55:13.828 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 143330.0 mm², 点数: 20247 比例7.864471879286694
2026-04-03 10:55:13.829 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 8
2026-04-03 10:55:13.829 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 8, 用时: 519ms
2026-04-03 10:55:13.830 [http-nio-8097-exec-1] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 519ms
2026-04-03 11:00:14.984 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化所有Lx相机数量: 1
2026-04-03 11:00:14.985 [main] WARN [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - DLL文件已存在跳过复制: D:\git\测试\lxCameraApi\libs\plc\LxCameraApi-1.dll
2026-04-03 11:00:15.032 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 开始初始化设备: SN=192.168.100.82, Type=1
2026-04-03 11:00:15.857 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 初始化成功
2026-04-03 11:00:15.857 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备详细信息:
2026-04-03 11:00:15.857 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备类型: 1005
2026-04-03 11:00:15.857 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - ID: F83B51129860
2026-04-03 11:00:15.857 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - IP: 192.168.100.82:3956
2026-04-03 11:00:15.857 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - SN: 04C8BF8A094B12F3
2026-04-03 11:00:15.857 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - MAC: fa:7e:64:c8:27:97
2026-04-03 11:00:15.857 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 固件版本: V1.1.26_231031
2026-04-03 11:00:15.857 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 算法版本: 1.1.5,20231025
2026-04-03 11:00:15.857 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备名称: camera_M4_192.168.100.82_3956
2026-04-03 11:00:16.805 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 流启动成功
2026-04-03 11:00:16.888 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 设备 192.168.100.82 命令码设置成功5001
2026-04-03 11:00:16.888 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 初始化成功
2026-04-03 11:00:16.888 [main] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 所有Lx相机初始化完成成功: 1
2026-04-03 11:00:17.151 [main] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageCropper] - ImageCropper 初始化完成
2026-04-03 11:00:30.112 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 开始拍照,配置: CaptureConfig(captureAmplitude=true, captureRgb=true, captureDepth=true, captureDepthColor=false, capturePointCloud=true, maxConnectRetries=3, maxCaptureRetries=3, retryInterval=500, maxDepthValue=1000.0, colormapType=0)
2026-04-03 11:00:30.117 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照尝试
2026-04-03 11:00:30.142 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 设置命令码结果: 25
2026-04-03 11:00:30.175 [http-nio-8097-exec-2] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 图像保存: D:\data\20260403\amplitude\192.168.100.82_amplitude_20260403_110030.png, 结果: true, 文件是否存在: true
2026-04-03 11:00:30.175 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 强度图保存成功: D:\data\/20260403/amplitude/192.168.100.82_amplitude_20260403_110030.png
2026-04-03 11:00:34.676 [http-nio-8097-exec-2] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 图像保存: D:\data\20260403\rgb\192.168.100.82_rgb_20260403_110030.png, 结果: true, 文件是否存在: true
2026-04-03 11:00:34.676 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 RGB图保存成功: D:\data\/20260403/rgb/192.168.100.82_rgb_20260403_110030.png
2026-04-03 11:00:34.679 [http-nio-8097-exec-2] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 图像保存: D:\data\20260403\depth\192.168.100.82_depth_20260403_110030.png, 结果: true, 文件是否存在: true
2026-04-03 11:00:34.680 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 深度图保存成功: D:\data\/20260403/depth/192.168.100.82_depth_20260403_110030.png
2026-04-03 11:00:35.103 [http-nio-8097-exec-2] INFO [c.e.l.s.IndustrialCamera.camera.lx.ImageSaver] - 点云保存: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_110030.pcd, 结果: 0
2026-04-03 11:00:35.104 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 点云保存成功: D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_110030.pcd
2026-04-03 11:00:35.104 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 相机 192.168.100.82 第 1 次拍照成功,保存文件数: 4
2026-04-03 11:00:35.104 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 收到计算箱子数量请求: pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_110030.pcd, floorHeight=null, boxSize=135.0x135.0x250.0
2026-04-03 11:00:35.104 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 开始计算箱子数量: BoxCountRequest(cameraId=null, cameraCalibratePath=D://data/cj.json, pcdFilePath=D:\data\/20260403/pointCloud/192.168.100.82_pointcloud_20260403_110030.pcd, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 11:00:35.425 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 成功读取PCD文件点数: 238668
2026-04-03 11:00:35.442 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 过滤后的点云层数: 2
2026-04-03 11:00:35.442 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 每层最大箱子数: 8
2026-04-03 11:00:35.713 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层面积: 143241.0 mm², 点数: 20195 比例7.859588477366255
2026-04-03 11:00:35.713 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 第 1 层箱子数: 8
2026-04-03 11:00:35.713 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.BoxCountCalculator] - 计算完成,总箱子数: 8, 用时: 609ms
2026-04-03 11:00:35.714 [http-nio-8097-exec-2] INFO [c.e.l.s.I.camera.lx.LxCameraServiceImpl] - 箱子数量计算完成: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 609ms
2026-04-16 09:16:30.529 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.hik.ImageCaptureService] - 开始拍照,相机: 192.168.100.89, 保存路径: D:/data/media/2026-04-16/1/1776302190529.png
2026-04-16 09:16:30.536 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.hik.ImageCaptureService] - 获取图像成功: 帧[26108] 宽[3072] 高[2048]
2026-04-16 09:16:30.538 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.hik.ImageCaptureService] - 创建目录: D:\data\media\2026-04-16\1
2026-04-16 09:16:30.564 [http-nio-8097-exec-4] INFO [c.e.l.s.I.camera.hik.ImageCaptureService] - 图像保存成功: D:/data/media/2026-04-16/1/1776302190529.png
2026-04-16 09:20:23.865 [SpringApplicationShutdownHook] INFO [c.e.l.s.I.camera.hik.ImageCaptureService] - 开始清理相机资源...
2026-04-16 09:20:23.909 [SpringApplicationShutdownHook] INFO [c.e.l.s.I.camera.hik.ImageCaptureService] - 相机 192.168.100.89 资源已清理
2026-04-16 09:20:24.098 [SpringApplicationShutdownHook] INFO [c.e.l.s.I.camera.hik.ImageCaptureService] - SDK反初始化成功

@ -1,2 +1,2 @@
2026-04-03 00:10:00.020 [scheduling-1] INFO [com.example.lxcameraapi.service.cron.CronTab] - corn delete file
2026-04-03 00:10:00.023 [scheduling-1] INFO [com.example.lxcameraapi.service.cron.CronTab] - free space :0
2026-04-16 00:10:05.815 [scheduling-1] INFO [com.example.lxcameraapi.service.cron.CronTab] - corn delete file
2026-04-16 00:10:05.818 [scheduling-1] INFO [com.example.lxcameraapi.service.cron.CronTab] - free space :0

File diff suppressed because it is too large Load Diff

@ -1,260 +1,9 @@
2026-04-03 00:10:00.017 [scheduling-1] INFO [com.example.lxcameraapi.util.LogUtil] - 定时任务执行 - Task: 清理文件任务, Status: START, Message: 开始执行文件清理任务, Time: 1775146200017
2026-04-03 00:10:00.023 [scheduling-1] INFO [com.example.lxcameraapi.util.LogUtil] - 定时任务执行 - Task: 清理文件任务, Status: SUCCESS, Message: 文件清理任务执行完成, Time: 1775146200023
2026-04-03 09:26:53.814 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Starting LxCameraApiApplication using Java 21.0.10 with PID 29712 (D:\git\测试\lxCameraApi\target\classes started by 昊天 in D:\git\测试\lxCameraApi)
2026-04-03 09:26:53.815 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - No active profile set, falling back to 1 default profile: "default"
2026-04-03 09:26:54.761 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Initializing ProtocolHandler ["http-nio-8097"]
2026-04-03 09:26:54.763 [main] INFO [org.apache.catalina.core.StandardService] - Starting service [Tomcat]
2026-04-03 09:26:54.763 [main] INFO [org.apache.catalina.core.StandardEngine] - Starting Servlet engine: [Apache Tomcat/10.1.16]
2026-04-03 09:26:54.829 [main] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring embedded WebApplicationContext
2026-04-03 09:26:57.661 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Starting ProtocolHandler ["http-nio-8097"]
2026-04-03 09:26:57.690 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Started LxCameraApiApplication in 4.415 seconds (process running for 5.231)
2026-04-03 09:27:02.084 [http-nio-8097-exec-1] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2026-04-03 09:27:02.240 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775179622240
2026-04-03 09:27:02.240 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:27:03.880 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 21655 个点到平面像素面积85921
2026-04-03 09:27:04.132 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 09:27:04.135 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 4, 层数: 1, 最高层: 1, 用时: 1235ms
2026-04-03 09:27:04.135 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 1904ms, Time: 1775179624135
2026-04-03 09:28:02.365 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Starting LxCameraApiApplication using Java 21.0.10 with PID 20600 (D:\git\测试\lxCameraApi\target\classes started by 昊天 in D:\git\测试\lxCameraApi)
2026-04-03 09:28:02.368 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - No active profile set, falling back to 1 default profile: "default"
2026-04-03 09:28:03.340 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Initializing ProtocolHandler ["http-nio-8097"]
2026-04-03 09:28:03.341 [main] INFO [org.apache.catalina.core.StandardService] - Starting service [Tomcat]
2026-04-03 09:28:03.341 [main] INFO [org.apache.catalina.core.StandardEngine] - Starting Servlet engine: [Apache Tomcat/10.1.16]
2026-04-03 09:28:03.399 [main] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring embedded WebApplicationContext
2026-04-03 09:28:06.822 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Starting ProtocolHandler ["http-nio-8097"]
2026-04-03 09:28:06.877 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Started LxCameraApiApplication in 4.999 seconds (process running for 5.742)
2026-04-03 09:28:08.375 [http-nio-8097-exec-1] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2026-04-03 09:28:08.529 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775179688529
2026-04-03 09:28:08.530 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:28:09.856 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 21618 个点到平面像素面积147857
2026-04-03 09:28:09.922 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 09:28:09.923 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 6, 层数: 1, 最高层: 1, 用时: 555ms
2026-04-03 09:28:09.923 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 1403ms, Time: 1775179689923
2026-04-03 09:32:56.453 [http-nio-8097-exec-3] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775179976453
2026-04-03 09:32:56.454 [http-nio-8097-exec-3] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:32:57.816 [http-nio-8097-exec-3] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 18902 个点到平面像素面积129026
2026-04-03 09:32:57.854 [http-nio-8097-exec-3] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 09:32:57.855 [http-nio-8097-exec-3] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 5, 层数: 1, 最高层: 1, 用时: 701ms
2026-04-03 09:32:57.855 [http-nio-8097-exec-3] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 1402ms, Time: 1775179977855
2026-04-03 09:33:07.525 [http-nio-8097-exec-4] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775179987525
2026-04-03 09:33:07.525 [http-nio-8097-exec-4] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:33:08.955 [http-nio-8097-exec-4] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 18925 个点到平面像素面积129699
2026-04-03 09:33:09.016 [http-nio-8097-exec-4] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 09:33:09.019 [http-nio-8097-exec-4] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 5, 层数: 1, 最高层: 1, 用时: 739ms
2026-04-03 09:33:09.019 [http-nio-8097-exec-4] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 1494ms, Time: 1775179989019
2026-04-03 09:36:22.833 [http-nio-8097-exec-6] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775180182833
2026-04-03 09:36:22.834 [http-nio-8097-exec-6] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=155.0, boxWidth=155.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:36:23.632 [http-nio-8097-exec-6] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 21757 个点到平面像素面积146661
2026-04-03 09:36:23.662 [http-nio-8097-exec-6] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 09:38:19.703 [http-nio-8097-exec-6] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 6, 层数: 1, 最高层: 1, 用时: 116439ms
2026-04-03 09:38:19.703 [http-nio-8097-exec-6] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 116871ms, Time: 1775180299703
2026-04-03 09:38:33.776 [http-nio-8097-exec-8] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=140.0, boxWidth=140.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775180313776
2026-04-03 09:38:33.777 [http-nio-8097-exec-8] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=140.0, boxWidth=140.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:38:35.308 [http-nio-8097-exec-8] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 21793 个点到平面像素面积147223
2026-04-03 09:38:35.368 [http-nio-8097-exec-8] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 09:38:39.819 [http-nio-8097-exec-8] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 5206ms
2026-04-03 09:38:39.819 [http-nio-8097-exec-8] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 6043ms, Time: 1775180319819
2026-04-03 09:40:07.684 [http-nio-8097-exec-9] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=140.0, boxWidth=140.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775180407684
2026-04-03 09:40:07.685 [http-nio-8097-exec-9] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=140.0, boxWidth=140.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:40:08.460 [http-nio-8097-exec-9] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 18791 个点到平面像素面积128367
2026-04-03 09:40:08.486 [http-nio-8097-exec-9] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 09:40:16.235 [http-nio-8097-exec-9] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 7, 层数: 1, 最高层: 1, 用时: 8134ms
2026-04-03 09:40:16.235 [http-nio-8097-exec-9] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 8551ms, Time: 1775180416235
2026-04-03 09:41:00.264 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Starting LxCameraApiApplication using Java 21.0.10 with PID 43424 (D:\git\测试\lxCameraApi\target\classes started by 昊天 in D:\git\测试\lxCameraApi)
2026-04-03 09:41:00.266 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - No active profile set, falling back to 1 default profile: "default"
2026-04-03 09:41:01.155 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Initializing ProtocolHandler ["http-nio-8097"]
2026-04-03 09:41:01.156 [main] INFO [org.apache.catalina.core.StandardService] - Starting service [Tomcat]
2026-04-03 09:41:01.156 [main] INFO [org.apache.catalina.core.StandardEngine] - Starting Servlet engine: [Apache Tomcat/10.1.16]
2026-04-03 09:41:01.210 [main] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring embedded WebApplicationContext
2026-04-03 09:41:03.946 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Starting ProtocolHandler ["http-nio-8097"]
2026-04-03 09:41:03.971 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Started LxCameraApiApplication in 4.211 seconds (process running for 4.922)
2026-04-03 09:41:07.916 [http-nio-8097-exec-1] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2026-04-03 09:41:08.028 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=140.0, boxWidth=140.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775180468028
2026-04-03 09:41:08.029 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=140.0, boxWidth=140.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:41:08.974 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 18792 个点到平面像素面积128270
2026-04-03 09:41:09.052 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 09:41:09.053 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 7, 层数: 1, 最高层: 1, 用时: 578ms
2026-04-03 09:41:09.054 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 1030ms, Time: 1775180469054
2026-04-03 09:41:35.288 [http-nio-8097-exec-2] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=137.0, boxWidth=137.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775180495288
2026-04-03 09:41:35.289 [http-nio-8097-exec-2] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=137.0, boxWidth=137.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:41:36.069 [http-nio-8097-exec-2] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 18795 个点到平面像素面积128398
2026-04-03 09:41:36.099 [http-nio-8097-exec-2] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 09:41:36.100 [http-nio-8097-exec-2] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 7, 层数: 1, 最高层: 1, 用时: 393ms
2026-04-03 09:41:36.100 [http-nio-8097-exec-2] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 812ms, Time: 1775180496100
2026-04-03 09:44:55.070 [http-nio-8097-exec-4] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=137.0, boxWidth=137.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775180695070
2026-04-03 09:44:55.070 [http-nio-8097-exec-4] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=137.0, boxWidth=137.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 09:44:55.857 [http-nio-8097-exec-4] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 2280 个点到平面像素面积17633
2026-04-03 09:44:55.887 [http-nio-8097-exec-4] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 09:44:55.887 [http-nio-8097-exec-4] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 1, 层数: 1, 最高层: 1, 用时: 386ms
2026-04-03 09:44:55.887 [http-nio-8097-exec-4] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 817ms, Time: 1775180695887
2026-04-03 10:05:47.901 [http-nio-8097-exec-6] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=137.0, boxWidth=137.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775181947901
2026-04-03 10:05:47.902 [http-nio-8097-exec-6] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=137.0, boxWidth=137.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:05:48.610 [http-nio-8097-exec-6] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 2276 个点到平面像素面积17526
2026-04-03 10:05:48.640 [http-nio-8097-exec-6] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:05:48.640 [http-nio-8097-exec-6] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 1, 层数: 1, 最高层: 1, 用时: 334ms
2026-04-03 10:05:48.640 [http-nio-8097-exec-6] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 739ms, Time: 1775181948640
2026-04-03 10:06:09.197 [http-nio-8097-exec-7] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775181969197
2026-04-03 10:06:09.198 [http-nio-8097-exec-7] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:06:09.914 [http-nio-8097-exec-7] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 2276 个点到平面像素面积17479
2026-04-03 10:06:09.943 [http-nio-8097-exec-7] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:06:09.943 [http-nio-8097-exec-7] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 1, 层数: 1, 最高层: 1, 用时: 331ms
2026-04-03 10:06:09.944 [http-nio-8097-exec-7] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 747ms, Time: 1775181969944
2026-04-03 10:06:51.381 [http-nio-8097-exec-8] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775182011381
2026-04-03 10:06:51.382 [http-nio-8097-exec-8] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:06:52.095 [http-nio-8097-exec-8] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 6990 个点到平面像素面积51341
2026-04-03 10:06:52.129 [http-nio-8097-exec-8] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:06:52.129 [http-nio-8097-exec-8] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 3, 层数: 1, 最高层: 1, 用时: 348ms
2026-04-03 10:06:52.130 [http-nio-8097-exec-8] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 749ms, Time: 1775182012130
2026-04-03 10:07:27.330 [http-nio-8097-exec-9] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775182047330
2026-04-03 10:07:27.330 [http-nio-8097-exec-9] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:07:28.097 [http-nio-8097-exec-9] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 21063 个点到平面像素面积144606
2026-04-03 10:07:28.126 [http-nio-8097-exec-9] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:07:28.127 [http-nio-8097-exec-9] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 379ms
2026-04-03 10:07:28.127 [http-nio-8097-exec-9] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 797ms, Time: 1775182048127
2026-04-03 10:07:49.418 [http-nio-8097-exec-10] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775182069418
2026-04-03 10:07:49.418 [http-nio-8097-exec-10] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:07:50.160 [http-nio-8097-exec-10] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 14297 个点到平面像素面积99428
2026-04-03 10:07:50.191 [http-nio-8097-exec-10] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:07:50.191 [http-nio-8097-exec-10] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 5, 层数: 1, 最高层: 1, 用时: 363ms
2026-04-03 10:07:50.191 [http-nio-8097-exec-10] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 773ms, Time: 1775182070191
2026-04-03 10:09:29.133 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Starting LxCameraApiApplication using Java 21.0.10 with PID 24672 (D:\git\测试\lxCameraApi\target\classes started by 昊天 in D:\git\测试\lxCameraApi)
2026-04-03 10:09:29.135 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - No active profile set, falling back to 1 default profile: "default"
2026-04-03 10:09:30.114 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Initializing ProtocolHandler ["http-nio-8097"]
2026-04-03 10:09:30.115 [main] INFO [org.apache.catalina.core.StandardService] - Starting service [Tomcat]
2026-04-03 10:09:30.115 [main] INFO [org.apache.catalina.core.StandardEngine] - Starting Servlet engine: [Apache Tomcat/10.1.16]
2026-04-03 10:09:30.173 [main] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring embedded WebApplicationContext
2026-04-03 10:09:32.871 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Starting ProtocolHandler ["http-nio-8097"]
2026-04-03 10:09:32.896 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Started LxCameraApiApplication in 4.273 seconds (process running for 5.258)
2026-04-03 10:09:53.847 [http-nio-8097-exec-1] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2026-04-03 10:09:53.975 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775182193975
2026-04-03 10:09:53.975 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:09:54.955 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 14319 个点到平面像素面积99611
2026-04-03 10:09:55.032 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:09:55.034 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 5, 层数: 1, 最高层: 1, 用时: 606ms
2026-04-03 10:09:55.034 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 1064ms, Time: 1775182195034
2026-04-03 10:22:16.218 [http-nio-8097-exec-3] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775182936218
2026-04-03 10:22:16.218 [http-nio-8097-exec-3] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:23:26.566 [http-nio-8097-exec-3] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 14291 个点到平面像素面积99476
2026-04-03 10:23:26.602 [http-nio-8097-exec-3] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:23:26.602 [http-nio-8097-exec-3] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 5, 层数: 1, 最高层: 1, 用时: 69912ms
2026-04-03 10:23:26.603 [http-nio-8097-exec-3] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 70385ms, Time: 1775183006603
2026-04-03 10:23:30.649 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Starting LxCameraApiApplication using Java 21.0.10 with PID 45860 (D:\git\测试\lxCameraApi\target\classes started by 昊天 in D:\git\测试\lxCameraApi)
2026-04-03 10:23:30.651 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - No active profile set, falling back to 1 default profile: "default"
2026-04-03 10:23:32.082 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Initializing ProtocolHandler ["http-nio-8097"]
2026-04-03 10:23:32.084 [main] INFO [org.apache.catalina.core.StandardService] - Starting service [Tomcat]
2026-04-03 10:23:32.084 [main] INFO [org.apache.catalina.core.StandardEngine] - Starting Servlet engine: [Apache Tomcat/10.1.16]
2026-04-03 10:23:32.237 [main] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring embedded WebApplicationContext
2026-04-03 10:23:35.632 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Starting ProtocolHandler ["http-nio-8097"]
2026-04-03 10:23:35.673 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Started LxCameraApiApplication in 5.637 seconds (process running for 7.128)
2026-04-03 10:23:37.866 [http-nio-8097-exec-1] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2026-04-03 10:23:37.997 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775183017997
2026-04-03 10:23:37.997 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:23:53.967 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 4045 个点到平面像素面积17067
2026-04-03 10:23:54.420 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:24:12.343 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 1, 层数: 1, 最高层: 2, 用时: 33874ms
2026-04-03 10:24:12.344 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 34354ms, Time: 1775183052344
2026-04-03 10:25:41.007 [http-nio-8097-exec-3] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775183141007
2026-04-03 10:25:41.008 [http-nio-8097-exec-3] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:25:45.762 [http-nio-8097-exec-3] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 4045 个点到平面像素面积17139
2026-04-03 10:25:45.799 [http-nio-8097-exec-3] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:27:36.915 [http-nio-8097-exec-3] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 1, 层数: 1, 最高层: 2, 用时: 115469ms
2026-04-03 10:27:36.916 [http-nio-8097-exec-3] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 115909ms, Time: 1775183256916
2026-04-03 10:27:44.915 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Starting LxCameraApiApplication using Java 21.0.10 with PID 47852 (D:\git\测试\lxCameraApi\target\classes started by 昊天 in D:\git\测试\lxCameraApi)
2026-04-03 10:27:44.917 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - No active profile set, falling back to 1 default profile: "default"
2026-04-03 10:27:46.084 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Initializing ProtocolHandler ["http-nio-8097"]
2026-04-03 10:27:46.085 [main] INFO [org.apache.catalina.core.StandardService] - Starting service [Tomcat]
2026-04-03 10:27:46.085 [main] INFO [org.apache.catalina.core.StandardEngine] - Starting Servlet engine: [Apache Tomcat/10.1.16]
2026-04-03 10:27:46.155 [main] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring embedded WebApplicationContext
2026-04-03 10:27:49.348 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Starting ProtocolHandler ["http-nio-8097"]
2026-04-03 10:27:49.382 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Started LxCameraApiApplication in 5.115 seconds (process running for 6.383)
2026-04-03 10:27:51.692 [http-nio-8097-exec-1] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2026-04-03 10:27:51.830 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775183271830
2026-04-03 10:27:51.830 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:27:52.851 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 4044 个点到平面像素面积17147
2026-04-03 10:27:52.949 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:27:57.195 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 9, 层数: 1, 最高层: 2, 用时: 4885ms
2026-04-03 10:27:57.196 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 5372ms, Time: 1775183277196
2026-04-03 10:33:05.805 [http-nio-8097-exec-3] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775183585805
2026-04-03 10:33:05.805 [http-nio-8097-exec-3] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:33:06.563 [http-nio-8097-exec-3] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 4045 个点到平面像素面积17233
2026-04-03 10:33:06.599 [http-nio-8097-exec-3] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:33:06.599 [http-nio-8097-exec-3] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 9, 层数: 1, 最高层: 2, 用时: 358ms
2026-04-03 10:33:06.600 [http-nio-8097-exec-3] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 795ms, Time: 1775183586600
2026-04-03 10:40:28.858 [http-nio-8097-exec-5] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775184028858
2026-04-03 10:40:28.859 [http-nio-8097-exec-5] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:40:30.289 [http-nio-8097-exec-5] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 20246 个点到平面像素面积143434
2026-04-03 10:40:30.346 [http-nio-8097-exec-5] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:40:30.347 [http-nio-8097-exec-5] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 786ms
2026-04-03 10:40:30.348 [http-nio-8097-exec-5] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 1490ms, Time: 1775184030348
2026-04-03 10:47:06.091 [http-nio-8097-exec-7] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775184426091
2026-04-03 10:47:06.092 [http-nio-8097-exec-7] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:47:51.351 [http-nio-8097-exec-7] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 20184 个点到平面像素面积144096
2026-04-03 10:47:51.388 [http-nio-8097-exec-7] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:47:51.388 [http-nio-8097-exec-7] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 440ms
2026-04-03 10:47:51.388 [http-nio-8097-exec-7] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 45297ms, Time: 1775184471388
2026-04-03 10:47:57.658 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Starting LxCameraApiApplication using Java 21.0.10 with PID 35136 (D:\git\测试\lxCameraApi\target\classes started by 昊天 in D:\git\测试\lxCameraApi)
2026-04-03 10:47:57.660 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - No active profile set, falling back to 1 default profile: "default"
2026-04-03 10:47:58.838 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Initializing ProtocolHandler ["http-nio-8097"]
2026-04-03 10:47:58.840 [main] INFO [org.apache.catalina.core.StandardService] - Starting service [Tomcat]
2026-04-03 10:47:58.840 [main] INFO [org.apache.catalina.core.StandardEngine] - Starting Servlet engine: [Apache Tomcat/10.1.16]
2026-04-03 10:47:58.914 [main] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring embedded WebApplicationContext
2026-04-03 10:48:01.908 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Starting ProtocolHandler ["http-nio-8097"]
2026-04-03 10:48:01.940 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Started LxCameraApiApplication in 4.855 seconds (process running for 5.677)
2026-04-03 10:48:11.115 [http-nio-8097-exec-1] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2026-04-03 10:48:11.325 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775184491325
2026-04-03 10:48:11.325 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:48:15.567 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 20166 个点到平面像素面积144104
2026-04-03 10:48:15.654 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:48:15.655 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 590ms
2026-04-03 10:48:15.656 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 4342ms, Time: 1775184495656
2026-04-03 10:49:43.855 [http-nio-8097-exec-3] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775184583855
2026-04-03 10:49:43.856 [http-nio-8097-exec-3] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:50:12.781 [http-nio-8097-exec-3] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 20179 个点到平面像素面积143699
2026-04-03 10:50:12.812 [http-nio-8097-exec-3] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:50:12.813 [http-nio-8097-exec-3] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 360ms
2026-04-03 10:50:12.813 [http-nio-8097-exec-3] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 28958ms, Time: 1775184612813
2026-04-03 10:51:54.553 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Starting LxCameraApiApplication using Java 21.0.10 with PID 34240 (D:\git\测试\lxCameraApi\target\classes started by 昊天 in D:\git\测试\lxCameraApi)
2026-04-03 10:51:54.556 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - No active profile set, falling back to 1 default profile: "default"
2026-04-03 10:51:55.577 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Initializing ProtocolHandler ["http-nio-8097"]
2026-04-03 10:51:55.579 [main] INFO [org.apache.catalina.core.StandardService] - Starting service [Tomcat]
2026-04-03 10:51:55.579 [main] INFO [org.apache.catalina.core.StandardEngine] - Starting Servlet engine: [Apache Tomcat/10.1.16]
2026-04-03 10:51:55.639 [main] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring embedded WebApplicationContext
2026-04-03 10:51:58.937 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Starting ProtocolHandler ["http-nio-8097"]
2026-04-03 10:51:58.981 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Started LxCameraApiApplication in 4.959 seconds (process running for 5.878)
2026-04-03 10:52:20.093 [http-nio-8097-exec-1] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2026-04-03 10:52:20.270 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775184740270
2026-04-03 10:52:20.271 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:52:29.935 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 20167 个点到平面像素面积143754
2026-04-03 10:52:30.007 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:52:30.008 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 495ms
2026-04-03 10:52:30.008 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 9748ms, Time: 1775184750008
2026-04-03 10:54:49.977 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Starting LxCameraApiApplication using Java 21.0.10 with PID 47832 (D:\git\测试\lxCameraApi\target\classes started by 昊天 in D:\git\测试\lxCameraApi)
2026-04-03 10:54:49.980 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - No active profile set, falling back to 1 default profile: "default"
2026-04-03 10:54:51.413 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Initializing ProtocolHandler ["http-nio-8097"]
2026-04-03 10:54:51.415 [main] INFO [org.apache.catalina.core.StandardService] - Starting service [Tomcat]
2026-04-03 10:54:51.415 [main] INFO [org.apache.catalina.core.StandardEngine] - Starting Servlet engine: [Apache Tomcat/10.1.16]
2026-04-03 10:54:51.503 [main] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring embedded WebApplicationContext
2026-04-03 10:54:54.491 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Starting ProtocolHandler ["http-nio-8097"]
2026-04-03 10:54:54.523 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Started LxCameraApiApplication in 5.143 seconds (process running for 6.136)
2026-04-03 10:55:04.168 [http-nio-8097-exec-1] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2026-04-03 10:55:04.356 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775184904356
2026-04-03 10:55:04.357 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 10:55:13.757 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 20247 个点到平面像素面积143330
2026-04-03 10:55:13.828 [http-nio-8097-exec-1] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 10:55:13.830 [http-nio-8097-exec-1] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 519ms
2026-04-03 10:55:13.830 [http-nio-8097-exec-1] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 9482ms, Time: 1775184913830
2026-04-03 11:00:13.693 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Starting LxCameraApiApplication using Java 21.0.10 with PID 11392 (D:\git\测试\lxCameraApi\target\classes started by 昊天 in D:\git\测试\lxCameraApi)
2026-04-03 11:00:13.695 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - No active profile set, falling back to 1 default profile: "default"
2026-04-03 11:00:14.798 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Initializing ProtocolHandler ["http-nio-8097"]
2026-04-03 11:00:14.799 [main] INFO [org.apache.catalina.core.StandardService] - Starting service [Tomcat]
2026-04-03 11:00:14.800 [main] INFO [org.apache.catalina.core.StandardEngine] - Starting Servlet engine: [Apache Tomcat/10.1.16]
2026-04-03 11:00:14.879 [main] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring embedded WebApplicationContext
2026-04-03 11:00:17.796 [main] INFO [org.apache.coyote.http11.Http11NioProtocol] - Starting ProtocolHandler ["http-nio-8097"]
2026-04-03 11:00:17.827 [main] INFO [com.example.lxcameraapi.LxCameraApiApplication] - Started LxCameraApiApplication in 4.735 seconds (process running for 5.627)
2026-04-03 11:00:29.910 [http-nio-8097-exec-2] INFO [o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2026-04-03 11:00:30.110 [http-nio-8097-exec-2] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Params: [BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 127.0.0.1, Time: 1775185230110
2026-04-03 11:00:30.111 [http-nio-8097-exec-2] INFO [c.e.lxcameraapi.controller.BoxCountController] - 收到箱子数量计算请求: BoxCountRequest(cameraId=null, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=135.0, boxWidth=135.0, boxHeight=250.0, stackType=null, maxBoxesPerLayer=8, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)
2026-04-03 11:00:35.622 [http-nio-8097-exec-2] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 成功绘制 20195 个点到平面像素面积143241
2026-04-03 11:00:35.712 [http-nio-8097-exec-2] INFO [c.e.l.s.I.algorithm.PointCloudProcessor] - 图像已保存到D://data\1.jpg
2026-04-03 11:00:35.715 [http-nio-8097-exec-2] INFO [c.e.lxcameraapi.controller.BoxCountController] - 箱子数量计算结果: 成功 - 总箱子数: 8, 层数: 1, 最高层: 1, 用时: 609ms
2026-04-03 11:00:35.715 [http-nio-8097-exec-2] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://127.0.0.1:8097/api/boxcount/calculate, Method: POST, Status: 200, Duration: 5615ms, Time: 1775185235715
2026-04-16 00:10:05.811 [scheduling-1] INFO [com.example.lxcameraapi.util.LogUtil] - 定时任务执行 - Task: 清理文件任务, Status: START, Message: 开始执行文件清理任务, Time: 1776269405811
2026-04-16 00:10:05.818 [scheduling-1] INFO [com.example.lxcameraapi.util.LogUtil] - 定时任务执行 - Task: 清理文件任务, Status: SUCCESS, Message: 文件清理任务执行完成, Time: 1776269405818
2026-04-16 09:16:30.527 [http-nio-8097-exec-4] INFO [com.example.lxcameraapi.util.LogUtil] - API请求 - URL: http://192.168.100.110:8097/category/single, Method: POST, Params: [BoxCountRequest(cameraId=1, cameraCalibratePath=null, pcdFilePath=null, floorHeight=null, boxLength=null, boxWidth=null, boxHeight=null, stackType=null, maxBoxesPerLayer=null, baseTolerance=null, additionalTolerancePerLevel=null, minBounds=null, maxBounds=null)], ClientIP: 192.168.100.99, Time: 1776302190527
2026-04-16 09:16:30.529 [http-nio-8097-exec-4] INFO [c.e.lxcameraapi.controller.CategoryController] - 开始拍照IP: 1, 路径: D:/data/media/2026-04-16/1/1776302190529.png
2026-04-16 09:16:31.287 [http-nio-8097-exec-4] INFO [c.e.lxcameraapi.controller.CategoryController] - 检测结果: []
2026-04-16 09:16:31.287 [http-nio-8097-exec-4] INFO [com.example.lxcameraapi.util.LogUtil] - API响应 - URL: http://192.168.100.110:8097/category/single, Method: POST, Status: 200, Duration: 760ms, Time: 1776302191287
2026-04-16 09:20:23.809 [SpringApplicationShutdownHook] INFO [c.e.l.s.IndustrialCamera.algorithm.ONNXServiceNew] - 开始清理 ONNX 资源...
2026-04-16 09:20:23.864 [SpringApplicationShutdownHook] INFO [c.e.l.s.IndustrialCamera.algorithm.ONNXServiceNew] - 已关闭 Session: model
2026-04-16 09:20:23.865 [SpringApplicationShutdownHook] INFO [c.e.l.s.IndustrialCamera.algorithm.ONNXServiceNew] - ONNX 资源清理完成

@ -27,7 +27,10 @@
<url/>
</scm>
<properties>
<java.version>21</java.version>
<java.version>20</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
<dependencies>
<dependency>
@ -57,6 +60,12 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 串口通信库 -->
<dependency>
<groupId>com.fazecast</groupId>
<artifactId>jSerialComm</artifactId>
<version>2.10.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
@ -64,7 +73,7 @@
<dependency>
<groupId>com.microsoft.onnxruntime</groupId>
<artifactId>onnxruntime</artifactId>
<version>1.19.0</version>
<version>1.16.0</version>
</dependency>
<dependency>
<groupId>com.sun.jna</groupId>
@ -90,7 +99,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<version>1.18.32</version>
</dependency>
<!-- SpringDoc OpenAPI 依赖替代SpringFox -->
<dependency>
@ -105,15 +114,15 @@
<version>5.8.16</version>
</dependency>
<dependency>
<groupId>MvCameraControlWrapper</groupId>
<artifactId>MvCameraControlWrapper</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/libs/MvCameraControlWrapper.jar</systemPath>
</dependency>
<dependency>
<groupId>MvCameraControlWrapper</groupId>
<artifactId>MvCameraControlWrapper</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/libs/MvCameraControlWrapper.jar</systemPath>
</dependency>
<dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.5.0</version>
@ -159,18 +168,44 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>21</source>
<target>21</target>
<source>20</source>
<target>20</target>
<encoding>UTF-8</encoding>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<version>1.18.32</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<!-- 复制libs目录下的DLL文件到target目录 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>copy-dll-files</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/libs</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}/libs</directory>
<includes>
<include>**/*.dll</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

@ -13,6 +13,7 @@ import java.util.Map;
public class AppConfig {
public String templatePath;
public String picPath;
public String picUrl;
public double threshold = 0.7;
public List<Camera> lxCamera;
@ -47,6 +48,7 @@ public class AppConfig {
String deepConvertConfPath;
String computeConfPath;
String calibratePath;
Integer imageSize;
}
@Data

@ -36,9 +36,9 @@ public class BoxCountController {
public BoxCountResponse countBoxes(@RequestBody BoxCountRequest request) {
log.info("收到箱子数量计算请求: {}", request);
String pcdFilePath = "D:\\data\\";
String cameraIp = appConfig.getLxCamera().getFirst().getIp();
String cameraCalibratePath = appConfig.getLxCamera().getFirst().getCalibratePath();
String pcdFilePath = appConfig.getPicPath();
String cameraIp = appConfig.getLxCamera().isEmpty() ? null : appConfig.getLxCamera().get(0).getIp();
String cameraCalibratePath = appConfig.getLxCamera().isEmpty() ? null : appConfig.getLxCamera().get(0).getCalibratePath();
request.setCameraCalibratePath(cameraCalibratePath);
CaptureResult captureResult = lxCameraService.capture(cameraIp,pcdFilePath);
request.setPcdFilePath(captureResult.getFilePath("pointCloud"));
@ -46,6 +46,7 @@ public class BoxCountController {
try {
BoxCountResult result = lxCameraService.countBoxes(request);
BoxCountResponse response = BoxCountResponse.fromResult(result);
response.setImagePath(captureResult.getFilePath("rgb").replace(appConfig.getPicPath(), appConfig.getPicUrl()));
log.info("箱子数量计算结果: {}", result.getSummary());

@ -1,11 +1,25 @@
package com.example.lxcameraapi.controller;
import ai.onnxruntime.OrtException;
import com.example.lxcameraapi.conf.AppConfig;
import com.example.lxcameraapi.service.IndustrialCamera.algorithm.ONNXServiceNew;
import com.example.lxcameraapi.service.IndustrialCamera.algorithm.PointCloudProcessor;
import com.example.lxcameraapi.service.IndustrialCamera.camera.hik.CaptureImageResponse;
import com.example.lxcameraapi.service.IndustrialCamera.camera.hik.ImageCaptureService;
import com.example.lxcameraapi.service.IndustrialCamera.camera.lx.config.BoxCountRequest;
import com.example.lxcameraapi.service.IndustrialCamera.camera.lx.config.BoxCountResponse;
import com.example.lxcameraapi.service.IndustrialCamera.pojo.Pojo;
import com.example.lxcameraapi.service.IndustrialCamera.yolo.BoundingBox;
import com.example.lxcameraapi.service.IndustrialCamera.yolo.ClassifyEntity;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
@RestController
@ -13,5 +27,76 @@ import jakarta.annotation.Resource;
public class CategoryController {
@Resource
AppConfig appConfig;
@Resource
private ImageCaptureService imageCaptureService;
@Resource
private ONNXServiceNew onnxServiceNew;
/**
*
*/
@PostMapping("/single")
public BoxCountResponse captureSingle(@RequestBody BoxCountRequest request) {
BoxCountResponse boxCountResponse = new BoxCountResponse();
try {
// 获取当前日期格式为 yyyy-MM-dd
LocalDateTime currentDate = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = currentDate.format(formatter);
String path = appConfig.getPicPath()+ formattedDate + "/" + request.getCameraId() + "/" + System.currentTimeMillis() + ".png";
String url = appConfig.getPicUrl() + formattedDate + "/" + request.getCameraId() + "/" + System.currentTimeMillis() + ".png";
log.info("开始拍照IP: {}, 路径: {}", request.getCameraId(), path);
String ip = null;
for (AppConfig.Camera camera : appConfig.getHikCamera()) {
if (camera.getId().equals(request.getCameraId()))
ip = camera.getIp();
}
boolean success = imageCaptureService.captureImage(ip, path);
List<BoundingBox> detectResults = onnxServiceNew.detect(path, null);
log.info("检测结果: {}", detectResults);
boxCountResponse.setImagePath(url);
if (!detectResults.isEmpty()){
// 统计每个 index 出现的次数
Map<Integer, Long> indexCountMap = detectResults.stream()
.collect(Collectors.groupingBy(
BoundingBox::getIndex,
Collectors.counting()
));
// 找到出现次数最多的 index
Map.Entry<Integer, Long> maxIndexEntry = indexCountMap.entrySet().stream()
.max(Map.Entry.comparingByValue())
.orElse(null);
if (maxIndexEntry != null) {
// 根据最多的 index 找到对应的 name
String mostCommonName = detectResults.stream()
.filter(box -> box.getIndex().equals(maxIndexEntry.getKey()))
.findFirst()
.map(BoundingBox::getName)
.orElse("Unknown");
boxCountResponse.setResult(mostCommonName);
log.info("检测结果统计 - 最常见的类别: {}, 出现次数: {}", mostCommonName, maxIndexEntry.getValue());
} else {
boxCountResponse.setResult("Unknown");
}
return boxCountResponse;
}
} catch (OrtException e) {
log.error("检测异常", e);
return boxCountResponse;
}
boxCountResponse.setResult("Unknown");
return boxCountResponse;
}
}

@ -0,0 +1,173 @@
package com.example.lxcameraapi.controller;
import com.example.lxcameraapi.service.IndustrialCamera.opencv.OpencvService;
import com.example.lxcameraapi.service.IndustrialCamera.yolo.BoundingBox;
import lombok.extern.slf4j.Slf4j;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
@Slf4j
@RestController
@RequestMapping("/draw")
public class DrawController {
@Resource
private OpencvService opencvService;
/**
*
*
* @param boxes
* @param sourcePath
* @param destPath
* @return
*/
@PostMapping("/box")
public String drawBox(@RequestBody List<BoundingBox> boxes,
@RequestParam String sourcePath,
@RequestParam String destPath) {
try {
log.info("开始绘制边界框,源路径: {}, 目标路径: {}, 框数量: {}",
sourcePath, destPath, boxes.size());
opencvService.drawBoundingBoxesOnImage(boxes, sourcePath, destPath);
return "绘制成功,已保存到: " + destPath;
} catch (Exception e) {
log.error("绘制边界框失败", e);
return "绘制失败: " + e.getMessage();
}
}
/**
*
*
* @param boxes
* @param sourcePath
* @param destPath
* @return
*/
@PostMapping("/legend")
public String drawLegend(@RequestBody List<BoundingBox> boxes,
@RequestParam String sourcePath,
@RequestParam String destPath) {
try {
log.info("开始绘制图例,源路径: {}, 目标路径: {}, 框数量: {}",
sourcePath, destPath, boxes.size());
opencvService.drawLegendOnImage(boxes, sourcePath, destPath);
return "绘制成功,已保存到: " + destPath;
} catch (Exception e) {
log.error("绘制图例失败", e);
return "绘制失败: " + e.getMessage();
}
}
/**
*
*
* @param boxes
* @param sourcePath
* @param destPath
* @return
*/
@PostMapping("/both")
public String drawBoth(@RequestBody List<BoundingBox> boxes,
@RequestParam String sourcePath,
@RequestParam String destPath) {
try {
log.info("开始绘制边界框和图例,源路径: {}, 目标路径: {}, 框数量: {}",
sourcePath, destPath, boxes.size());
// 读取图片
Mat image = Imgcodecs.imread(sourcePath);
if (image.empty()) {
return "读取图片失败: " + sourcePath;
}
// 绘制边界框
Mat result = opencvService.drawBoundingBoxesOnMat(image, boxes);
// 绘制图例
result = opencvService.drawLegendOnMat(result, boxes);
// 保存图片
Imgcodecs.imwrite(destPath, result);
return "绘制成功,已保存到: " + destPath;
} catch (Exception e) {
log.error("绘制失败", e);
return "绘制失败: " + e.getMessage();
}
}
/**
*
*
* @param sourcePath
* @param destPath
* @return
*/
@GetMapping("/example")
public String drawExample(@RequestParam String sourcePath,
@RequestParam(defaultValue = "D:\\data\\result.jpg") String destPath) {
try {
// 创建测试数据
List<BoundingBox> boxes = new ArrayList<>();
BoundingBox box1 = new BoundingBox();
box1.setName("箱子A");
box1.setConfidence(0.95);
box1.setX(100);
box1.setY(100);
box1.setW(200);
box1.setH(150);
boxes.add(box1);
BoundingBox box2 = new BoundingBox();
box2.setName("箱子B");
box2.setConfidence(0.88);
box2.setX(350);
box2.setY(200);
box2.setW(180);
box2.setH(120);
boxes.add(box2);
BoundingBox box3 = new BoundingBox();
box3.setName("箱子C");
box3.setConfidence(0.72);
box3.setX(150);
box2.setY(400);
box3.setW(160);
box3.setH(100);
boxes.add(box3);
log.info("示例绘制,框数量: {}", boxes.size());
// 绘制边界框和图例
Mat image = Imgcodecs.imread(sourcePath);
if (image.empty()) {
return "读取图片失败: " + sourcePath;
}
Mat result = opencvService.drawBoundingBoxesOnMat(image, boxes);
result = opencvService.drawLegendOnMat(result, boxes);
Imgcodecs.imwrite(destPath, result);
return "示例绘制成功,已保存到: " + destPath;
} catch (Exception e) {
log.error("示例绘制失败", e);
return "绘制失败: " + e.getMessage();
}
}
}

@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource;
import java.util.List;
import java.util.ArrayList;
/**
*
@ -160,4 +161,28 @@ public class HikCaptureController {
return CameraCheckResponse.failure("检查失败: " + e.getMessage());
}
}
/**
*
*/
@GetMapping("/batch")
public BatchCaptureResponse captureBatch(@RequestParam(defaultValue = "192.168.100.89") String ip,
@RequestParam(defaultValue = "D:\\data") String basePath,
@RequestParam(defaultValue = "100") int count) {
try {
log.info("开始连拍IP: {}, 路径: {}, 数量: {}", ip, basePath, count);
List<String> successPaths = imageCaptureService.captureBatch(ip, basePath, count);
if (!successPaths.isEmpty()) {
log.info("连拍完成IP: {}, 成功: {}/{}", ip, successPaths.size(), count);
return BatchCaptureResponse.success(ip, basePath, count, successPaths.size(), successPaths);
} else {
log.warn("连拍失败IP: {}, 路径: {}", ip, basePath);
return BatchCaptureResponse.failure("连拍失败,请检查相机是否已初始化", ip);
}
} catch (Exception e) {
log.error("连拍异常", e);
return BatchCaptureResponse.failure("连拍失败: " + e.getMessage(), ip);
}
}
}

@ -16,7 +16,7 @@ public class IdentifyService {
public static void main(String[] args) {
try {
// 加载二维码图片
File qrCodeImage = new File("E:\\work\\20250104153857.jpeg");
File qrCodeImage = new File("D:\\data\\QQ20260414-171933.jpg");
// 使用 ImageIO 读取图片
BufferedImage bufferedImage = ImageIO.read(qrCodeImage);

@ -5,9 +5,7 @@ import com.example.lxcameraapi.service.IndustrialCamera.yolo.BoundingBox;
import com.example.lxcameraapi.service.IndustrialCamera.yolo.ClassifyEntity;
import lombok.extern.slf4j.Slf4j;
import ai.onnxruntime.*;
import lombok.extern.slf4j.Slf4j;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.springframework.http.ResponseEntity;
@ -47,54 +45,36 @@ public class ONNXServiceNew {
private static final Map<String, AppConfig.YoloModelConfig> ortMap = new ConcurrentHashMap<>();
private static final OrtEnvironment environment = OrtEnvironment.getEnvironment();
public static void main(String[] args) {
System.load(new File(System.getProperty("user.dir")+"\\libs\\opencv\\opencv_java480.dll").getAbsolutePath());
ortMap.put("a", new AppConfig.YoloModelConfig());
ortMap.get("a").setImageSize(2048);
ortMap.get("a").setConfThreshold(0.5f);
ortMap.get("a").setNames(new String[]{"0"});
int imageSize = 1024;
String imagePath = "D:\\data\\1\\0153\\1_852df494-1f33-4962-b79b-11cc04e46bb7.jpg.jpg";
Mat img2 = Imgcodecs.imread(imagePath);;
String modelPath = "D:/git/测试/lxCameraApi/best.onnx";
List<String> name = Arrays.asList("0143", "0153", "0173", "0177", "0191", "0253", "0256", "0266", "0268", "0286", "0302", "0304", "0305", "0307", "0320", "0326", "0336", "0339", "0343", "0352", "0458", "0461", "0462", "0473", "0477", "0486", "0490", "0492", "0930", "1101", "1102", "1104", "1262", "1269", "1302", "1308", "1359", "1366", "1622", "1625", "1919", "1976", "20", "2165", "2188", "2210", "2224", "2445", "2476", "2611", "2730", "2731", "2910", "2914", "2943", "3027", "3028", "3029", "3212", "3226", "3344", "3501", "3509", "3538", "3725", "3741", "3751", "3754", "3763", "3766", "3808");
int imageSize = 2048;
String imagePath = "D:\\data\\1776157002220.png";
OrtEnvironment environment = OrtEnvironment.getEnvironment();
OrtSession.SessionOptions sessionOptions = new OrtSession.SessionOptions();
String modelPath = "D:\\data\\best.onnx";
// List<String> name = Arrays.asList("0143", "0153", "0173", "0177", "0191", "0253", "0256", "0266", "0268", "0286", "0302", "0304", "0305", "0307", "0320", "0326", "0336", "0339", "0343", "0352", "0458", "0461", "0462", "0473", "0477", "0486", "0490", "0492", "0930", "1101", "1102", "1104", "1262", "1269", "1302", "1308", "1359", "1366", "1622", "1625", "1919", "1976", "20", "2165", "2188", "2210", "2224", "2445", "2476", "2611", "2730", "2731", "2910", "2914", "2943", "3027", "3028", "3029", "3212", "3226", "3344", "3501", "3509", "3538", "3725", "3741", "3751", "3754", "3763", "3766", "3808");
OrtSession.SessionOptions sessionOptions = null;
// 使用gpu,需要本机按钻过cuda并修改pom.xml不安装也能运行本程序
// sessionOptions.addCUDA(0);
// 实际项目中视频识别必须开启GPU并且要防止队列堆积
OrtSession session = null;
ONNXServiceNew onnxServiceNew = new ONNXServiceNew();
try {
sessionOptions = new OrtSession.SessionOptions();
session = environment.createSession(modelPath, sessionOptions);
ortSessions.put("a", session);
List<BoundingBox> boxes = onnxServiceNew.detect(imagePath, "a");
OrtSession finalSession = session;
float[] imageData = new float[0];
try {
Mat image = resizeKeepAspectRatio(img2, 1024);
Imgcodecs.imwrite(imagePath+".jpg", Objects.requireNonNull(img2));
imageData = processImageFromURL(imagePath+".jpg", imageSize);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
// 构建输入张量
long[] shape = new long[]{1, 3, imageSize, imageSize}; // batch_size, channels, height, width
OnnxTensor inputTensor = null;
inputTensor = OnnxTensor.createTensor(OrtEnvironment.getEnvironment(), FloatBuffer.wrap(imageData), shape);
HashMap<String, OnnxTensor> stringOnnxTensorHashMap = new HashMap<>();
stringOnnxTensorHashMap.put(session.getInputInfo().keySet().iterator().next(), inputTensor);
// 执行推理
OrtSession.Result result = session.run(stringOnnxTensorHashMap);
// 获取第一个输出(大多数情况下只有一个输出)
float[] outputData = ((float[][]) result.get(0).getValue())[0];
// 获取最大概率对应的类别 ID
int predictedClassId = argmax(outputData, 0.5);
ClassifyEntity classifyEntity = new ClassifyEntity();
// classifyEntity.setIndex(predictedClassId);
// classifyEntity.setName(config.getNames()[predictedClassId]);
// classifyEntity.setConfidence(outputData[predictedClassId]);
@ -105,10 +85,15 @@ public class ONNXServiceNew {
// DrawBoundingBox.drawBoundingBoxesOnImage(imagePath, "D:\\data\\2024-04-24_08-55-42-492data.BMP.jpg", filteredDetections);
System.out.println(predictedClassId);
System.out.println(name.get(predictedClassId));
System.out.println(boxes);
// System.out.println(name.get(predictedClassId));
} catch (OrtException e) {
throw new RuntimeException(e);
} finally {
if (sessionOptions != null) {
sessionOptions.close();
}
}
// // 处理图像
@ -373,16 +358,17 @@ public class ONNXServiceNew {
@PostConstruct
public void initSession() {
OrtSession.SessionOptions sessionOptions = new OrtSession.SessionOptions();
// 使用gpu,需要本机按钻过cuda并修改pom.xml不安装也能运行本程序
// sessionOptions.addCUDA(0);
// 实际项目中视频识别必须开启GPU并且要防止队列堆积
// 大模型
OrtSession session = null;
OrtSession.SessionOptions sessionOptions = null;
try {
sessionOptions = new OrtSession.SessionOptions();
// 使用gpu,需要本机按钻过cuda并修改pom.xml不安装也能运行本程序
// sessionOptions.addCUDA(0);
// 实际项目中视频识别必须开启GPU并且要防止队列堆积
// 大模型
OrtSession session = null;
if (configProperties.getYoloModelConfig().getModelPath() != null) {
session = OrtEnvironment.getEnvironment().createSession(configProperties.getYoloModelConfig().getModelPath(), sessionOptions);
session = environment.createSession(configProperties.getYoloModelConfig().getModelPath(), sessionOptions);
OrtSession finalSession = session;
session.getInputInfo().keySet().forEach(x -> {
@ -407,6 +393,7 @@ public class ONNXServiceNew {
if (configProperties.getYoloModelConfig().getModelMap() != null) {
OrtSession.SessionOptions finalSessionOptions = sessionOptions;
configProperties.getYoloModelConfig().getModelMap().forEach((k, v) -> {
try {
// 判断v文件是否存在
@ -415,7 +402,7 @@ public class ONNXServiceNew {
return;
}
OrtSession session1 = OrtEnvironment.getEnvironment().createSession(v.getModelPath(), sessionOptions);
OrtSession session1 = environment.createSession(v.getModelPath(), finalSessionOptions);
session1.getInputInfo().keySet().forEach(x -> {
System.out.println("input name = " + x);
@ -441,6 +428,7 @@ public class ONNXServiceNew {
} catch (OrtException e) {
throw new RuntimeException(e);
}
// sessionOptions 不在这里关闭,它的生命周期应该与 Session 一致
}
private OrtSession getSession(String type) {
@ -479,33 +467,43 @@ public class ONNXServiceNew {
// 构建输入张量
long[] shape = new long[]{1, 3, config.getImageSize(), config.getImageSize()}; // batch_size, channels, height, width
OnnxTensor inputTensor = null;
inputTensor = OnnxTensor.createTensor(OrtEnvironment.getEnvironment(), FloatBuffer.wrap(imageData), shape);
OrtSession.Result result = null;
try {
inputTensor = OnnxTensor.createTensor(environment, FloatBuffer.wrap(imageData), shape);
HashMap<String, OnnxTensor> stringOnnxTensorHashMap = new HashMap<>();
stringOnnxTensorHashMap.put(session.getInputInfo().keySet().iterator().next(), inputTensor);
HashMap<String, OnnxTensor> stringOnnxTensorHashMap = new HashMap<>();
stringOnnxTensorHashMap.put(session.getInputInfo().keySet().iterator().next(), inputTensor);
// 执行推理
OrtSession.Result result = session.run(stringOnnxTensorHashMap);
// 获取第一个输出(大多数情况下只有一个输出)
float[] outputData = ((float[][]) result.get(0).getValue())[0];
List<ClassifyEntity> classifyEntities = new ArrayList<>();
for (int i = 0; i < outputData.length; i += 5) {
ClassifyEntity classifyEntity = new ClassifyEntity();
classifyEntity.setIndex(i);
classifyEntity.setName(config.getNames()[i]);
classifyEntity.setConfidence(outputData[i]);
// classifyEntity.setClassProb(String.format("%.4f", outputData[i]));
classifyEntities.add(classifyEntity);
}
// 执行推理
result = session.run(stringOnnxTensorHashMap);
// 获取第一个输出(大多数情况下只有一个输出)
float[] outputData = ((float[][]) result.get(0).getValue())[0];
List<ClassifyEntity> classifyEntities = new ArrayList<>();
for (int i = 0; i < outputData.length; i += 5) {
ClassifyEntity classifyEntity = new ClassifyEntity();
classifyEntity.setIndex(i);
classifyEntity.setName(config.getNames()[i]);
classifyEntity.setConfidence(outputData[i]);
// classifyEntity.setClassProb(String.format("%.4f", outputData[i]));
classifyEntities.add(classifyEntity);
}
// 获取最大概率对应的类别 ID
// int predictedClassId = argmax(outputData, configProperties.getYoloModelConfig().getConfThreshold());
// 获取最大概率对应的类别 ID
// int predictedClassId = argmax(outputData, configProperties.getYoloModelConfig().getConfThreshold());
// float[] output = (float[]) result.get(0).getValue();
// float[] output = (float[]) result.get(0).getValue();
// DrawBoundingBox.drawBoundingBoxesOnImage(imagePath, "D:\\data\\2024-04-24_08-55-42-492data.BMP.jpg", filteredDetections);
// DrawBoundingBox.drawBoundingBoxesOnImage(imagePath, "D:\\data\\2024-04-24_08-55-42-492data.BMP.jpg", filteredDetections);
return classifyEntities;
return classifyEntities;
} finally {
if (inputTensor != null) {
inputTensor.close();
}
if (result != null) {
result.close();
}
}
}
@ -531,35 +529,45 @@ public class ONNXServiceNew {
// 构建输入张量
long[] shape = new long[]{1, 3, config.getImageSize(), config.getImageSize()}; // batch_size, channels, height, width
OnnxTensor inputTensor = null;
inputTensor = OnnxTensor.createTensor(OrtEnvironment.getEnvironment(), FloatBuffer.wrap(imageData), shape);
HashMap<String, OnnxTensor> stringOnnxTensorHashMap = new HashMap<>();
stringOnnxTensorHashMap.put(session.getInputInfo().keySet().iterator().next(), inputTensor);
// 执行推理
OrtSession.Result result = session.run(stringOnnxTensorHashMap);
// 获取第一个输出(大多数情况下只有一个输出)
float[] outputData = ((float[][]) result.get(0).getValue())[0];
// 获取最大概率对应的类别 ID
int predictedClassId = argmax(outputData, configProperties.getYoloModelConfig().getConfThreshold());
ClassifyEntity classifyEntity = new ClassifyEntity();
classifyEntity.setIndex(predictedClassId);
if (predictedClassId!=-1){
log.info("识别模版:{}",config.getNames()[predictedClassId]);
classifyEntity.setName(config.getNames()[predictedClassId]);
classifyEntity.setConfidence(outputData[predictedClassId]);
}else {
log.info("未识别模版");
}
// classifyEntity.setClassProb(String.format("%.4f", outputData[i]));
OrtSession.Result result = null;
try {
inputTensor = OnnxTensor.createTensor(environment, FloatBuffer.wrap(imageData), shape);
HashMap<String, OnnxTensor> stringOnnxTensorHashMap = new HashMap<>();
stringOnnxTensorHashMap.put(session.getInputInfo().keySet().iterator().next(), inputTensor);
// float[] output = (float[]) result.get(0).getValue();
// 执行推理
result = session.run(stringOnnxTensorHashMap);
// 获取第一个输出(大多数情况下只有一个输出)
float[] outputData = ((float[][]) result.get(0).getValue())[0];
// DrawBoundingBox.drawBoundingBoxesOnImage(imagePath, "D:\\data\\2024-04-24_08-55-42-492data.BMP.jpg", filteredDetections);
// 获取最大概率对应的类别 ID
int predictedClassId = argmax(outputData, configProperties.getYoloModelConfig().getConfThreshold());
ClassifyEntity classifyEntity = new ClassifyEntity();
classifyEntity.setIndex(predictedClassId);
if (predictedClassId!=-1){
log.info("识别模版:{}",config.getNames()[predictedClassId]);
classifyEntity.setName(config.getNames()[predictedClassId]);
classifyEntity.setConfidence(outputData[predictedClassId]);
}else {
log.info("未识别模版");
}
// classifyEntity.setClassProb(String.format("%.4f", outputData[i]));
// float[] output = (float[]) result.get(0).getValue();
// DrawBoundingBox.drawBoundingBoxesOnImage(imagePath, "D:\\data\\2024-04-24_08-55-42-492data.BMP.jpg", filteredDetections);
return classifyEntity;
return classifyEntity;
} finally {
if (inputTensor != null) {
inputTensor.close();
}
if (result != null) {
result.close();
}
}
}
/**
@ -585,29 +593,38 @@ public class ONNXServiceNew {
// 构建输入张量
long[] shape = new long[]{1, 3, config.getImageSize(), config.getImageSize()}; // batch_size, channels, height, width
OnnxTensor inputTensor = null;
inputTensor = OnnxTensor.createTensor(OrtEnvironment.getEnvironment(), FloatBuffer.wrap(imageData), shape);
HashMap<String, OnnxTensor> stringOnnxTensorHashMap = new HashMap<>();
stringOnnxTensorHashMap.put(session.getInputInfo().keySet().iterator().next(), inputTensor);
OrtSession.Result result = null;
try {
inputTensor = OnnxTensor.createTensor(environment, FloatBuffer.wrap(imageData), shape);
// 执行推理
OrtSession.Result result = session.run(stringOnnxTensorHashMap);
HashMap<String, OnnxTensor> stringOnnxTensorHashMap = new HashMap<>();
stringOnnxTensorHashMap.put(session.getInputInfo().keySet().iterator().next(), inputTensor);
float[][] outputData = ((float[][][]) result.get(0).getValue())[0];
// 执行推理
result = session.run(stringOnnxTensorHashMap);
outputData = transposeMatrix(outputData);
float[][] outputData = ((float[][][]) result.get(0).getValue())[0];
// float[] output = (float[]) result.get(0).getValue();
outputData = transposeMatrix(outputData);
// 解析推理结果
List<BoundingBox> detections = parseOutput(outputData, config.getConfThreshold(), config);
// float[] output = (float[]) result.get(0).getValue();
List<BoundingBox> filteredDetections = nonMaxSuppression(detections, 0.5f); // IoU 阈值设为 0.5
// 解析推理结果
List<BoundingBox> detections = parseOutput(outputData, config.getConfThreshold(), config);
System.out.println(filteredDetections);
return filteredDetections;
List<BoundingBox> filteredDetections = nonMaxSuppression(detections, 0.5f); // IoU 阈值设为 0.5
System.out.println(filteredDetections);
return filteredDetections;
} finally {
if (inputTensor != null) {
inputTensor.close();
}
if (result != null) {
result.close();
}
}
}
private static List<BoundingBox> parseOutput(float[][] outputData, double confThreshold, AppConfig.YoloModelConfig config) {
@ -618,6 +635,12 @@ public class ONNXServiceNew {
float[] conditionalProbabilities = Arrays.copyOfRange(bbox, 4, bbox.length);
int label = argmax(conditionalProbabilities, confThreshold);
// 如果没有找到满足阈值的类别,跳过这个检测框
if (label == -1) {
continue;
}
float conf = conditionalProbabilities[label];
bbox[4] = conf;
@ -662,4 +685,23 @@ public class ONNXServiceNew {
}
return arg;
}
/**
*
*/
@jakarta.annotation.PreDestroy
public void destroy() {
log.info("开始清理 ONNX 资源...");
for (Map.Entry<String, OrtSession> entry : ortSessions.entrySet()) {
try {
entry.getValue().close();
log.info("已关闭 Session: {}", entry.getKey());
} catch (OrtException e) {
log.error("关闭 Session 时出错: {}", entry.getKey(), e);
}
}
ortSessions.clear();
ortMap.clear();
log.info("ONNX 资源清理完成");
}
}

@ -0,0 +1,106 @@
package com.example.lxcameraapi.service.IndustrialCamera.camera.hik;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
*
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BatchCaptureResponse {
/**
*
*/
private boolean success;
/**
*
*/
private String message;
/**
* 0
*/
private int errorCode;
/**
* IP
*/
private String ip;
/**
*
*/
private String basePath;
/**
*
*/
private int totalCount;
/**
*
*/
private int successCount;
/**
*
*/
private List<String> successPaths;
/**
*
*/
private long timestamp;
/**
*
*/
public static BatchCaptureResponse success(String ip, String basePath, int totalCount,
int successCount, List<String> successPaths) {
return BatchCaptureResponse.builder()
.success(true)
.message("连拍完成")
.errorCode(0)
.ip(ip)
.basePath(basePath)
.totalCount(totalCount)
.successCount(successCount)
.successPaths(successPaths)
.timestamp(System.currentTimeMillis())
.build();
}
/**
*
*/
public static BatchCaptureResponse failure(String message) {
return BatchCaptureResponse.builder()
.success(false)
.message(message)
.errorCode(-1)
.timestamp(System.currentTimeMillis())
.build();
}
/**
* IP
*/
public static BatchCaptureResponse failure(String message, String ip) {
return BatchCaptureResponse.builder()
.success(false)
.message(message)
.errorCode(-1)
.ip(ip)
.timestamp(System.currentTimeMillis())
.build();
}
}

@ -295,36 +295,41 @@ public class ImageCaptureService {
* @param savePath
* @return
*/
private boolean saveImageAsJpeg(Handle hCamera, byte[] pData,
private boolean saveImageAsJpeg(Handle hCamera, byte[] pData,
MV_FRAME_OUT_INFO stImageInfo, String savePath) {
try {
// 计算输出缓冲区大小 (RGB格式每像素3字节)
int imageLen = stImageInfo.width * stImageInfo.height * 3;
byte[] imageBuffer = new byte[imageLen];
// 设置保存参数
MV_SAVE_IMAGE_PARAM stSaveParam = new MV_SAVE_IMAGE_PARAM();
stSaveParam.width = stImageInfo.width;
stSaveParam.height = stImageInfo.height;
stSaveParam.data = pData;
stSaveParam.dataLen = stImageInfo.frameLen;
stSaveParam.pixelType = stImageInfo.pixelType;
stSaveParam.imageBuffer = imageBuffer;
stSaveParam.imageType = MV_SAVE_IAMGE_TYPE.MV_Image_Jpeg;
stSaveParam.methodValue = 0; // 0-最近邻插值1-双线性插值2-Hamilton
stSaveParam.jpgQuality = 85; // JPG质量(50-99]
// 转换图像格式
int nRet = MvCameraControl.MV_CC_SaveImage(hCamera, stSaveParam);
// 确保目录存在
java.io.File file = new java.io.File(savePath);
java.io.File parentDir = file.getParentFile();
if (parentDir != null && !parentDir.exists()) {
boolean created = parentDir.mkdirs();
if (created) {
log.info("创建目录: {}", parentDir.getAbsolutePath());
}
}
// 使用 MV_CC_SaveImageToFileEx 直接保存到文件(避免手动管理缓冲区)
MV_SAVE_IMAGE_TO_FILE_PARAM_EX stSaveFileParam = new MV_SAVE_IMAGE_TO_FILE_PARAM_EX();
stSaveFileParam.imageType = MV_SAVE_IAMGE_TYPE.MV_Image_Jpeg;
stSaveFileParam.pixelType = stImageInfo.pixelType;
// 使用 ExtendWidth 和 ExtendHeight而不是 width 和 height
stSaveFileParam.width = stImageInfo.ExtendWidth;
stSaveFileParam.height = stImageInfo.ExtendHeight;
stSaveFileParam.dataLen = stImageInfo.frameLen;
stSaveFileParam.data = pData;
stSaveFileParam.methodValue = 1; // 1-双线性插值
stSaveFileParam.jpgQuality = 85; // JPG质量(50-99]
stSaveFileParam.imagePath = savePath;
// 直接保存到文件
int nRet = MvCameraControl.MV_CC_SaveImageToFileEx(hCamera, stSaveFileParam);
if (MV_OK != nRet) {
log.error("图像格式转换失败errcode: [0x{}]", Integer.toHexString(nRet));
log.error("图像保存失败errcode: [0x{}]", Integer.toHexString(nRet));
return false;
}
// 保存到文件
saveDataToFile(imageBuffer, imageLen, savePath);
log.info("图像保存成功: {}", savePath);
return true;
} catch (Exception e) {
@ -333,37 +338,6 @@ public class ImageCaptureService {
}
}
/**
*
* @param data
* @param dataSize
* @param fileName
*/
private void saveDataToFile(byte[] data, int dataSize, String fileName) {
java.io.FileOutputStream os = null;
try {
// 确保目录存在
java.io.File file = new java.io.File(fileName);
java.io.File parentDir = file.getParentFile();
if (parentDir != null && !parentDir.exists()) {
parentDir.mkdirs();
}
os = new java.io.FileOutputStream(fileName);
os.write(data, 0, dataSize);
} catch (Exception e) {
log.error("保存文件失败: {}", fileName, e);
} finally {
if (os != null) {
try {
os.close();
} catch (Exception e) {
log.error("关闭文件流异常", e);
}
}
}
}
/**
*
* @param stDeviceList
@ -430,4 +404,73 @@ public class ImageCaptureService {
public boolean isCameraInitialized(String ip) {
return handleMap.containsKey(ip);
}
/**
*
* @param ip IP
* @param basePath
* @param count
* @return
*/
public List<String> captureBatch(String ip, String basePath, int count) {
List<String> successPaths = new ArrayList<>();
if (!isSdkInitialized) {
log.error("SDK未初始化");
return successPaths;
}
// 获取相机句柄
Handle hCamera = handleMap.get(ip);
if (hCamera == null) {
log.error("相机 {} 未初始化请先调用init方法", ip);
return successPaths;
}
log.info("开始连拍,相机: {}, 数量: {}, 基础路径: {}", ip, count, basePath);
// 确保基础路径存在
java.io.File baseDir = new java.io.File(basePath);
if (!baseDir.exists()) {
boolean created = baseDir.mkdirs();
if (created) {
log.info("创建基础目录: {}", baseDir.getAbsolutePath());
}
}
for (int i = 0; i < count; i++) {
try {
// 生成保存路径
String timestamp = String.valueOf(System.currentTimeMillis());
String fileName = String.format("%s_%04d.jpg", timestamp, i);
String savePath = basePath + java.io.File.separator + fileName;
// 调用单次拍照
boolean success = captureImage(ip, savePath);
if (success) {
successPaths.add(savePath);
log.info("连拍进度: {}/{}, 保存: {}", i + 1, count, fileName);
} else {
log.warn("连拍失败: {}/{}, 路径: {}", i + 1, count, savePath);
}
// 添加短暂延迟,避免相机过快响应
if (i < count - 1) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
break;
}
}
} catch (Exception e) {
log.error("连拍异常: {}/{}", i + 1, count, e);
}
}
log.info("连拍完成,相机: {}, 成功: {}/{}", ip, successPaths.size(), count);
return successPaths;
}
}

@ -20,7 +20,7 @@ public class ImageSave
public static void main(String[] args)
{
int nRet = MV_OK;
int camIndex = -1;
int camIndex = 1;
ArrayList<MV_CC_DEVICE_INFO> stDeviceList = null;
@ -344,7 +344,7 @@ public class ImageSave
}
// Choose a device to operate
int camIndex = 0;
int camIndex = 1;
while (true)
{

@ -241,7 +241,6 @@ public class BoxCountCalculator {
}
BoxCountResult result = BoxCountResult.success(request.getPcdFilePath());
result.setFloorHeight(request.getFloorHeight());
result.setBoxDimensions(new double[]{
request.getBoxLength(),
request.getBoxWidth(),
@ -260,6 +259,8 @@ public class BoxCountCalculator {
// 2. 创建PcdPojo
PcdPojo pojo = createPcdPojo(request);
result.setFloorHeight(pojo.getFloorHeight());
// 3. 按层过滤点云
Map<Integer, List<double[]>> layerPointsMap = filterPointsByLayer(
points,

@ -154,15 +154,6 @@ public class LxCameraServiceImpl implements LxCameraService {
log.info("设备 {} 初始化成功", sn);
logDeviceInfo(info);
// 启动流
result = instance.DcStartStream(handleRef.getValue());
if (result == 0) {
deviceInfo.streamStarted = true;
log.info("设备 {} 流启动成功", sn);
} else {
log.warn("设备 {} 流启动失败,错误码: {}", sn, result);
}
// 设置命令码
result = instance.DcSetCmd(handleRef.getValue(), 5001);
if (result == 0 || result == 25) {
@ -171,6 +162,10 @@ public class LxCameraServiceImpl implements LxCameraService {
log.warn("设备 {} 命令码设置失败,错误码: {}", sn, result);
}
// 不自动启动流,改为按需启动
deviceInfo.streamStarted = false;
log.info("设备 {} 初始化完成,流未启动(按需启动)", sn);
return handleRef;
} else {
log.error("设备 {} 初始化失败,错误码: {}", sn, result);
@ -231,10 +226,17 @@ public class LxCameraServiceImpl implements LxCameraService {
try {
log.info("相机 {} 第 {} 次拍照尝试", cameraSn, retryCount);
// 如果是重试,先停止之前的流
if (retryCount > 1) {
stopStreamIfNeeded(cameraSn, instance);
}
// 获取设备句柄
PointerByReference handleRef = getHandle(cameraSn, type, instance, config);
if (handleRef == null) {
log.warn("相机 {} 第 {} 次获取句柄失败", cameraSn, retryCount);
// 停止流(如果之前启动过)
stopStreamIfNeeded(cameraSn, instance);
result = CaptureResult.failure(cameraSn, -3, "获取句柄失败");
result.withRetryCount(retryCount);
@ -244,12 +246,18 @@ public class LxCameraServiceImpl implements LxCameraService {
continue;
}
// 检查流状态
// 检查流状态,如果未启动则启动流
DeviceInfo deviceInfo = handleMap.get(cameraSn);
if (deviceInfo != null && !deviceInfo.streamStarted) {
log.warn("相机 {} 流未启动,重新初始化", cameraSn);
boolean reconnectSuccess = reconnect(cameraSn);
if (!reconnectSuccess) {
log.info("相机 {} 流未启动,现在启动流", cameraSn);
int startStreamResult = instance.DcStartStream(deviceInfo.handleRef.getValue());
if (startStreamResult == 0) {
deviceInfo.streamStarted = true;
log.info("相机 {} 流启动成功", cameraSn);
} else {
log.error("相机 {} 流启动失败,错误码: {}", cameraSn, startStreamResult);
// 停止流(如果之前启动过)
stopStreamIfNeeded(cameraSn, instance);
result = CaptureResult.failure(cameraSn, -4, "流启动失败");
result.withRetryCount(retryCount);
if (retryCount < config.getMaxCaptureRetries()) {
@ -257,7 +265,6 @@ public class LxCameraServiceImpl implements LxCameraService {
}
continue;
}
deviceInfo = handleMap.get(cameraSn);
}
// 生成日期和时间戳
@ -270,6 +277,8 @@ public class LxCameraServiceImpl implements LxCameraService {
Files.createDirectories(basePath1);
} catch (Exception e) {
log.error("相机 {} 创建目录失败: {}", cameraSn, e.getMessage());
// 停止流(如果之前启动过)
stopStreamIfNeeded(cameraSn, instance);
result = CaptureResult.failure(cameraSn, -2, "创建目录失败");
result.withRetryCount(retryCount);
if (retryCount < config.getMaxCaptureRetries()) {
@ -347,6 +356,8 @@ public class LxCameraServiceImpl implements LxCameraService {
log.info("相机 {} 点云保存成功: {}", cameraSn, pointCloudPath);
} else {
log.warn("相机 {} 点云保存失败", cameraSn);
// 停止流
stopStreamIfNeeded(cameraSn, instance);
result = CaptureResult.failure(cameraSn, -1, "点云保存失败");
result.withRetryCount(retryCount);
if (retryCount < config.getMaxCaptureRetries()) {
@ -359,6 +370,18 @@ public class LxCameraServiceImpl implements LxCameraService {
// 拍照成功
log.info("相机 {} 第 {} 次拍照成功,保存文件数: {}", cameraSn, retryCount, result.getFilePaths().size());
result.withRetryCount(retryCount);
// 停止流,减少网络负载
if (deviceInfo != null && deviceInfo.streamStarted) {
int stopStreamResult = instance.DcStopStream(deviceInfo.handleRef.getValue());
if (stopStreamResult == 0) {
deviceInfo.streamStarted = false;
log.info("相机 {} 流已停止", cameraSn);
} else {
log.warn("相机 {} 流停止失败,错误码: {}", cameraSn, stopStreamResult);
}
}
return result;
} catch (InterruptedException e) {
@ -369,6 +392,8 @@ public class LxCameraServiceImpl implements LxCameraService {
return result;
} catch (Exception e) {
log.error("相机 {} 第 {} 次拍照发生异常", cameraSn, retryCount, e);
// 停止流(如果之前启动过)
stopStreamIfNeeded(cameraSn, instance);
result = CaptureResult.failure(cameraSn, -5, "拍照异常: " + e.getMessage());
result.withRetryCount(retryCount);
@ -442,6 +467,31 @@ public class LxCameraServiceImpl implements LxCameraService {
}
}
/**
*
* @param cameraSn
* @param instance DcLibrary
*/
private void stopStreamIfNeeded(String cameraSn, DcLibrary instance) {
DeviceInfo deviceInfo = handleMap.get(cameraSn);
if (deviceInfo != null && deviceInfo.streamStarted && deviceInfo.handleRef != null) {
Pointer handle = deviceInfo.handleRef.getValue();
if (handle != null) {
try {
int stopStreamResult = instance.DcStopStream(handle);
if (stopStreamResult == 0) {
deviceInfo.streamStarted = false;
log.info("相机 {} 流已停止", cameraSn);
} else {
log.warn("相机 {} 流停止失败,错误码: {}", cameraSn, stopStreamResult);
}
} catch (Exception e) {
log.error("相机 {} 停止流时发生异常", cameraSn, e);
}
}
}
}
@Override
public boolean reconnect(String cameraSn) {
log.info("开始重连相机: SN={}", cameraSn);
@ -477,17 +527,15 @@ public class LxCameraServiceImpl implements LxCameraService {
handleMap.put(cameraSn, deviceInfo);
log.info("相机 {} 重连成功", cameraSn);
result = instance.DcStartStream(handleRef.getValue());
if (result == 0) {
deviceInfo.streamStarted = true;
log.info("相机 {} 重连后流启动成功", cameraSn);
}
result = instance.DcSetCmd(handleRef.getValue(), 5001);
if (result == 0 || result == 25) {
log.info("相机 {} 重连后命令码设置成功", cameraSn);
}
// 不自动启动流,改为按需启动
deviceInfo.streamStarted = false;
log.info("相机 {} 重连完成,流未启动(按需启动)", cameraSn);
return true;
} else {
log.error("相机 {} 重连失败,错误码: {}", cameraSn, result);
@ -554,8 +602,8 @@ public class LxCameraServiceImpl implements LxCameraService {
@Override
public BoxCountResult countBoxes(BoxCountRequest request) {
log.info("收到计算箱子数量请求: pcdFilePath={}, floorHeight={}, boxSize={}x{}x{}",
request.getPcdFilePath(), request.getFloorHeight(),
log.info("收到计算箱子数量请求: pcdFilePath={} boxSize={}x{}x{}",
request.getPcdFilePath(),
request.getBoxLength(), request.getBoxWidth(), request.getBoxHeight());
try {

@ -81,6 +81,9 @@ public class BoxCountResponse {
*/
private String errorMessage;
private String imagePath;
private String result;
/**
* BoxCountResult
*/
@ -97,6 +100,7 @@ public class BoxCountResponse {
.calculationTime(result.getCalculationTime())
.floorHeight(result.getFloorHeight())
.boxDimensions(result.getBoxDimensions())
.result(String.valueOf(result.getTotalBoxCount()))
.stackType(result.getStackType());
if (!result.isSuccess()) {

@ -0,0 +1,227 @@
package com.example.lxcameraapi.service.IndustrialCamera.opencv;
import com.example.lxcameraapi.service.IndustrialCamera.yolo.BoundingBox;
import lombok.extern.slf4j.Slf4j;
import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* OpenCV
*/
@Slf4j
@Service
public class OpencvService {
// 颜色配置 (BGR格式)
private static final Scalar BOX_COLOR = new Scalar(0, 255, 0); // 绿色边框
private static final Scalar TEXT_COLOR = new Scalar(255, 255, 255); // 白色文字
private static final Scalar BG_COLOR = new Scalar(0, 0, 0); // 黑色背景
// 字体配置
private static final int FONT_FACE = Imgproc.FONT_HERSHEY_SIMPLEX;
private static final double FONT_SCALE = 0.6;
private static final int THICKNESS = 2;
/**
*
*
* @param boxes
* @param sourcePath
* @param destPath
*/
public void drawBoundingBoxesOnImage(List<BoundingBox> boxes, String sourcePath, String destPath) {
try {
// 读取图片
Mat image = Imgcodecs.imread(sourcePath);
if (image.empty()) {
log.error("读取图片失败: {}", sourcePath);
return;
}
if (boxes == null || boxes.isEmpty()) {
log.warn("边界框列表为空");
// 保存原图
Imgcodecs.imwrite(destPath, image);
return;
}
// 绘制每个边界框
for (BoundingBox box : boxes) {
drawBox(image, box);
}
// 保存图片
Imgcodecs.imwrite(destPath, image);
log.info("图片已保存: {}", destPath);
} catch (Exception e) {
log.error("绘制边界框失败", e);
}
}
/**
* 使Mat
*
* @param image Mat
* @param boxes
* @return Mat
*/
public Mat drawBoundingBoxesOnMat(Mat image, List<BoundingBox> boxes) {
if (image == null || image.empty()) {
log.error("图像对象为空");
return image;
}
if (boxes == null || boxes.isEmpty()) {
log.warn("边界框列表为空");
return image;
}
// 绘制每个边界框
for (BoundingBox box : boxes) {
drawBox(image, box);
}
return image;
}
/**
*
*
* @param boxes
* @param sourcePath
* @param destPath
*/
public void drawLegendOnImage(List<BoundingBox> boxes, String sourcePath, String destPath) {
try {
// 读取图片
Mat image = Imgcodecs.imread(sourcePath);
if (image.empty()) {
log.error("读取图片失败: {}", sourcePath);
return;
}
// 绘制图例
drawLegend(image, boxes);
// 保存图片
Imgcodecs.imwrite(destPath, image);
log.info("图片已保存: {}", destPath);
} catch (Exception e) {
log.error("绘制图例失败", e);
}
}
/**
* 使Mat
*
* @param image Mat
* @param boxes
* @return Mat
*/
public Mat drawLegendOnMat(Mat image, List<BoundingBox> boxes) {
if (image == null || image.empty()) {
log.error("图像对象为空");
return image;
}
// 绘制图例
drawLegend(image, boxes);
return image;
}
/**
*
*
* @param image Mat
* @param box
*/
private void drawBox(Mat image, BoundingBox box) {
if (box == null) {
return;
}
int x = (int) box.getX();
int y = (int) box.getY();
int w = (int) box.getW();
int h = (int) box.getH();
// 绘制矩形框
Point topLeft = new Point(x, y);
Point bottomRight = new Point(x + w, y + h);
Imgproc.rectangle(image, topLeft, bottomRight, BOX_COLOR, THICKNESS);
// 准备标签文本
String label = String.format("%s: %.2f", box.getName(), box.getConfidence());
// 计算文本大小
int[] baseline = new int[1];
Size textSize = Imgproc.getTextSize(label, FONT_FACE, FONT_SCALE, THICKNESS, baseline);
// 绘制标签背景
Point labelTopLeft = new Point(x, y - textSize.height - 10);
Point labelBottomRight = new Point(x + textSize.width, y);
Imgproc.rectangle(image, labelTopLeft, labelBottomRight, BG_COLOR, -1); // -1 表示填充
// 绘制标签文本
Point textOrg = new Point(x, y - 5);
Imgproc.putText(image, label, textOrg, FONT_FACE, FONT_SCALE, TEXT_COLOR, THICKNESS);
}
/**
*
*
* @param image Mat
* @param boxes
*/
private void drawLegend(Mat image, List<BoundingBox> boxes) {
if (boxes == null || boxes.isEmpty()) {
return;
}
// 按置信度从大到小排序
List<BoundingBox> sortedBoxes = new ArrayList<>(boxes);
sortedBoxes.sort(Comparator.comparingDouble(BoundingBox::getConfidence).reversed());
// 计算图例参数
int[] baseline = new int[1];
Size textSize = Imgproc.getTextSize("Text", FONT_FACE, FONT_SCALE, THICKNESS, baseline);
int lineHeight = (int) textSize.height + 15;
int margin = 10;
int startY = margin + (int) textSize.height;
// 绘制背景区域(半透明黑色)
int maxTextWidth = 0;
for (BoundingBox box : sortedBoxes) {
String label = String.format("%s: %.2f", box.getName(), box.getConfidence());
Size labelSize = Imgproc.getTextSize(label, FONT_FACE, FONT_SCALE, THICKNESS, baseline);
maxTextWidth = Math.max(maxTextWidth, (int) labelSize.width);
}
int bgHeight = sortedBoxes.size() * lineHeight + margin * 2;
int bgWidth = maxTextWidth + margin * 2;
Mat overlay = image.clone();
Rect bgRect = new Rect(0, 0, bgWidth, bgHeight);
Imgproc.rectangle(overlay, bgRect.tl(), bgRect.br(), BG_COLOR, -1);
Core.addWeighted(overlay, 0.7, image, 0.3, 0, image);
// 绘制每行标签
for (int i = 0; i < sortedBoxes.size(); i++) {
BoundingBox box = sortedBoxes.get(i);
String label = String.format("%s: %.2f", box.getName(), box.getConfidence());
Point textOrg = new Point(margin, startY + i * lineHeight);
Imgproc.putText(image, label, textOrg, FONT_FACE, FONT_SCALE, TEXT_COLOR, THICKNESS);
}
}
}

@ -10,4 +10,6 @@ public class Pojo {
private String determinePath;
//结果
private Boolean result;
private String cameraId;
private String category;
}

@ -0,0 +1,303 @@
/*
* SLAMTEC LIDAR
* Ultra Simple Data Grabber Demo App
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
* Copyright (c) 2014 - 2020 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <string.h>
#include "sl_lidar.h"
#include "sl_lidar_driver.h"
#ifndef _countof
#define _countof(_Array) (int)(sizeof(_Array) / sizeof(_Array[0]))
#endif
#ifdef _WIN32
#include <Windows.h>
#define delay(x) ::Sleep(x)
#else
#include <unistd.h>
static inline void delay(sl_word_size_t ms){
while (ms>=1000){
usleep(1000*1000);
ms-=1000;
};
if (ms!=0)
usleep(ms*1000);
}
#endif
using namespace sl;
void print_usage(int argc, const char * argv[])
{
printf("Usage:\n"
" For serial channel\n %s --channel --serial <com port> [baudrate]\n"
" The baudrate used by different models is as follows:\n"
" A1(115200),A2M7(256000),A2M8(115200),A2M12(256000),"
"A3(256000),S1(256000),S2(1000000),S3(1000000)\n"
" For udp channel\n %s --channel --udp <ipaddr> [port NO.]\n"
" The T1 default ipaddr is 192.168.11.2,and the port NO.is 8089. Please refer to the datasheet for details.\n"
, argv[0], argv[0]);
}
bool checkSLAMTECLIDARHealth(ILidarDriver * drv)
{
sl_result op_result;
sl_lidar_response_device_health_t healthinfo;
op_result = drv->getHealth(healthinfo);
if (SL_IS_OK(op_result)) { // the macro IS_OK is the preperred way to judge whether the operation is succeed.
printf("SLAMTEC Lidar health status : %d\n", healthinfo.status);
if (healthinfo.status == SL_LIDAR_STATUS_ERROR) {
fprintf(stderr, "Error, slamtec lidar internal error detected. Please reboot the device to retry.\n");
// enable the following code if you want slamtec lidar to be reboot by software
// drv->reset();
return false;
} else {
return true;
}
} else {
fprintf(stderr, "Error, cannot retrieve the lidar health code: %x\n", op_result);
return false;
}
}
bool ctrl_c_pressed;
void ctrlc(int)
{
ctrl_c_pressed = true;
}
int main(int argc, const char * argv[]) {
const char * opt_is_channel = NULL;
const char * opt_channel = NULL;
const char * opt_channel_param_first = NULL;
sl_u32 opt_channel_param_second = 0;
sl_u32 baudrateArray[2] = {115200, 256000};
sl_result op_result;
int opt_channel_type = CHANNEL_TYPE_SERIALPORT;
bool useArgcBaudrate = false;
IChannel* _channel;
printf("Ultra simple LIDAR data grabber for SLAMTEC LIDAR.\n"
"Version: %s\n", SL_LIDAR_SDK_VERSION);
if (argc>1)
{
opt_is_channel = argv[1];
}
else
{
print_usage(argc, argv);
return -1;
}
if(strcmp(opt_is_channel, "--channel")==0){
opt_channel = argv[2];
if(strcmp(opt_channel, "-s")==0||strcmp(opt_channel, "--serial")==0)
{
// read serial port from the command line...
opt_channel_param_first = argv[3];// or set to a fixed value: e.g. "com3"
// read baud rate from the command line if specified...
if (argc>4) opt_channel_param_second = strtoul(argv[4], NULL, 10);
useArgcBaudrate = true;
}
else if(strcmp(opt_channel, "-u")==0||strcmp(opt_channel, "--udp")==0)
{
// read ip addr from the command line...
opt_channel_param_first = argv[3];//or set to a fixed value: e.g. "192.168.11.2"
if (argc>4) opt_channel_param_second = strtoul(argv[4], NULL, 10);//e.g. "8089"
opt_channel_type = CHANNEL_TYPE_UDP;
}
else
{
print_usage(argc, argv);
return -1;
}
}
else
{
print_usage(argc, argv);
return -1;
}
if(opt_channel_type == CHANNEL_TYPE_SERIALPORT)
{
if (!opt_channel_param_first) {
#ifdef _WIN32
// use default com port
opt_channel_param_first = "\\\\.\\com3";
#elif __APPLE__
opt_channel_param_first = "/dev/tty.SLAB_USBtoUART";
#else
opt_channel_param_first = "/dev/ttyUSB0";
#endif
}
}
// create the driver instance
ILidarDriver * drv = *createLidarDriver();
if (!drv) {
fprintf(stderr, "insufficent memory, exit\n");
exit(-2);
}
sl_lidar_response_device_info_t devinfo;
bool connectSuccess = false;
if(opt_channel_type == CHANNEL_TYPE_SERIALPORT){
if(useArgcBaudrate){
_channel = (*createSerialPortChannel(opt_channel_param_first, opt_channel_param_second));
if (SL_IS_OK((drv)->connect(_channel))) {
op_result = drv->getDeviceInfo(devinfo);
if (SL_IS_OK(op_result))
{
connectSuccess = true;
}
else{
delete drv;
drv = NULL;
}
}
}
else{
size_t baudRateArraySize = (sizeof(baudrateArray))/ (sizeof(baudrateArray[0]));
for(size_t i = 0; i < baudRateArraySize; ++i)
{
_channel = (*createSerialPortChannel(opt_channel_param_first, baudrateArray[i]));
if (SL_IS_OK((drv)->connect(_channel))) {
op_result = drv->getDeviceInfo(devinfo);
if (SL_IS_OK(op_result))
{
connectSuccess = true;
break;
}
else{
delete drv;
drv = NULL;
}
}
}
}
}
else if(opt_channel_type == CHANNEL_TYPE_UDP){
_channel = *createUdpChannel(opt_channel_param_first, opt_channel_param_second);
if (SL_IS_OK((drv)->connect(_channel))) {
op_result = drv->getDeviceInfo(devinfo);
if (SL_IS_OK(op_result))
{
connectSuccess = true;
}
else{
delete drv;
drv = NULL;
}
}
}
if (!connectSuccess) {
(opt_channel_type == CHANNEL_TYPE_SERIALPORT)?
(fprintf(stderr, "Error, cannot bind to the specified serial port %s.\n"
, opt_channel_param_first)):(fprintf(stderr, "Error, cannot connect to the specified ip addr %s.\n"
, opt_channel_param_first));
goto on_finished;
}
// print out the device serial number, firmware and hardware version number..
printf("SLAMTEC LIDAR S/N: ");
for (int pos = 0; pos < 16 ;++pos) {
printf("%02X", devinfo.serialnum[pos]);
}
printf("\n"
"Firmware Ver: %d.%02d\n"
"Hardware Rev: %d\n"
, devinfo.firmware_version>>8
, devinfo.firmware_version & 0xFF
, (int)devinfo.hardware_version);
// check health...
if (!checkSLAMTECLIDARHealth(drv)) {
goto on_finished;
}
signal(SIGINT, ctrlc);
if(opt_channel_type == CHANNEL_TYPE_SERIALPORT)
drv->setMotorSpeed();
// start scan...
drv->startScan(0,1);
// fetech result and print it out...
while (1) {
sl_lidar_response_measurement_node_hq_t nodes[8192];
size_t count = _countof(nodes);
op_result = drv->grabScanDataHq(nodes, count);
if (SL_IS_OK(op_result)) {
drv->ascendScanData(nodes, count);
for (int pos = 0; pos < (int)count ; ++pos) {
printf("%s theta: %03.2f Dist: %08.2f Q: %d \n",
(nodes[pos].flag & SL_LIDAR_RESP_HQ_FLAG_SYNCBIT) ?"S ":" ",
(nodes[pos].angle_z_q14 * 90.f) / 16384.f,
nodes[pos].dist_mm_q2/4.0f,
nodes[pos].quality >> SL_LIDAR_RESP_MEASUREMENT_QUALITY_SHIFT);
}
}
if (ctrl_c_pressed){
break;
}
}
drv->stop();
delay(200);
if(opt_channel_type == CHANNEL_TYPE_SERIALPORT)
drv->setMotorSpeed(0);
// done!
on_finished:
if(drv) {
delete drv;
drv = NULL;
}
return 0;
}

@ -20,15 +20,18 @@ lxCamera:
# 1左2右
direction: 1
# 图片保存路径
savePath: "D://go/lxCamera/1"
# 校准文件路径
calibratePath: "D://data/cj.json"
# 品规配置文件
configPath: "E://go/lxCamera/conf"
# 切割配置。浅货位的配置若切割后个数多与500个则认为有个数
convertConfPath: "E://pz.json"
# 深度切割配置深货位配置若切割后个数多与500个则认为有个数
DeepConvertConfPath: "E://pz.json"
#两台相机
hikCamera:
- id: 1
ip: 192.168.100.89
imageSize: 640
swagger:
enabled: true
@ -48,11 +51,15 @@ deleteFile:
path:
- "D://go/deleteFile"
day: 7
picPath: "D:/data/media/"
picUrl: "http://127.0.0.1:9012/pic/"
yoloModelConfig:
# 模型地址
modelPath: "D:/git/测试/lxCameraApi/best.onnx"
modelPath: "D:/PycharmProjects/yolo/runs/detect/train22/weights/best.onnx"
# 图片大小
imgSize: 640
# 置信度
confThreshold: 0.5
names: ['0143','0153','0173','0177','0191','0253','0256','0266','0268','0286','0302','0304','0305','0307','0320','0326','0336','0339','0343','0352','0458','0461','0462','0473','0477','0486','0490','0492','0930','1101','1102','1104','1262','1269','1302','1308','1359','1366','1622','1625','1919','1976','20','2165','2188','2210','2224','2445','2476','2611','2730','2731','2910','2914','2943','3027','3028','3029','3212','3226','3344','3501','3509','3538','3725','3741','3751','3754','3763','3766','3808']

@ -0,0 +1,7 @@
@echo off
chcp 65001
echo Starting LxCameraApi...
echo If you see DLL loading errors, please install Visual C++ Redistributable:
echo https://aka.ms/vs/17/release/vc_redist.x64.exe
echo.
java -Djava.library.path=./libs -jar LxCameraApi-1.0.1-SNAPSHOT.jar
Loading…
Cancel
Save