Jetson (4)--- 人臉識別(OpenCV安裝)


要讓攝像頭工作,還需要重新編譯和安裝OpenCV組件,因為Nvidia Jetpack自帶安裝了一個名為OpenCV4Tegra的OpenCV的特殊閉源版本,該版本針對Jetson進行了優化,並且比開源版本略快。雖然OpenCV4Tegra運行速度比普通OpenCV 2好,但其版本都不支持視頻捕獲gstreamer,因此我們無法輕松從中獲取視頻。

您可以使用正確的選項從源代碼編譯OpenCV3.x支持視頻抓取。

我們將使用自編譯的OpenCV 3替換OpenCV4Tegra。

推薦使用自動安裝腳本,包括所有刪除,安裝基礎框架,下載,編譯,導入python的所有內容。

4.1.1

https://github.com/AastaNV/JEP/blob/master/script/install_opencv4.1.1_Jetson.sh

#!/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.
#


folder=${HOME}/src
user="nvidia"
passwd="nvidia"

echo "** Remove other OpenCV first"
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 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.1.1"
cd $folder
curl -L https://github.com/opencv/opencv/archive/4.1.1.zip -o opencv-4.1.1.zip
curl -L https://github.com/opencv/opencv_contrib/archive/4.1.1.zip -o opencv_contrib-4.1.1.zip
unzip opencv-4.1.1.zip
unzip opencv_contrib-4.1.1.zip
cd opencv-4.1.1/

echo "** Apply patch"
sed -i 's/include <Eigen\/Core>/include <eigen3\/Eigen\/Core>/g' modules/core/include/opencv2/core/private.hpp

echo "** Building..."
mkdir release
cd release/
cmake -D WITH_CUDA=ON -D CUDA_ARCH_BIN="5.3,6.2,7.2" -D CUDA_ARCH_PTX="" -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.1/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 -j3
sudo make install
echo 'export PYTHONPATH=$PYTHONPATH:'$PWD'/python_loader/' >> ~/.bashrc
source ~/.bashrc

echo "** Install opencv-4.1.1 successfully"
echo "** Bye :)"

 

3.x

https://github.com/jkjung-avt/jetson_nano

 

人臉識別的代碼如下,可以用vscode打開代碼,然后直接運行example中的例子。

https://github.com/ageitgey/face_recognition

如果要實時識別人臉,可以參考代碼: 

examples/facerec_from_webcam_faster.py

獲取攝像頭是代碼可能需要修改,這個主要取決於你使用什么樣的攝像頭類型。比如下面地方修改:

我以后會在github上新建一個項目來特別處理不同的攝像頭問題。

# Get a reference to webcam #0 (the default one)
gst_str = ('nvarguscamerasrc ! '
                   'video/x-raw(memory:NVMM), '
                   'width=(int)1920, height=(int)1080, '
                   'format=(string)NV12, framerate=(fraction)30/1 ! '
                   'nvvidconv flip-method=2 ! '
                   'video/x-raw, width=(int){}, height=(int){}, '
                   'format=(string)BGRx ! '
                   'videoconvert ! appsink').format(1920, 1080)
video_capture = cv2.VideoCapture(gst_str, cv2.CAP_GSTREAMER)

 用一個衛生紙的卷紙芯就可以把攝像頭穩定的立起來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM