Gabriel Muñumel
Gabriel Muñumel

Reputation: 1876

Change size while using dilate in java opencv

I'm using opencv in java. I'm facing this weird problem, after I do dilate function my image changes its size. In the documentation explicitly said:

dst - output image of the same size and type as src.

My code is:

Log.d(TAG, "dilate size1  " + dilate.size().height + " " + dilate.size().width);
Imgproc.GaussianBlur(warpg, smooth, new Size(3, 3), 3);
Log.d(TAG, "smooth size1  " + smooth.size().height + " " + smooth.size().width);
Imgproc.adaptiveThreshold(smooth, thresh, 255, 0, 1, 5, 2);
Log.d(TAG, "thresh size1  " + thresh.size().height + " " + thresh.size().width);
kernel = Imgproc.getStructuringElement(Imgproc.MORPH_CROSS, new Size(3, 3));
Imgproc.erode(thresh, erode, kernel, new Point(-1, -1), 1);
Log.d(TAG, "erode size1  " + erode.size().height + " " + erode.size().width);
Imgproc.dilate(erode, dilate, kernel, new Point(-1, -1), 1);
Imgproc.findContours(thresh, contours, hierarchy,
        Imgproc.RETR_TREE, Imgproc.CHAIN_APPROX_SIMPLE);
Log.d(TAG, "dilate size2  " + dilate.size().height + " " + dilate.size().width);

The output is:

dilate size1  450.0 450.0
smooth size1  450.0 450.0
thresh size1  450.0 450.0
erode size1  450.0 450.0
dilate size2  1.0 313.0

Any idea?

Upvotes: 2

Views: 664

Answers (1)

Gabriel Muñumel
Gabriel Muñumel

Reputation: 1876

I solved doing:

dilate = new Mat(erode.rows(), erode.cols(), erode.type());
erode.copyTo(dilate);
Imgproc.dilate(dilate, dilate, kernel, new Point(-1, -1), 1);

Cheers.

Upvotes: 2

Related Questions