Java OpenCV 3.0.0 JAR 中缺少 HighGUI
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/25059576/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
HighGUI is missing from OpenCV 3.0.0 JAR
提问by Vladimir Protsenko
I was compiling OpenCV 3.0.0 with Java support. My script was:
我正在用 Java 支持编译 OpenCV 3.0.0。我的脚本是:
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.htmlwith -D BUILD_SHARED_LIBS=OFF
.
如http://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html 中所述,使用-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:
当我想测试安装时,我发现没有 Highgui 类,也没有路径。这是我的opencv-300.jar
org.opencv
文件夹内容:
calib3d
core
features2d
imgcodecs
imgproc
ml
objdetect
photo
utils
video
videoio
Have I missed something during installation?
我在安装过程中遗漏了什么吗?
采纳答案by berak
Short Answer : There is no more HighGUI
module in Java for 3.0 anymore.
简短回答:HighGUI
Java 中不再有 3.0 的模块了。
Long One : The functionality in HighGUI
has been split into two additional modules:
Long One : 中的功能HighGUI
已拆分为两个附加模块:
- videoio (VideoCapture, VideoWriter).
- imgcodecs (imread/imwrite and friends).
- videoio (VideoCapture, VideoWriter)。
- imgcodecs(imread/imwrite 和朋友)。
Since there's no GUI functionality exposed to Java, there is no need to have a HighGUI module in Java anymore.
由于没有向 Java 公开的 GUI 功能,因此 Java 中不再需要 HighGUI 模块。
回答by Vladimir Protsenko
Yesterday I found at the end of introduction http://docs.opencv.org/2.4/doc/tutorials/introduction/clojure_dev_intro/clojure_dev_intro.htmlanswer for my question:
昨天我在介绍http://docs.opencv.org/2.4/doc/tutorials/introduction/clojure_dev_intro/clojure_dev_intro.html的末尾找到了我的问题的答案:
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.
OpenCV Java API 不封装依赖于 Qt 的 highgui 模块功能(例如,namedWindow 和 imshow。如果您想在与来自 REPL 的 OpenCV 交互时创建窗口并向其中显示图像,此时您只能靠自己了。您可以使用 Java Swing 来填补空白。
回答by Hey StackExchange
Migrating from OpenCV 2.x to 3.0.0 (Java)
从 OpenCV 2.x 迁移到 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