如何在armhf架构设备上安装OpenCV samples库并使其正常工作
armhf架构设备OpenCV samples模块配置方案
问题说明
你需要的cv.samples.findFile方法并非独立的samples库提供,而是OpenCV编译安装时可选导出的Python绑定功能,你当前无法调用是因为默认安装的OpenCV没有开启该模块的导出配置。
方法一:apt预编译包配置(无需编译)
适用于你通过apt包管理器安装OpenCV的场景:
- 先安装armhf架构适配的OpenCV samples包:
sudo apt update && sudo apt install opencv-samples python3-opencv - 配置samples数据集搜索路径,在
~/.bashrc末尾添加以下内容:export OPENCV_SAMPLES_DATA_PATH=/opencv/samples/data - 执行
source ~/.bashrc使环境变量生效,重启Python进程后即可正常调用cv.samples.findFile方法。
方法二:源码编译开启samples绑定
如果你是自行编译安装OpenCV,只需要在cmake阶段添加两个参数即可:
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D BUILD_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ # 其余你原有编译参数保持不变 ..
编译安装完成后,cv.samples模块会自动集成到Python的OpenCV库中,无需额外配置即可直接调用相关方法。
临时兼容方案
如果不想修改现有OpenCV安装配置,可以直接自定义方法替代cv.samples.findFile的功能,效果完全一致:
import os import cv2 as cv def custom_find_file(fn): sample_data_dir = "/opencv/samples/data" target_path = os.path.join(sample_data_dir, fn) if os.path.exists(target_path): return target_path raise FileNotFoundError(f"样本文件{fn}不存在") # 调用时替换原有方法即可 # fn = cv.samples.findFile(fn) fn = custom_find_file(fn) img = cv.imread(fn, cv.IMREAD_GRAYSCALE)
内容的提问来源于stack exchange,提问作者De Funct
相关产品推荐
相关产品推荐

