Je l'ai construit à partir du code source.
$ wget https://github.com/opencv/opencv/archive/3.4.3.zip -O opencv-3.4.3.zip
$ wget https://github.com/opencv/opencv_contrib/archive/3.4.3.zip -O opencv_contrib-3.4.3.zip
$ unzip opencv-3.4.3.zip
$ unzip opencv_contrib-3.4.3.zip
$ cd opencv-3.4.3
$ mkdir build
$ cd build
$ ./cmake.sh
$ make -j4
$ sudo make install
$ sudo ldconfig
$ cd /path/to/site-packages
$ sudo ln -s /usr/local/lib/python3.6/site-packages/cv2.cpython-36m-aarch64-linux-gnu.so cv2.so
Comme cmake a de nombreuses options et que j'ai réessayé plusieurs fois, j'ai créé un fichier comme suit.
cmake.sh
#!/bin/sh
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF \
-D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF \
-D BUILD_opencv_gpucodec=OFF -D BUILD_opencv_gpufeatures2d=OFF \
-D BUILD_opencv_gpufilters=OFF -D BUILD_opencv_gpuimgproc=OFF \
-D BUILD_opencv_gpulegacy=OFF -D BUILD_opencv_gpuoptflow=OFF \
-D BUILD_opencv_gpustereo=OFF -D BUILD_opencv_gpuwarping=OFF \
-D BUILD_DOCS=OFF -D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF \
-D BUILD_opencv_python3=ON -D FORCE_VTK=ON \
-D WITH_TBB=ON -D WITH_V4L=ON \
-D WITH_OPENGL=ON -D WITH_CUBLAS=ON \
-D BUILD_opencv_python3=ON \
-D PYTHON3_EXECUTABLE=`pyenv local 3.6.8; pyenv which python` \
-D PYTHON3_INCLUDE_DIR=`pyenv local 3.6.8; python -c 'from distutils.sysconfig import get_python_inc; print(get_python_inc())'` \
-D PYTHON3_NUMPY_INCLUDE_DIRS=`pyenv local 3.6.8; python -c 'import numpy; print(numpy.get_include())'` \
-D PYTHON3_LIBRARIES=`find $PYENV_ROOT/versions/3.6.8/lib -name 'libpython*.so'` \
-D WITH_FFMPEG=ON \
..
Je suis nouveau sur OpenCV et je ne me suis pas bien déroulé à cause de l'environnement spécial. Je suis tombé sur les points suivants.
--Il n'y a pas de libjasper-dev.J'ai eu une erreur et je me demandais quoi faire. Cependant, je l'ai sauté parce qu'il était écrit sur un babillard anglais quelque part que ce n'était pas nécessaire et que je n'avais pas à en faire trop. Cela semble être une bibliothèque liée au JPEG. La construction a réussi même si je ne l'ai pas mise sur le babillard.
. Je devais en faire un Makefile pour python3 avec l'option
-D PYTHON3_hogehoge`. Je n'ai pas vu correctement le résultat de cmake. ..matplotlib J'ai mis matplotlib pour l'affichage de l'image. J'ai eu une erreur indiquant que le backend n'est pas une interface graphique, j'ai donc mis PyQt5 comme suit. (Je l'ai fait par essais et erreurs, donc je pense qu'il n'y a pas assez de commandes.)
$ sudo apt install -y qt5-qmake qt5-default
$ wget https://sourceforge.net/projects/pyqt/files/sip/sip-4.19.12/sip-4.19.12.tar.gz
$ wget https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.10.1/PyQt5_gpl-5.10.1.tar.gz
$ tar -xvf sip-4.19.12.tar.gz
$ tar -xvf PyQt5_gpl-5.10.1.tar.gz
$ cd sip-4.19.12/
$ python configure.py --sip-module=PyQt5.sip
$ make -j4
$ sudo make install
$ cd ../PyQt5_gpl-5.10.1/
$ python configure.py --qmake /usr/bin/qmake --sip-incdir ~/deeplabcut/sip-4.19.12/siplib
$ make
$ sudo make install
$ pip install pyqt5
Le visage de Lena peut-il être détecté? J'ai vérifié le fonctionnement d'OpenCV en fonction du thème.
cvtest.py
import cv2
import matplotlib.pyplot as plt
cascade_path = '/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml'
def face_detection(img_src):
img_gray = cv2.cvtColor(img_src, cv2.COLOR_BGR2GRAY)
cascade = cv2.CascadeClassifier(cascade_path)
facerect = cascade.detectMultiScale(img_gray)
if len(facerect) == 0:
print('No face detected')
return None
rect = facerect[0]
cv2.rectangle(
img_src,
tuple(rect[0:2]), tuple(rect[0:2] + rect[2:4]),
(255, 255, 255),
thickness=2)
return img_src
if __name__ == "__main__":
lena_path = './lena.png'
lena_src = cv2.imread(lena_path)
lena_face_detected = face_detection(lena_src)
if lena_face_detected is None:
img_show = lena_src
else:
img_show = cv2.cvtColor(lena_face_detected, cv2.COLOR_BGR2RGB)
plt.imshow(img_show)
plt.show()
Voici le résultat de l'exécution. Vous pouvez le détecter en toute sécurité. sensationnel
Quand la caméra arrivera, j'aimerais jouer avec.
c'est tout.