• Opencv 4.5.5 linux contrib编译


    1. # 0. 将contrib文件夹移动到opencv文件夹中去
    2. mkdir build
    3. cd build
    4. # 1. cmake生成配置文件,其中OPENCV_EXTRA_MODULES_PATH的路径中写明contrib模块的路径
    5. cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.5/modules ..
    6. # 2. 编译和生成
    7. make -j16
    8. # 3. 安装
    9. sudo make install # 将库拷贝到/usr/local中
    10. # 4. 生成配置文件
    11. sudo gedit /etc/bash.bashrc # 文末添加以下内容
    12. PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    13. export PKG_CONFIG_PATH
    14. # 5.向系统更新配置文件
    15. source /etc/bash.bashrc
    16. # 6. 生成opencv.conf文件,就可以利用pkg-config链接到库了
    17. sudo gedit /etc/ld.so.conf.d/opencv.conf # 添加库的路径: /usr/local/lib
    18. # 7. 更新pkg-config文件
    19. sudo ldconfig
    20. sudo updatedb
    21. # 8.测试是否安装好了
    22. pkg-config --modversion opencv
    23. pkg-config --libs opencv
    24. 出现以下内容,说明安装成功了!
    25. -L/usr/local/lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core
    26. # 9. 测试程序
    27. /home/helen/code/C++code/yolov5_zhr/main$ g++ main.cpp -o main `pkg-config --cflags --libs opencv`
    28. /usr/bin/ld: 找不到 -lopencv_shape
    29. /usr/bin/ld: 找不到 -lopencv_superres
    30. /usr/bin/ld: 找不到 -lopencv_videostab
    31. collect2: error: ld returned 1 exit status

    出现的bug为没有编译contrib文件夹,重新编译contrib后再试:编译成功!

    1. ./main: error while loading shared libraries: libopencv_highgui.so.405: cannot open shared object file: No such file or directory
    2. # 解决办法
    3. sudo ldconfig # 更新一下库文件,因为刚刚才执行了 make install

    main.cpp的代码如下: 

    1. #include
    2. #include
    3. #include
    4. int main(){
    5. // printf("hello world\n");
    6. cv::Mat img;
    7. img = cv::imread("/home/helen/dataset/boat/FN-frames/0a19.jpg");
    8. if(img.empty()){
    9. std::cout << "fail to read img" << std::endl;
    10. }
    11. cv::namedWindow("Image");
    12. cv::imshow("Image", img);
    13. cv::waitKey(0);
    14. return 0;
    15. }
    16. // g++ main.cpp -o main 编译并生成C++文件 -o是目标文件
    17. // 执行main文件 "/home/helen/code/C++code/yolov5_zhr/"main

  • 相关阅读:
    预训练模型的多任务主动学习
    iOS App怎么上架到苹果TestFlight?
    Imaris 卡退,是不是缓存盘没有设置好?
    【C++】异常
    挂件板死机刷固件
    【汇编】栈及栈操作的实现
    kmemleak内存泄漏检测源码分析-1
    luogu p3047题解
    MySQL进阶(日志)——MySQL的日志 & bin log (归档日志) & 事务日志redo log(重做日志) & undo log(回滚日志)
    (windows ssh) windows开启ssh服务,并通过ssh登录该win主机
  • 原文地址:https://blog.csdn.net/haronchou/article/details/132978974