8

新しいOpenCV Java バインディングを使用して、画像を読み取り、画像に対して何らかの処理を行っています。Javaバインディングを使用してCコードをJavaに変換しようとしていますが、関連するメソッドが見つからないようです:

C コード:

cv::Mat img = cv::imread(argv[1]);
cv::Mat gray;
cv::cvtColor(img, gray, CV_BGR2GRAY);
int erosion_size = 5;
cv::Mat element = cv::getStructuringElement(cv::MORPH_CROSS,
                                       cv::Size(2 * erosion_size + 1, 2 * erosion_size + 1),
                                       cv::Point(erosion_size, erosion_size) );
cv::erode(gray, gray, element);

見つからない:

  • imread
  • cvtcolor
  • getStructuringElement
  • erode

私はここでAPIを見回しました: http://docs.opencv.org/java/

残念ながら、提供されているサンプル Java コードには、画像の読み取り方法さえ示されていません。

4

4 に答える 4

25

OpenCV for Java でイメージを読み取るには:

OpenCV 2.x ( JavaDoc )

Mat img = Highgui.imread("path/to/img");

OpenCV 3.x ( JavaDoc )

Mat img = Imgcodecs.imread("path/to/img");

どちらのバージョンでも、イメージの読み込み方法を指定する 2 番目のパラメーターを渡すことができます。

  • CV_LOAD_IMAGE_ANYDEPTH: 入力に対応する深度がある場合は 16 ビット/32 ビット イメージを返し、それ以外の場合は 8 ビットに変換します。
  • CV_LOAD_IMAGE_COLOR: 常に画像をカラー画像に変換します。
  • CV_LOAD_IMAGE_GRAYSCALE: 画像を常にグレースケールに変換します。

例:

// OpenCV 2.x   
Mat img = Highgui.imread("path/to/img", Highgui.CV_LOAD_IMAGE_GRAYSCALE);
// OpenCV 3.x
Mat img = Imgcodecs.imread("path/to/img", Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
于 2016-11-06T14:49:51.963 に答える
6

Java デスクトップをサポートし、含まれている Opencv を正しくインストールした場合は、以下opencv-2.4.4.jarをインポートする必要があります。

import org.opencv.imgproc.Imgproc;
import org.opencv.core.Point;
import org.opencv.core.Size;
import org.opencv.highgui.Highgui;

コードは次のようになります。

Mat img = Highgui.imread(argv[1], Highgui.CV_LOAD_IMAGE_GRAYSCALE);
int erosion_size = 5;
Mat element  = Imgproc.getStructuringElement(
    Imgproc.MORPH_CROSS, new Size(2 * erosion_size + 1, 2 * erosion_size + 1), 
    new Point(erosion_size, erosion_size)
);
Imgproc.erode(img, img, element);
于 2013-03-30T15:45:00.970 に答える