4.2 RK3399项目开发实录-案例开发之OpenCV 编译和安装(wulianjishu666)

★嵌入式ARM开发全套案例代码**:https://pan.baidu.com/s/1ksCQN__jD8ZrJhw8sWzhwQ?pwd=vvfz**

3.3. OpenCV 编译和安装

不少客户遇到OpenCV的问题多集中在如何获取mipi摄像头的数据。因为OpenCV使用的V4l2协议和Rockchip编写的mipi摄像头驱动协议不同,所以不能直接使用OpenCV的摄像头API。本节讲述如何编译Opencv并添加GStreamer API支持。

3.3.1. 要求

  • OS: Ubuntu18.04 / Debian 10

  • OpenCV version: 3.4.15

  • Board: RK3399

3.3.2. 编译和安装

  1. 搭建python3.7虚拟环境

    复制代码
    # 依次安装gcc和cmake等编译环境
    # 安装python3.7-tk 和 python3.7-dev
    # 安装virtualenv虚拟环境
    sudo apt install gcc cmake git build-essential \
    python3-tk python3.7-dev \
    virtualenv
  2. 创建python3.7虚拟环境

    复制代码
    virtualenv -p /usr/bin/python3.7m /home/firefly/venv
    # 使用虚拟环境,如果想退出可以在终端输入 deactivate
    source /home/firefly/venv/bin/activate
  3. 安装Opencv所需的环境包

    复制代码
    # 安装编译环境、gtk包和相关编解码库
    sudo apt install cmake build-essential libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libjasper-dev
    
    # 注意!如果安装了rknn_toolkit(or lite)则不需要再安装Python-numpy,否则会导致rknn_toolkit(or lite)无法使用
    sudo apt install python-numpy
  4. 下载Opencv

    复制代码
    # 创建文件夹
    mkdir opencv
    cd opencv
    
    # 下载 opencv-3.4.15.zip
    wget https://github.com/opencv/opencv/archive/refs/tags/3.4.15.zip
    unzip opencv-3.4.15.zip
  5. 配置

    复制代码
    mkdir build
    cd build
    
    # 让 OpenCV 和 Python3 之间建立联系
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D 	PYTHON_DEFAULT_EXECUTABLE=$(python -c "import sys; print(sys.executable)")\
    -D PYTHON3_EXECUTABLE=$(python -c "import sys; print(sys.executable)")  \
    -D PYTHON3_NUMPY_INCLUDE_DIRS=$(python -c "import numpy; print (numpy.get_include())")  \
    -D PYTHON3_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")  \
    ../opencv-3.4.15
  6. 如需支持Gstreamer API,则进行以下配置操作否则跳过

    复制代码
    sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
    cmake -D WITH_GSTREAMER=ON ../opencv-3.4.15
  7. 编译安装

    复制代码
    # 如果板子内存不超过2G,建议不超过-j4
    make -j6
    # 安装的过程需要sudo权限
    sudo make install

3.3.3. 测试

  1. 测试

    复制代码
    source /home/firefly/venv/bin/activate
    git clone https://gitlab.com/firefly-linux/test_code/rkisp-v4l2.git
    cd mipi_video_demo/OpenCV_Python
    python3 opencv_gst_test.py
  2. opencv_gst_test.py 代码

    复制代码
    import numpy as np
    import cv2 as cv
    import os
    import time
    
    cap = cv.VideoCapture('v4l2src device=/dev/video1 ! video/x-raw, format=NV12, width=640, height=480, framerate=30/1 ! videoconvert ! appsink', cv.CAP_GSTREAMER)
    
    if not cap.isOpened():
        print("Cannot capture from camera. Exiting.")
        os._exit()
    last_time = time.time()
    
    while(True):
    
        ret, frame = cap.read()
        this_time = time.time()
        print (str((this_time-last_time)*1000)+'ms')
        last_time = this_time;
        cv.imshow('frame', frame)
    
        if cv.waitKey(1) & 0xFF == ord('q'):
            break
    
    cap.release()
    cv.destroyAllWindows()
相关推荐
Shawn_Shawn23 分钟前
大模型的奥秘:Token与Transformer简单理解
人工智能·llm
weixin_377634842 小时前
【K-S 检验】Kolmogorov–Smirnov计算过程与示例
人工智能·深度学习·机器学习
石像鬼₧魂石2 小时前
如何配置Fail2Ban的Jail?
linux·学习·ubuntu
菜鸟起航ing3 小时前
Spring AI 全方位指南:从基础入门到高级实战
java·人工智能·spring
Guheyunyi3 小时前
智慧消防管理系统如何重塑安全未来
大数据·运维·服务器·人工智能·安全
hetao17338373 小时前
2025-12-12~14 hetao1733837的刷题笔记
数据结构·c++·笔记·算法
ZZY_dl3 小时前
训练数据集(三):真实场景下采集的课堂行为目标检测数据集,可直接用于YOLO各版本训练
人工智能·yolo·目标检测
椰子今天很可爱3 小时前
五种I/O模型与多路转接
linux·c语言·c++
Lueeee.3 小时前
Linux kernel Makefile 语法
linux
yiersansiwu123d3 小时前
AI伦理治理:在创新与规范之间寻找动态平衡
人工智能