导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    Yuzuki Lizard V851S开发板 –编译 OPENCV 4.5.4

    V Series
    2
    2
    1569
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • bayche
      bayche LV 6 最后由 编辑

      • 本文转载自:https://forums.100ask.net/t/topic/3028
        (群友Blev提供)

      1.主要参考教程地址,实际操作结合多个教程。

      https://blog.csdn.net/Flag_ing/article/details/109508374

      2.放从OPENCV RELEASE 下载的解压出来的文件,里面还要放对应版本的contribute 解压文件

      /root/opencv-4.5.4

      /root/opencv-4.5.4/build6

      4380b3cf1073d156882edfae8bee420cee3f6268_2_690x108.png 8ab0518a84f6882613d06e28f694a4249cd8b5fc.png b4feccafe75d72c1e6154a40e64cb27b1d60f9bb.png

      在这里要找到三个地方进行修改;

      1、勾选上BUILD_opencv_world
      2、在CMAKE_BUILD_TYPE后填上:RELEASE

      3、在OPENCV_EXTRA_MODULES_PATH后填上opencv-contrib/modules的路径

      比如我是:/home/wsx/opencv/opencv/opencv_contrib/modules
      完成之后再次点击Configure按钮,稍等片刻,之后在点击Generate按钮
      (所有红色报错,全部关掉即可)

      交叉编译工具链地址:

      /root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin/arm-openwrt-linux-gcc
      
      /root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin/arm-openwrt-linux-g++
      
      /root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/bin/
      

      f0c93d14fb1b2c6f5eb02064bd0789d9f944d09a.png

      注意:

      • 取消WITH_GTK
        取消WITH_TIFF , PNG ,JPG
        所有红色报错的功能,都不要勾选,或者自己搞定。

      • 如果点击configure提示处理器未识别
        那么执行vi /root/opencv-4.5.4/cmake/OpenCVDetectCXXCompiler.cmake
        可以在第47行,写入 set(CMAKE_SYSTEM_PROCESSOR arm)
        (一定会提示,一定要这么做。)

      d1731a06afdd77ed4cdd71306b390fae7508d12e.jpeg

      4、 如果要修改默认的install文件夹,要在点击Generate之前修改,修改方式如下
      vi /root/opencv-4.5.4/build6/CMakeCache.txt
      修改CMAKE_INSTALL_PREFIX:PATH=/root/opencv-4.5.4/build6

      5、进入目录
      /root/opencv-4.5.4/build6/

      执行 cmake .
      执行 export STAGING_DIR=/root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin
      执行 make -j20

      (看自己的线程数,设定)

      cee978248008e49be79eea9e044c207e9417100a_2_690x250.jpeg

      到此编译成功

      6、编译出来的文件
      动态库文件 /usr/local/lib/
      文件库 /usr/local/include/opencv4/

      注意下面步骤中成功编译出来的固件,是不含动态库的,所以还需要编译时所用的动态库,同步复制到板子的/usr/lib/ 里面去。否则报错找不到动态库

      7、编译一个opencv example

      首先 执行

      export STAGING_DIR=/root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin
      

      任意目录下创建3个文件

      1.CMakeLists.txt

      cmake_minimum_required(VERSION 3.10)
      
      set (ARM_LINUX_GCC_PATH /root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin/) # 改成你的路径
      set (CMAKE_C_COMPILER ${ARM_LINUX_GCC_PATH}arm-openwrt-linux-gcc)
      set (CMAKE_CXX_COMPILER ${ARM_LINUX_GCC_PATH}arm-openwrt-linux-g++)
      
      project(Test_OpenCV_Mobile)
      set(CMAKE_CXX_STANDARD 11)
      set(OpenCV_DIR "/root/opencv-4.5.4/") # 改成你的路径
      find_package(OpenCV REQUIRED)
      FIND_PACKAGE(OpenMP REQUIRED)
      add_executable(Test_OpenCV_Mobile main.cpp)
      target_link_libraries(Test_OpenCV_Mobile pthread)
      target_link_libraries(Test_OpenCV_Mobile dl)
      target_link_libraries(Test_OpenCV_Mobile -fopenmp)
      target_link_libraries(Test_OpenCV_Mobile ${OpenCV_LIBS})
      

      2.makefile

      OPENCV_DIR := /root/opencv-4.5.4/
      THIRD_PART_INCLUDE := -I$(OPENCV_DIR)include/opencv4 -I$(OPENCV_DIR)include/opencv4/opencv2
      THIRD_PART_LIBRARY := $(OPENCV_DIR)lib/libopencv_highgui.a $(OPENCV_DIR)lib/libopencv_features2d.a $(OPENCV_DIR)lib/libopencv_imgproc.a $(OPENCV_DIR)lib/libopencv_photo.a $(OPENCV_DIR)lib/libopencv_video.a $(OPENCV_DIR)lib/libopencv_core.a
      
      TARGET = Test_OpenCV_Mobile
      START:
          @echo START
          rm -rf $(TARGET)
          /root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin/arm-openwrt-linux-g++ -O2 -std=c++11 -lpthread -fopenmp -ldl $(CFLAGS) $(THIRD_PART_INCLUDE) -o $(TARGET) ./main.cpp $(THIRD_PART_LIBRARY)
      
      .PHONY:clean
      
      clean:
          rm -rf $(BINDIR)
      

      3.main.cpp

      #include <opencv2/opencv.hpp>
      #include <iostream>
      int main()
      {
          cv::Mat mat = cv::Mat::zeros(256,256, CV_8UC1);
          {
              cv::rectangle(mat, cv::Rect(40, 45, 51, 65), cv::Scalar(255), -1, cv::LINE_8, 0);//绘制填充矩形
              cv::rectangle(mat, cv::Rect(180, 180, 85, 21), cv::Scalar(255), -1, cv::LINE_8, 0);//绘制填充矩形
              std::cout << "mat.rows = " << mat.rows << std::endl;
              std::cout << "mat.cols = " << mat.cols << std::endl;
          }
          return 0;
      }
      

      8.编译 opencv example
      在创建的目录里面,执行

      cmake .
      make
      

      3bfe5fb0d1a9585333d1532c369f1fac4a941bc5_2_690x379.jpeg

      9、将文件推进板子,并添加权限执行

      10、推送相应的动态库进入 /usr/lib
      比如 world,core….

      11、最后终端执行,推送进来的文件。
      ./Test_OpenCV/example

      到此 opencv 4.5.4 编译成功,并运行opencv example成功。

      F 1 条回复 最后回复 回复 引用 分享 0
      • F
        fczlzu LV 2 @bayche 最后由 编辑

        @bayche 您好
        执行 cmake-gui .. 出现如下错误怎么办?
        a0ea9a3d-e4ed-45ce-85ae-041da046b948-image.png

        1 条回复 最后回复 回复 引用 分享 0
        • 1 / 1
        • First post
          Last post

        Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

        行为准则 | 用户协议 | 隐私权政策