[OpenCV] Install OpenCV 4.2+
为什么要安装较高版本?以下是理由。
Jetson 使用 OpenCV DNN
Xavier NX - OpenCV 4.5
Xavier NX only works with JetPack 4.4 or later. And JetPack 4.4 is provided with OpenCV 4.1.1 installed. In most cases, there is no problem with using OpenCV 4.1.1.
- However, from OpenCV 4.2+, Super Resolution function is provided as C/C++ API.
- And from 4.3, it provides Python API.
- And finally, in 4.4, CUDA GPU acceleration is available.
Therefore, it is recommended to use version 4.4 or higher to fully use the Super Resolution function provided by OpenCV. Therefore, to use OpenCV's SuperResolution, you need to delete the OpenCV 4.1.1 version of JetPack 4.4 and install 4.4 newly.
And from OpenCV 4.2, the dnn module started supporting Nvidia GPUs. In previous versions, only the CPU was available. The Jetson series has NVidia GPUs, so if you are using OpenCV's dnn, it is recommended to upgrade to version 4.2 or higher. OpenCV version 4.2 or higher uses NVidia GPU to speed up the inference.
If you are not interested in OpenCV's SuperResolution feature or not using OpenCV dnn module, you do not necessarily need to upgrade to OpenCV 4.4 or 4.5.
#!/bin/bash # # Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. # # NVIDIA Corporation and its licensors retain all intellectual property # and proprietary rights in and to this software, related documentation # and any modifications thereto. Any use, reproduction, disclosure or # distribution of this software and related documentation without an express # license agreement from NVIDIA Corporation is strictly prohibited. # if [ "$#" -ne 1 ]; then echo "Usage: $0 <Install Folder>" exit fi folder="$1" user="nvidia" passwd="nvidia" echo "** Remove OpenCV4.1 first" sudo sudo apt-get purge *libopencv* echo "** Install requirement" sudo apt-get update sudo apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev sudo apt-get install -y python2.7-dev python3.6-dev python-dev python-numpy python3-numpy sudo apt-get install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev sudo apt-get install -y libv4l-dev v4l-utils qv4l2 v4l2ucp sudo apt-get install -y curl sudo apt-get update echo "** Download opencv-4.5.1" cd $folder curl -L https://github.com/opencv/opencv/archive/4.5.1.zip -o opencv-4.5.1.zip curl -L https://github.com/opencv/opencv_contrib/archive/4.5.1.zip -o opencv_contrib-4.5.1.zip unzip opencv-4.5.1.zip unzip opencv_contrib-4.5.1.zip cd opencv-4.5.1/ echo "** Building..." mkdir release cd release/ cmake -D WITH_CUDA=ON -D ENABLE_PRECOMPILED_HEADERS=OFF -D CUDA_ARCH_BIN="7.2" -D CUDA_ARCH_PTX="" -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.4.0/modules -D WITH_GSTREAMER=ON -D WITH_LIBV4L=ON -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. make -j6 sudo make install echo "** Install opencv-4.5.1 successfully" echo "** Bye :)"
可见,dnn 有点变化,提供了另外的 dnn_superres。
Python 3.6.9 (default, Jul 17 2020, 12:50:27) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> from cv2 import dnn_superres >>> cv2.__version__ '4.5.1'
那么,性能是否会有大的提升呢?
code: https://github.com/QaisarRajput/mask-rcnn-opencv
Opencv CUDA.
net = cv2.dnn.readNetFromTensorflow(weightsPath, configPath)
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)
net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)
Test time.
root@melb-desktop:/jetson-inference/data/tmp/mask-rcnn-opencv# python mask_rcnn.py -i images/example_01.jpg -m mask-rcnn-coco/ [INFO] loading Mask R-CNN from disk... [INFO] Mask R-CNN took 4.793104 seconds [INFO] boxes shape: (1, 1, 100, 7) [INFO] masks shape: (100, 90, 15, 15) [INFO] Mask R-CNN took 0.348731 seconds [INFO] Mask R-CNN took 0.769313 seconds [INFO] Mask R-CNN took 0.876965 seconds [INFO] Mask R-CNN took 0.866886 seconds [INFO] Mask R-CNN took 0.741504 seconds [INFO] Mask R-CNN took 0.879894 seconds
Close CUDA, we can see that it will take long time. So, CUDA here gives 7x faster.
root@melb-desktop:/jetson-inference/data/tmp/mask-rcnn-opencv# python mask_rcnn.py -i images/example_01.jpg -m mask-rcnn-coco/ [INFO] loading Mask R-CNN from disk... [INFO] Mask R-CNN took 7.261957 seconds [INFO] boxes shape: (1, 1, 100, 7) [INFO] masks shape: (100, 90, 15, 15) [INFO] Mask R-CNN took 6.543088 seconds [INFO] Mask R-CNN took 5.895172 seconds [INFO] Mask R-CNN took 6.363254 seconds [INFO] Mask R-CNN took 6.000929 seconds [INFO] Mask R-CNN took 5.798403 seconds [INFO] Mask R-CNN took 5.938069 seconds
Release versions
Ref: https://opencv.org/releases/
2020年开始的4.4, 2021年开始的4.5。
如下是原生Jetson本地优化的性能参考。
Training Instance Segmentation Models Using Mask R-CNN on the NVIDIA Transfer Learning Toolkit
By Yu Wang
OpenCV 4.4+ 新模型
Ref: https://pjreddie.com/darknet/yolo/
YOLOv3-tiny 30M左右,但输入比较大:416 * 416
Ref: https://stackoverflow.com/questions/49450829/darknet-yolo-image-size
可以修改 input width and height,那牛掰了呢!
Ref: YOLOv3 Input size: 608, 1216, 1920, 2560x2560【可见,调整input后的大小,以及performance的大概评估】
貌似是OpenCV支持YOLOV3-TINY,最后还是以实践为基础。
End.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律