OpenCV:如何在Java中绘制connectedComponentsWithStats标签
我试图在某种程度上屏蔽我的二进制图像,它只显示某些标签(由我选择) 这段代码符合我的要求。有人能告诉我更好的方法吗?我想你可以用掩模来完成,而不是迭代每个像素,但是我发现的代码示例总是在C++中,而我无法在java中找到如何使用它。OpenCV:如何在Java中绘制connectedComponentsWithStats标签,java,opencv,mask,connected-components,Java,Opencv,Mask,Connected Components,我试图在某种程度上屏蔽我的二进制图像,它只显示某些标签(由我选择) 这段代码符合我的要求。有人能告诉我更好的方法吗?我想你可以用掩模来完成,而不是迭代每个像素,但是我发现的代码示例总是在C++中,而我无法在java中找到如何使用它。 Mat labels = new Mat(); Mat stats = new Mat(); Mat centroids = new Mat(); List<Integer> labelsToKeep = new ArrayList<>();
Mat labels = new Mat();
Mat stats = new Mat();
Mat centroids = new Mat();
List<Integer> labelsToKeep = new ArrayList<>();
Imgproc.connectedComponentsWithStats(binary, labels, stats, centroids, 4);
for (int i=0; i < stats.height(); i++) {
// for each label
if (someCondition)
labelsToKeep.add(i);
}
Mat mask = new Mat(binary.rows(), binary.cols(), binary.type());
for (int i=0; i < binary.rows(); i++) {
for (int j=0; j < binary.cols(); j++) {
// for each pixel
double[] data = new double[1];
if (labelsToKeep.contains((int)labels.get(i,j)[0]))
data[0] = 255;
else
data[0] = 0;
mask.put(i,j, channels);
}
}
Mat masked = new Mat();
binary.copyTo(masked, mask);
Mat标签=新Mat();
Mat stats=新Mat();
垫质心=新垫();
List labelsToKeep=new ArrayList();
Imgproc.connectedComponentsWithStats(二进制、标签、统计、质心,4);
对于(int i=0;i
问候