3

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

setToと同等のメソッドがjavaCVに見つかりません。誰かがこれの回避策を手伝ってもらえますか?

4

2 に答える 2

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);
于 2016-04-05T14:52:58.460 に答える
0

オプションのマスクを設定できますcvCopy(CvArr src, CvArr dst, CvArr mask)

透かしの例は、いくつかの使用法を示しています。これは、実行していることとはまったく同じではありませんが、役立つ場合があります。

于 2013-01-11T17:20:59.240 に答える