NEXUS 3.X 通过BLOBS全量或部分 备份和迁移

本文详细介绍了如何在NEXUS 3.x上进行Blob存储库的全量和部分备份,以及如何在另一台机器上进行迁移。包括在迁出端备份databases和blobs,以及在迁入端导入这些备份,并提供了解压缩和重启NEXUS服务的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:这里的E:\nexus-3.15.0-01-win64\nexus-3.15.0-01\是我安装NEXUS的位置,更换为相应的安装目录即可

 

步骤一、在迁出机器,备份databases 

1、在管理界面System-Tasks界面,点击“Create task”

2、选择Admin-Export databases for backup

3、填写好名称,保存路径,Task frequency可以选择Manual,保存之后,立即执行一次
 

步骤二、在迁出机器,备份blobs 

1、进入 E:\nexus-3.15.0-01-win64\sonatype-work\nexus3\blobs

2、将所有文件夹打包

 

步骤三、在迁入机器,导入databases

1、停止NEXUS服务

    cd E:\nexus-3.15.0-01-win64\nexus-3.15.0-01\bin
    nexus /stop

2、删除 E:\nexus-3.15.0-01-win64\sonatype-work\nexus3\db 下的如下目录

    accesslog
    analytics
    audit
    component
    config
    security

<think>我们正在讨论OpenMV的`find_blobs`方法,具体问题是缺少位置参数`threshold`。 根据OpenMV官方文档,`find_blobs`方法的正确调用方式如下: 方法签名: ```python image.find_blobs(thresholds, [invert=False, roi, x_stride=2, y_stride=1, area_threshold=10, pixels_threshold=10, merge=False, margin=0, threshold_cb=None, merge_cb=None]) ``` 注意:`thresholds`是必须的位置参数,它可以是: - 一个元组的列表,例如:`thresholds = [(l_min, l_max, a_min, a_max, b_min, b_max)]` (对于LAB色彩空间) - 者一个简单的灰度阈值元组,例如:`thresholds = (min_gray, max_gray)` 问题分析:错误提示“missing positional argument threshold”意味着在调用`find_blobs`时没有提供必需的`thresholds`参数。 解决方案: 1. 确保在调用`find_blobs`时至少传递了一个阈值参数。 2. 检查阈值参数的格式是否正确。 示例代码(来自引用[1]的上下文): 引用[1]中提到:“将图像转换为灰度图像,并进行二值化处理。使用img_binary.find_blobs()函数查找图像中的区域。” 注意:在二值化图像上,我们可以使用灰度阈值。例如,如果二值化后目标物体是白色(255),背景是黑色(0),那么我们可以设置阈值范围(150, 255)来寻找白色区域。 正确调用示例: ```python # 假设我们已经有了一个二值化图像img_binary # 设置阈值,寻找白色区域(灰度值在150到255之间) blobs = img_binary.find_blobs([(150, 255)], invert=False) ``` 如果错误是因为没有传递任何参数,那么必须添加阈值参数。 另外,注意在灰度图像上,阈值参数应该是一个包含一个元组的列表(即使只有一个阈值范围),即`[(min, max)]`。 常见错误: - 直接调用`find_blobs()`而不传递任何参数。 - 传递单个元组而没有放入列表中:应该用`[(min, max)]`而不是`(min, max)`。 修正后的代码示例(基于引用[1]的流程): ```python # 初始化摄像头 sensor.reset() sensor.set_pixformat(sensor.GRAYSCALE) # 设置为灰度图像 sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time=2000) # 等待设置生效 while(True): img = sensor.snapshot() # 获取图像 # 二值化处理:这里假设我们想找黑色区域(在灰度图中,黑色是0,白色是255) # 注意:在灰度图中,我们可以使用一个阈值范围来定义黑色 # 例如,将灰度值在0到50之间的视为黑色 img_binary = img.binary([(0, 50)]) # 这将创建一个二值图像,黑色区域变为白色(因为binary函数默认将阈值内的设为白色,其他为黑色),除非使用invert参数 # 注意:binary函数返回的是二值图像,其中在阈值范围内的像素变为白色(255),其他为黑色(0) # 如果我们想找原始图像中的黑色区域(在二值图像中变成了白色),那么我们可以用: # 阈值设置为(150,255)来寻找二值图像中的白色区域(即原图的黑色区域) blobs = img_binary.find_blobs([(150, 255)], invert=False) # 者,如果我们想直接寻找原图中的黑色区域,也可以不进行二值化,而是直接在灰度图上用(0,50)的阈值寻找 # 但是注意,find_blobs要求传入的阈值列表,所以: # blobs = img.find_blobs([(0,50)], invert=False) # 这样会寻找原图中灰度值在0到50之间的区域(黑色) # 遍历找到的blob for blob in blobs: # 根据面积筛选 if blob.area() > 100: # 面积阈值 img.draw_rectangle(blob.rect(), color=(255,0,0)) # 用红色矩形框出 img.draw_cross(blob.cx(), blob.cy(), color=(0,255,0)) # 在中心画绿色十字 ``` 注意:上述代码中的二值化步骤可能不是必须的,因为`find_blobs`可以直接在灰度图上使用。但是,如果先进行二值化,那么二值图像上只有黑白两色,我们通常用阈值(150,255)来寻找白色区域。 总结:错误的原因是调用`find_blobs`时缺少了必需的阈值参数,请确保在调用时至少传递了一个阈值列表(即使只有一个阈值范围,也要放在列表中)。 如果问题仍然存在,请检查OpenMV固件版本,并参考对应版本的文档。 相关问题: 1. 如何设置多个阈值来检测不同颜色的物体? 2. 在OpenMV中,`find_blobs`方法的`invert`参数有什么作用? 3. 如何优化`find_blobs`的性能(通过调整步长、区域阈值等参数)?</think># OpenMV `binary.find_blobs()` 方法缺少位置参数 `threshold` 的解决方案 在使用 OpenMV 的 `find_blobs()` 方法时,出现 "missing positional argument threshold" 错误是因为该方法需要至少一个阈值参数作为输入。让我们分析问题并提供完整解决方案: ## 问题原因分析 `find_blobs()` 方法需要传递一个 **阈值列表** 作为第一个必需参数。引用[1]中提到的使用方式是正确的,但实际调用时常见错误包括: - 完省略阈值参数 - 传递单个阈值而非阈值列表 - 阈值格式不正确 ## 正确使用方法 ### 基本语法结构 ```python blobs = img.find_blobs(thresholds, [invert=False, roi, ...]) ``` ### 完整代码示例 ```python import sensor, image, time # 初始化摄像头 sensor.reset() sensor.set_pixformat(sensor.GRAYSCALE) # sensor.RGB565 sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time=2000) # 等待感光度稳定 clock = time.clock() while(True): clock.tick() img = sensor.snapshot() # 正确使用find_blobs - 传递阈值列表 blobs = img.find_blobs([(0, 100)], # 灰度阈值范围 (min, max) invert=False, # 是否反转阈值 area_threshold=100, # 最小区域面积 pixels_threshold=100) # 最小像素数 # 处理检测到的blob for blob in blobs: # 绘制矩形框 img.draw_rectangle(blob.rect(), color=(255, 0, 0)) # 绘制中心十字 img.draw_cross(blob.cx(), blob.cy(), color=(0, 255, 0)) # 输出检测结果 print("检测到区域: 面积={}, 中心位置=({},{})".format( blob.area(), blob.cx(), blob.cy())) print(clock.fps()) ``` ## 关键参数说明 1. **`thresholds` (必需)**: - 格式:列表包含一个多个阈值元组 - 灰度图像:`[(min_gray, max_gray)]` - LAB色彩空间:`[(min_l, max_l, min_a, max_a, min_b, max_b)]` 2. **常用可选参数**: - `invert=False`:反转阈值(寻找阈值外的区域) - `roi=(x, y, w, h)`:设置感兴趣区域 - `x_stride=2`/`y_stride=1`:像素扫描步长(影响性能) - `area_threshold=10`:最小区域面积 - `pixels_threshold=10`:最小像素数 - `merge=False`:是否合并相邻blob ## 常见错误及修复 1. **错误:完省略阈值** ```python blobs = img.find_blobs() # 错误!缺少必需参数 ``` **修复**:添加阈值列表 ```python blobs = img.find_blobs([(0, 100)]) # 正确 ``` 2. **错误:传递单个元组而非列表** ```python blobs = img.find_blobs((0, 100)) # 错误!应该是列表包含元组 ``` **修复**:将阈值放入列表中 ```python blobs = img.find_blobs([(0, 100)]) # 正确 ``` 3. **错误:色彩空间不匹配** ```python # 当图像为RGB时使用灰度阈值 blobs = img.find_blobs([(0, 100)]) # 可能无法检测 ``` **修复**:使用LAB色彩空间阈值 ```python # 检测红色区域示例 blobs = img.find_blobs([(0, 100, 40, 127, -128, 127)]) ``` ## 高级使用技巧 ### 多阈值检测 ```python # 同时检测黑色白色区域 blobs = img.find_blobs([(0, 50), (200, 255)]) ``` ### 性能优化 ```python # 增大步长提高性能 blobs = img.find_blobs([(0, 100)], x_stride=5, # 水平方向每5像素扫描一次 y_stride=5) # 垂直方向每5像素扫描一次 ``` ### 区域筛选 ```python # 只检测大面积的区域 large_blobs = [b for b in blobs if b.area() > 500] ``` ## 实际应用场景参考[^1] 1. 着陆标志识别:检测特定形状颜色的标记 2. 工业检测:识别产品缺陷区域 3. 机器人导航:识别路径标记 4. 颜色追踪:追踪特定颜色的物体
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值