use of org.bytedeco.opencv.opencv_core.Mat in project qupath by qupath.
the class TypeAdaptersCVTest method testStatModels.
@SuppressWarnings("unchecked")
@Test
public void testStatModels() {
var gson = new GsonBuilder().registerTypeAdapterFactory(OpenCVTypeAdapters.getOpenCVTypeAdaptorFactory()).create();
try (PointerScope scope = new PointerScope()) {
// Create a model with some non-default parameters
var model = EM.create();
int nClusters = 4;
int nIterations = 8;
var termCrit = new TermCriteria(TermCriteria.COUNT, nIterations, 0);
model.setClustersNumber(nClusters);
model.setTermCriteria(termCrit);
var samples = new Mat(50, 50, opencv_core.CV_32FC1, Scalar.ZERO);
var one = new Mat(1, 1, opencv_core.CV_32FC1, Scalar.ONE);
var two = new Mat(1, 1, opencv_core.CV_32FC1, Scalar.all(2.0));
opencv_core.randn(samples.rowRange(0, 25), one, two);
opencv_core.randn(samples.rowRange(25, 50), two, one);
model.trainEM(samples);
var jsonModel = gson.toJson(model);
var modelRead = (EM) gson.fromJson(jsonModel, StatModel.class);
assertNotNull(modelRead);
assertEquals(nClusters, modelRead.getClustersNumber());
assertEquals(nIterations, modelRead.getTermCriteria().maxCount());
var modelRead2 = gson.fromJson(jsonModel, EM.class);
assertNotNull(modelRead2);
assertEquals(nClusters, modelRead2.getClustersNumber());
assertEquals(nIterations, modelRead2.getTermCriteria().maxCount());
}
}
Aggregations