Я собирал OpenCV 3.0.0 с поддержкой Java. Мой сценарий был:
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
как сказано в http://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html с -D BUILD_SHARED_LIBS=OFF
,
И когда я захотел проверить установку, я обнаружил, что нет класса Highgui и нет пути к нему. Вот мои opencv-300.jar
org.opencv
содержимое папки:
calib3d
core
features2d
imgcodecs
imgproc
ml
objdetect
photo
utils
video
videoio
Я что-то пропустил во время установки?
Краткий ответ: больше нет HighGUI
модуль в Java для 3.0 больше.
Long One: функциональность в HighGUI
был разделен на два дополнительных модуля:
Поскольку в Java нет функций графического интерфейса, больше нет необходимости иметь модуль HighGUI в Java.
Миграция с OpenCV 2.x на 3.0.0 (Java)
Highgui.imread(fileName, Highgui.CV_LOAD_IMAGE_GRAYSCALE)
Highgui.imread(fileName)
стать респ:
Imgcodecs.imread(fileName, Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE)
Imgcodecs.imread(fileName)
Кроме того, функции рисования, такие как:
Core.circle(..), Core.line(..), etc..
Были перемещены в:
Imgproc.circle(..), Imgproc.line(..)
Заметка
Моменты, HuMoments отсутствуют в 3.0.0. Будет исправлено в 3.1
Увидеть ошибка
Вчера я нашел в конце введения http://docs.opencv.org/2.4/doc/tutorials/introduction/clojure_dev_intro/clojure_dev_intro.html ответь на мой вопрос:
OpenCV Java API не включает функциональные возможности модуля highgui
в зависимости от Qt (например, namedWindow и imshow. Если вы хотите создать
окна и показывать изображения в них во время взаимодействия с OpenCV из
REPL, в тот момент, когда вы остались наедине с собой. Вы могли бы использовать Java
Качайте, чтобы заполнить пробел.