Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HighGUI is missing from OpenCV 3.0.0 JAR

I was compiling OpenCV 3.0.0 with Java support. My script was:

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

as told in http://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html with -D BUILD_SHARED_LIBS=OFF.

And when I wanted to test installation I found out that there is no Highgui class and no path for it. Here are my opencv-300.jar org.opencv folder contents:

calib3d
core
features2d
imgcodecs
imgproc
ml
objdetect
photo
utils
video
videoio

Have I missed something during installation?

like image 597
Vladimir Protsenko Avatar asked Jul 31 '14 13:07

Vladimir Protsenko


3 Answers

Migrating from OpenCV 2.x to 3.0.0 (Java)

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

become resp:

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

Also, drawing functions such as:

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

Have been moved to:

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

Note Moments, HuMoments missing in 3.0.0. Will be fixed in 3.1 See bug

like image 114
Hey StackExchange Avatar answered Oct 19 '22 18:10

Hey StackExchange


Short Answer : There is no more HighGUI module in Java for 3.0 anymore.

Long One : The functionality in HighGUI has been split into two additional modules:

  1. videoio (VideoCapture, VideoWriter).
  2. imgcodecs (imread/imwrite and friends).

Since there's no GUI functionality exposed to Java, there is no need to have a HighGUI module in Java anymore.

like image 27
berak Avatar answered Oct 19 '22 17:10

berak


Yesterday I found at the end of introduction http://docs.opencv.org/2.4/doc/tutorials/introduction/clojure_dev_intro/clojure_dev_intro.html answer for my question:

The OpenCV Java API does not wrap the highgui module functionalities depending on Qt (e.g. namedWindow and imshow. If you want to create windows and show images into them while interacting with OpenCV from the REPL, at the moment you’re left at your own. You could use Java Swing to fill the gap.

like image 2
Vladimir Protsenko Avatar answered Oct 19 '22 19:10

Vladimir Protsenko