Using OpenCV Java Bindings to read an image

image-processing, java, javacv, opencv

Solution

If you have correctly installed Opencv with support for Java desktop and included `opencv-2.4.4.jar` , your should import:

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

And your code will look like this:

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);

Problem

I'm using the new OpenCV Java bindings to read an image and do some processing on the image. I'm trying to convert C code to Java using the Java bindings but can't seem to find the relevant methods: C code: ``` 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); ``` I can't find: - `imread` - `cvtcolor` - `getStructuringElement` - `erode` I looked around the api here: http://docs.opencv.org/java/ Unfortunately the sample java code provided doesn't even show how to read an image!

Original source