1

我正在尝试将蒙版应用于照片:

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

Mat mask = new Mat( new Size( img.cols(), img.rows() ), CvType.CV_8UC1 );
mask.setTo( new Scalar( 0.0 ) );

// Rect r = ...;
Core.ellipse( mask, new Point( r.x + ( r.width / 2 ), r.y + ( r.height / 2 ) ), new Size( r.width / 2, ( r.height ) / 2 ), 0.0, 0.0, 360.0, new Scalar( 255.0 ), 5 );

// Mat res = ...;
img.copyTo( res, mask );

但我总是以 res 包含与 img 完全相同的图像结束...

4

1 回答 1

6

图片示例:

在此处输入图像描述

1.使用源图像的大小创建蒙版:

Mat mask = new Mat(src.rows(), src.cols(), CvType.CV_8U, Scalar.all(0));

2.在蒙版Mat中绘制(将厚度设置为-1以填充形状):

Imgproc.ellipse( mask,
                new Point( src.rows() / 2, src.cols() / 2 ),
                new Size( src.rows() / 3, src.cols() / 5 ),
                70.0,
                0.0,
                360.0,
                new Scalar( 255, 255, 255 ),
                -1,
                8,
                0 );

在此处输入图像描述

3. 敷面膜:

Mat cropped = new Mat();
src.copyTo( cropped, mask );

在此处输入图像描述

于 2018-02-09T16:36:59.540 回答