我一直在尝试在cvMat上应用椭圆蒙版。在C ++中,代码如下所示:
Mat mask = Mat(warped.size(), CV_8UC1, Scalar(255));
double dw = DESIRED_FACE_WIDTH;
double dh = DESIRED_FACE_HEIGHT;
Point faceCenter = Point( cvRound(dw * 0.5),
cvRound(dh * 0.4) );
Size size = Size( cvRound(dw * 0.5), cvRound(dh * 0.8) );
ellipse(mask, faceCenter, size, 0, 0, 360, Scalar(0),CV_FILLED);
filtered.setTo(Scalar(128), mask);
我无法在javaCV中找到任何等同于setTo的方法。 任何人都可以帮忙解决这个问题。
答案 0 :(得分:1)
您需要从标量中创建1x1矩阵并使用它 类似的东西:
filtered.setTo(Mat(1,1,CV_16S1C1, 128), mask);
该方法定义为:
@ByRef
public native opencv_core.Mat setTo(@ByVal opencv_core.Mat var1, @ByVal(
nullValue = "cv::noArray()"
) opencv_core.Mat var2);
答案 1 :(得分:0)
您可以使用cvCopy(CvArr src, CvArr dst, CvArr mask)
watermarking example显示了一些用法,与你正在做的不同,但可能会有所帮助。