• 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

  • 相关阅读:
    全局 id生成对比
    element+vue table表格全部数据和已选数据联动
    服务器产生丢包的原因有哪些
    掌握Node Version Manager(nvm):跨平台Node.js版本管理
    MySQL limit使用及超大分页问题解决
    【Python开发】一文详解Flask-Login
    Palantir的“英伟达时刻”即将到来
    Kotlin中reified 关键字
    es: java->count统计、distinct去重
    RocketMQ详解(一):RocketMQ架构详解
  • 原文地址:https://blog.csdn.net/haronchou/article/details/132978974