OpenCV 3.0.0 JAR 中缺少 HighGUI

Posted

技术标签:

【中文标题】OpenCV 3.0.0 JAR 中缺少 HighGUI【英文标题】:HighGUI is missing from OpenCV 3.0.0 JAR 【发布时间】:2014-09-23 10:30:45 【问题描述】:

我正在编译支持 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

如http://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html-D BUILD_SHARED_LIBS=OFF 所述。

当我想测试安装时,我发现没有 Highgui 类,也没有它的路径。这是我的opencv-300.jarorg.opencv 文件夹内容:

calib3d
core
features2d
imgcodecs
imgproc
ml
objdetect
photo
utils
video
videoio

我在安装过程中遗漏了什么吗?

【问题讨论】:

OpenCV 3.0.0 还不是一个稳定的版本,可能是因为它仍处于开发模式 highgui 被拆分为 videoio、imcdodecs 和 highgui。它不包含在 jar 中,因为 没有 java 没有 gui 功能 @berak 是的,你是对的。 【参考方案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 摆动以填补空白。

【讨论】:

【参考方案2】:

简答:Java 3.0 中不再有 HighGUI 模块。

Long One:HighGUI 中的功能已拆分为两个附加模块:

    videoio(VideoCapture、VideoWriter)。 imgcodecs(imread/imwrite 和好友)。

由于没有向 Java 公开 GUI 功能,因此不再需要在 Java 中使用 HighGUI 模块。

【讨论】:

旧代码:Highgui.imencode(".bmp", frame, mem);新代码:Imgcodecs.imencode(".bmp", frame, mem);【参考方案3】:

从 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(..)

注意 Moments,HuMoments 在 3.0.0 中丢失。将在 3.1 中修复 见bug

【讨论】:

很好,感谢您添加所需的其他更改。 非常感谢,为我省了很多麻烦!

以上是关于OpenCV 3.0.0 JAR 中缺少 HighGUI的主要内容,如果未能解决你的问题,请参考以下文章

FeatureDetectors 不在 OpenCV 3.0.0 中?

在 OpenCv 3.0.0 中使用百分比随机读取一些图像 [关闭]

使用 OpenCV 3.0.0 的 Qt 5.6 未找到 DLL 入口点

如何使用 c++ 在带有 opencv 3.0.0 的视频中画一条线

在 Ubuntu 14.04 上安装 opencv-3.0.0-beta 时出错

opencv3.0配置opencv_contrib