YOLO+Opencv安装出现/usr/bin/ld: cannot find -lippicv 报错解决办法

本文解决了YOLO和Opencv联合安装过程中出现的cannotfind-lippicv错误。通过将libippicv.a文件复制到/usr/local/lib/目录下,可以成功避免此问题。

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

YOLO+Opencv安装出现/usr/bin/ld: cannot find -lippicv 报错解决办法

最近要使用yolo和opencv,不知道什么原因在编译make all -j8 的时候总是出现 cannot find -lippicv 的报错信息。解决办法如下:

    cd opencv/build/3rdparty/ippicv/ippicv_lnx/lib/intel64
    或者
    cd opencv/3rdparty/ippicv/unpack/ippicv_lnx/lib/intel64   
  然后执行
    sudo cp libippicv.a /usr/local/lib/
  

再执行make all -j8就不报错了,解决问题。
出现这种问题的原因是在安装opencv的时候没有将lippicv这个文件装到/usr/local/lib/里面去。上面两句cd 可能也不是正确的路径,总之是要找到libippicv.a这个东西,然后复制到/usr/local/lib/里面去就可以了。
问题解决源自这个链接https://github.com/pjreddie/darknet/issues/290

关键点数量: 146, 描述符数量: 146 /home/dxinl/slam+yolo/./models/common.py:894: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead. with amp.autocast(autocast): BOW计算错误: OpenCV(4.11.0) /io/opencv/modules/features2d/src/bagofwords.cpp:205: error: (-215:Assertion failed) queryIdx == (int)i in function 'compute' 关键点数量: 140, 描述符数量: 140 /home/dxinl/slam+yolo/./models/common.py:894: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead. with amp.autocast(autocast): BOW计算错误: OpenCV(4.11.0) /io/opencv/modules/features2d/src/bagofwords.cpp:205: error: (-215:Assertion failed) queryIdx == (int)i in function 'compute' 关键点数量: 127, 描述符数量: 127 /home/dxinl/slam+yolo/./models/common.py:894: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead. with amp.autocast(autocast): BOW计算错误: OpenCV(4.11.0) /io/opencv/modules/features2d/src/bagofwords.cpp:205: error: (-215:Assertion failed) queryIdx == (int)i in function 'compute' 关键点数量: 134, 描述符数量: 134 /home/dxinl/slam+yolo/./models/common.py:894: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead. with amp.autocast(autocast): BOW计算错误: OpenCV(4.11.0) /io/opencv/modules/features2d/src/bagofwords.cpp:205: error: (-215:Assertion failed) queryIdx == (int)i in function 'compute' 关键点数量: 140, 描述符数量: 140 当前地图包含 4132 个点 /home/dxinl/slam+yolo/./models/common.py:894: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead. with amp.autocast(autocast): BOW计算错误: OpenCV(4.11.0) /io/opencv/modules/features2d/src/bagofwords.cpp:205: error: (-215:Assertion failed) queryIdx == (int)i in function 'compute' 关键点数量: 142, 描述符数量: 142 /home/dxinl/slam+yolo/./models/common.py:894: FutureWarning: `torch.cuda.amp.autocast(args..
最新发布
03-17
<think>好的,我现在需要解决用户提到的两个问题:OpenCV BOW计算时的断言错误和PyTorch中autocast的弃用警告。让我一个一个来思考。 首先,关于OpenCV的BagOfWords在调用compute方法时出现的断言错误,错误信息是&ldquo;queryIdx == (int)i”。根据经验,这可能与特征点的索引不匹配有关。在BOW训练过程中,每个描述符应该对应正确的图像索引。用户可能在准备训练数据时,没有正确地将每个描述符与其对应的图像ID关联起来。例如,如果使用cv2.BOWTrainer.add方法时,应该确保每个描述符数组都来自同一图像,并且多次调用add来添加不同图像的数据。如果一次性添加了所有描述符而没有正确分组,就会导致queryIdx不匹配。我需要确认用户是否正确构建了训练数据,每个描述符数组对应一个图像,并且图像索引正确。 接下来是PyTorch中的autocast弃用警告。用户可能在使用torch.cuda.amp.autocast时启用了async参数,而该参数在较新版本中已被弃用。例如,旧代码可能是这样写的:with torch.cuda.amp.autocast(async=True):。从PyTorch 1.10开始,async参数改为non_blocking,所以需要将async=True改为non_blocking=True。或者直接移除该参数,因为默认行为可能已经改变。需要检查用户的代码中是否有设置async=True的地方,并修改为正确的参数。此外,还要确认用户安装的PyTorch版本是否过旧,建议升级到稳定版本,如1.10或更高,以确保兼容性。 然后,我需要验证这些解决方案是否正确。对于OpenCV的问题,确保每个图像的特征描述符单独添加,并正确关联image_id。例如,使用循环遍历每个图像的特征,逐个添加到BOW训练器中。对于PyTorch的问题,检查autocast上下文管理器中的参数,并更新代码。同时,建议用户检查CUDA和PyTorch的版本兼容性,可能需要更新或重新安装正确的版本。 最后,需要确保回答中引用了用户提供的参考内容。例如,在解决PyTorch安装问题时,引用用户提供的conda安装命令,但可能需要调整版本号。同时,如果用户需要编译OpenCV,可以参考提供的指南链接。但用户当前的问题更多是代码层面的调整,而不是安装编译问题,所以引用可能有限,但需要适当提及。</think>### OpenCV BOW计算错误解决方案 **问题分析:** `cv::BOWTrainer::compute`出现`queryIdx == (int)i`断言错误,通常由特征描述符与图像索引不匹配引起。在BOW训练过程中,每个描述符必须正确关联其所属图像的索引[^1]。 **解决步骤:** 1. **检查特征提取逻辑** 确保每个图像的描述符单独存储,使用循环结构逐个添加: ```python bow_trainer = cv2.BOWKMeansTrainer(cluster_count) for img in image_set: kp, des = feature_detector.detectAndCompute(img, None) if des is not None: bow_trainer.add(des) # 每个图像的描述符单独添加 ``` 2. **验证聚类过程** 使用标准化方法获取词汇表: ```python vocabulary = bow_trainer.cluster() ``` 3. **检查特征匹配器配置** 确保`cv2.BOWImgDescriptorExtractor`正确配置: ```python bow_extractor = cv2.BOWImgDescriptorExtractor(feature_extractor, descriptor_matcher) bow_extractor.setVocabulary(vocabulary) ``` ### PyTorch autocast弃用警告解决方案 **问题分析:** `torch.cuda.amp.autocast`的`async`参数在PyTorch 1.10+版本中已弃用,需改为`non_blocking`参数[^2]。 **修改方案:** 1. **参数更新** ```python # 旧版写法 (已弃用) with torch.cuda.amp.autocast(async=True): # 前向计算 # 新版写法 with torch.cuda.amp.autocast(enabled=True): # 移除async参数 # 前向计算 ``` 2. **环境升级建议** 建议使用conda更新PyTorch环境: ```bash conda install pytorch=1.13.0 torchvision cudatoolkit=11.6 -c pytorch ``` 3. **CUDA兼容性验证** 检查CUDA与PyTorch版本对应关系: ```python print(torch.__version__) print(torch.cuda.is_available()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值