/ / CvMat setTo equivalente in javaCV - opencv, javacv

CvMat setTo equivalente in javaCV - opencv, javacv

Ho cercato di applicare una maschera Ellipse sopra un cvMat. In C ++ il codice sarebbe simile a questo:

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

Non riesco a trovare alcun metodo in javaCV che sia equivalente a setTo. Qualcuno può aiutare con un work-around per questo.

risposte:

0 per risposta № 1

È possibile impostare una maschera opzionale con cvCopy(CvArr src, CvArr dst, CvArr mask)

Il esempio di filigrana mostra un utilizzo, non proprio uguale a quello che stai facendo, ma potrebbe essere utile.


1 per risposta № 2

Devi creare una matrice 1x1 dal tuo scalare e usarla al suo posto qualcosa di simile a:

filtered.setTo(Mat(1,1,CV_16S1C1, 128), mask);

il metodo è definito come:

@ByRef
public native opencv_core.Mat setTo(@ByVal opencv_core.Mat var1, @ByVal(
nullValue = "cv::noArray()"
) opencv_core.Mat var2);