web-dev-qa-db-ja.com

OpenGUI 3.0.0 JARにHighGUIがありません

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 with -D BUILD_SHARED_LIBS=OFF

そして、インストールをテストしたいと思ったとき、Highguiクラスとそのパスがないことがわかりました。ここに私のopencv-300.jarorg.opencvフォルダーの内容:

calib3d
core
features2d
imgcodecs
imgproc
ml
objdetect
photo
utils
video
videoio

インストール中に何かを見落としていませんか?

35

短い答え:Java for 3.0ではもうHighGUIモジュールはありません。

長いもの:HighGUIの機能は、2つの追加モジュールに分割されました。

  1. videoio(VideoCapture、VideoWriter)。
  2. imgcodecs(imread/imwriteおよびフレンド)。

JavaにはGUI機能が公開されていないため、JavaにHighGUIモジュールを用意する必要はありません。

63
berak

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

3.0.0では、Moments、HuMomentsが欠落しています。 3.1で修正されます bug を参照

71

昨日、紹介の最後で見つけました http://docs.opencv.org/2.4/doc/tutorials/introduction/clojure_dev_intro/clojure_dev_intro.html 私の質問に対する答え:

OpenCV Java APIはQtに応じてhighguiモジュールの機能をラップしません(namedWindowやimshowなど。REPLからOpenCVとやり取りしながらウィンドウを作成して画像を表示したい場合は、 Java Swingを使用してギャップを埋めることができます。

2