web-dev-qa-db-fra.com

HighGUI est absent de OpenCV 3.0.0 JAR

Je compilais OpenCV 3.0.0 avec Java support. Mon script était:

mkdir /opt/opencv /opt/opencv/opencv-build
cd /opt/opencv
git clone https://github.com/Itseez/opencv.git 
cd /opt/opencv/opencv-build
export OPENCV_INSTALL_PATH=/opt/opencv
export FFMPEG_PATH=/opt/ffmpeg/ffmpeg_build/lib
export LD_LIBRARY_PATH=$OPENCV_INSTALL_PATH/lib:$FFMPEG_PATH:/opt/opencv/opencv/3rdparty/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/opt/ffmpeg/ffmpeg_build/lib/pkgconfig
cmake28 -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX="/opt/opencv" \
        -D OPENCV_EXTRA_C_FLAGS="-DHAVE_CAMV4L -DHAVE_CAMV4L2" \
        -D WITH_OPENCL=OFF -D BUILD_SHARED_LIBS=OFF ../opencv
make
make install

comme indiqué dans http://docs.opencv.org/doc/tutorials/introduction/desktop_Java/java_dev_intro.html avec -D BUILD_SHARED_LIBS=OFF.

Et quand j'ai voulu tester l'installation, j'ai découvert qu'il n'y avait pas de classe Highgui ni de chemin d'accès. Voici le contenu de mon dossier opencv-300.jarorg.opencv:

calib3d
core
features2d
imgcodecs
imgproc
ml
objdetect
photo
utils
video
videoio

Ai-je oublié quelque chose lors de l'installation?

35
Vladimir Protsenko

Réponse courte: Il n'y a plus de module HighGUI dans Java pour la version 3.0 plus.

Longue: La fonctionnalité dans HighGUI a été scindée en deux modules supplémentaires:

  1. videoio (VideoCapture, VideoWriter).
  2. imgcodecs (imread/imwrite et amis).

Comme aucune fonctionnalité de l'interface graphique n'est exposée à Java, il n'est plus nécessaire de disposer d'un module HighGUI dans Java.

63
berak

Migration d'OpenCV 2.x vers 3.0.0 (Java)

Highgui.imread(fileName, Highgui.CV_LOAD_IMAGE_GRAYSCALE)
Highgui.imread(fileName)

devenir resp:

Imgcodecs.imread(fileName, Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE)
Imgcodecs.imread(fileName)

En outre, les fonctions de dessin telles que:

Core.circle(..), Core.line(..), etc..

Ont été déplacés vers:

Imgproc.circle(..), Imgproc.line(..)

Remarque Moments, HuMoments manquants dans 3.0.0. Sera corrigé en 3.1 Voir bug

71
Hey StackExchange

Hier, j'ai trouvé à la fin de l'introduction http://docs.opencv.org/2.4/doc/tutorials/introduction/clojure_dev_intro/clojure_dev_intro.html réponse à ma question:

Les API OpenCV Java n'enveloppent pas les fonctionnalités du module highgui en fonction de Qt (par exemple, namedWindow et imshow. Si vous souhaitez créer des fenêtres et y afficher des images tout en interagissant avec OpenCV à partir du REPL, à la Au moment où vous êtes laissé à vous-même, vous pouvez utiliser Java Swing pour combler le vide).

2
Vladimir Protsenko