Je suis récemment passé de 14.04 à 16.04 LTS. Je travaille depuis plusieurs mois sur une application Java sur cette machine, qui effectue le traitement des images à l'aide de l'opencv. J'ai compilé l'opencv de la source. Je fais mon développement sous Eclipse et je me connecte à la bibliothèque statique open-source compilée sous 14.04. Comme je l'ai dit, cela fonctionne depuis des mois. Maintenant, immédiatement après la mise à niveau vers 16.04, la première fois que j'essaye de l'exécuter, avec le même code, j'obtiens l'erreur suivante:
Java.lang.UnsatisfiedLinkError /home/pwarner/Documents/OpenCV/opencv-3.0.0/build/lib/libopencv_Java300.so: libIlmImf.so.6: cannot open shared object file: No such file or directory
voici le code:
public class NativeOpenCVLoader {
static {
System.load("/home/pwarner/Documents/OpenCV/opencv-3.0.0/build/lib/libopencv_Java300.so");
}
}
Bien sûr, le chemin est correct et le fichier est là.
ls /home/pwarner/Documents/OpenCV/opencv-3.0.0/build/lib/libopencv_Java300.so
/home/pwarner/Documents/OpenCV/opencv-3.0.0/build/lib/libopencv_Java300.so
Existe-t-il une bibliothèque c ++ qui a changé avec la mise à niveau afin qu’elle ne puisse plus lire le fichier? Dois-je reconstruire opencv?
localiser libIlmImf.so.6 ne donne aucun résultat.
pwarner@pwarner-Studio-XPS-7100:~$ locate libIlmImf.so.6
pwarner@pwarner-Studio-XPS-7100:~$
MAIS, il semble que j'ai libIlmImf.so
pwarner@pwarner-Studio-XPS-7100:/usr/lib$ locate libIlmImf.so
/usr/lib/x86_64-linux-gnu/libIlmImf.so
qui est un lien symbolique vers:
pwarner@pwarner-Studio-XPS-7100:/usr/lib/x86_64-linux-gnu$ ll libIlmImf.so*
lrwxrwxrwx 1 root root 23 Apr 17 20:42 libIlmImf.so -> libIlmImf-2_2.so.22.0.0
J'ai créé le lien logiciel vers libIlmImf.so.6, comme suggéré ci-dessous par Zanna (et SahibPrime).
pwarner@pwarner-Studio-XPS-7100:~$ locate libIlmImf.so.6
/usr/lib/x86_64-linux-gnu/libIlmImf.so.6
Mais toujours pas de chance - toujours obtenir la même erreur UnsatisfiedLinkError.
J'ai fini par passer les 3 heures à reconstruire l'opencv à partir de la source après la mise à niveau vers 16.04. Je peux maintenant exécuter à nouveau le serveur Tomcat pour mon projet. J'ai suivi les excellentes indications ici:
https://www.youtube.com/watch?v=hd8FFw0B0uA
et ici:
http://embedonix.com/articles/image-processing/installing-opencv-3-1-0-on-ubuntu/
J'ai eu deux problèmes pendant la création et j'ai dû ajouter/modifier les instructions de đàm văn tài dans le lien youtube ci-dessus. Le processus de création n'a pas trouvé libvpx.so.1 et est tombé. J'ai trouvé libvpx.so.3 sur mon système, j'ai tenté ma chance et créé un lien symbolique vers libvpx.so.1 à partir de celui-ci. L'installation semble heureuse.
Le deuxième problème est apparu par rapport à libtiff, et à
http://answers.opencv.org/question/35642/libtiff_40-link-errors/
J'ai trouvé une réponse:
add -D BUILD_TIFF=ON
à la liste de cmake. Cela a résolu ce problème.
J'ai pris soin de désinstaller mon ancienne installation opencv 3.0.0 avant d'installer la nouvelle version 3.1.0. Et je peux souligner que, selon mon expérience, il est préférable de supprimer tout le contenu du répertoire de construction si vous rencontrez un problème lors de la création, puis, après avoir résolu votre problème, exécutez cmake à nouveau, puis make.
Voici les étapes claires et détaillées de đàm văn tài à partir de sa page youtube (si vous les utilisez, vous pouvez vous rendre sur sa page et cliquer sur "J'aime" - le lien à nouveau: https: // www. youtube.com/watch?v=hd8FFw0B0uA ).
*Update Repositories
Sudo apt update -y && Sudo apt upgrade
*Build tools
Sudo apt install build-essential cmake
*Multimedia"
Sudo apt install libjpeg-dev libpng-dev libtiff5-dev libjasper-dev libgdal-dev zlib1g-dev libwebp-dev libv4l-dev libxine2-dev libopencore-amrnb-dev libopencore-amrwb-dev x264 libx264-dev yasm libxvidcore-dev libvorbis-dev libtheora-dev libswscale-dev libavformat-dev libavcodec-dev libdc1394-22-dev libgstreamer-plugins-base0.10-dev libgstreamer0.10-dev libfaac-dev ffmpeg
*Parallel frameworks
Sudo apt install libtbb2 libtbb2-dbg libtbb-dev libpomp2-dev
*Python Support
Sudo apt install python-dev python-tk python-numpy python3-dev python3-tk python3-numpy
*Oracle JDK
Sudo add-apt-repository ppa:webupd8team/Java
Sudo apt update
Sudo apt install Oracle-Java8-installer
Sudo apt install ant
*Extras
Sudo apt install libeigen3-dev doxygen libgl1-mesa-dev libglu1-mesa-dev mesa-common-dev qt5-default libatlas-base-dev gfortran
cd opencv-3.1.0
mkdir build
cd build/
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-master/modules -D BUILD_EXAMPLES=ON -D WITH_OPENGL=ON ..
Sudo apt-get install ant default-jdk
make -j2
Sudo make install
Sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
Sudo ldconfig
cd ..
cd samples/
cmake .
Sudo make -j4