You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Jetson Nano上通过MATLAB部署SegNet-Predict时OpenCV头文件缺失报错求助

解决Jetson Nano上MATLAB Codegen找不到OpenCV头文件的问题

错误核心

执行MATLAB代码生成命令codegen('-config ', cfg, 'segnet_predict', '-args', {img},'-report');时,编译阶段出现如下错误:

STDERR: /home/remoteBuildDir/MATLAB_ws/R2021b/C/Users/DELL/Documents/MATLAB/segnet_deploy/main.cu:10:10: fatal error: opencv2/opencv.hpp: No such file or directory
#include "opencv2/opencv.hpp"
^~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [main.o] Error 1
make: *** Waiting for unfinished jobs....

STDOUT: make: Entering directory '/home/remoteBuildDir/MATLAB_ws/R2021b/C/Users/DELL/Documents/MATLAB/segnet_deploy/codegen/exe/segnet_predict'


??? Build error: C++ compiler produced errors. See the Build Log for further details.

本质是MATLAB代码生成配置未正确指向Jetson Nano上的OpenCV头文件路径,以下是具体排查修复步骤:


  • 确认Jetson Nano上OpenCV的实际路径
    Jetson Nano通常通过JetPack预装OpenCV,先定位头文件和库文件位置:

    • 执行命令查找头文件根目录:
      find /usr -name "opencv.hpp"
      
      输出示例:/usr/include/opencv4/opencv2/opencv.hpp,则头文件根目录为/usr/include/opencv4
    • 执行命令确认库文件路径:
      pkg-config --libs opencv4
      
      输出示例:-L/usr/lib/aarch64-linux-gnu -lopencv_core -lopencv_imgproc ...,则库路径为/usr/lib/aarch64-linux-gnu
  • 修改MATLAB代码生成配置(cfg)
    在执行codegen命令前,需为配置对象添加OpenCV的头文件、库路径及链接参数:

    • 若使用GPU代码配置(Jetson为CUDA设备,推荐):
      % 初始化GPU可执行文件配置
      cfg = coder.gpuConfig('exe');
      % 添加OpenCV头文件路径
      cfg.CustomInclude = [cfg.CustomInclude, '/usr/include/opencv4'];
      % 添加OpenCV链接库(根据实际需要调整库列表)
      cfg.CustomLibrary = [cfg.CustomLibrary, 'opencv_core opencv_imgproc opencv_imgcodecs opencv_highgui'];
      % 添加库文件路径
      cfg.CustomLinkFlags = [cfg.CustomLinkFlags, '-L/usr/lib/aarch64-linux-gnu'];
      % 启用远程编译(针对Jetson远程部署场景)
      cfg.Hardware = coder.hardware('NVIDIA Jetson');
      cfg.Hardware.BuildDir = '/home/remoteBuildDir/MATLAB_ws/R2021b/C/Users/DELL/Documents/MATLAB/segnet_deploy';
      
    • 若使用普通C++配置:
      cfg = coder.config('exe');
      cfg.CustomInclude = [cfg.CustomInclude, '/usr/include/opencv4'];
      cfg.CustomLibrary = [cfg.CustomLibrary, 'opencv_core opencv_imgproc'];
      cfg.CustomLinkFlags = [cfg.CustomLinkFlags, '-L/usr/lib/aarch64-linux-gnu'];
      
  • 验证远程编译环境变量(针对远程部署场景)
    由于错误路径显示为远程编译目录,需确保Jetson端的环境变量包含OpenCV路径:

    • 在Jetson Nano终端执行:
      export CPLUS_INCLUDE_PATH=/usr/include/opencv4:$CPLUS_INCLUDE_PATH
      export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:$LD_LIBRARY_PATH
      
    • 重启MATLAB与Jetson的远程连接,确保环境变量生效
  • 验证OpenCV本身的可用性
    在Jetson Nano上编译测试程序,确认OpenCV安装正常:

    • 创建test_opencv.cpp文件:
      #include <opencv2/opencv.hpp>
      int main() {
          cv::Mat test_img(100,100,CV_8UC3);
          return 0;
      }
      
    • 编译命令:
      g++ test_opencv.cpp -o test_opencv `pkg-config --cflags --libs opencv4`
      
    • 若能成功生成可执行文件,说明OpenCV本身无问题,问题集中在MATLAB配置

内容的提问来源于stack exchange,提问作者Abuzer javed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:40:25