2 回答
TA贡献1789条经验 获得超8个赞
我使用此代码迭代模板匹配结果 Mat 以查找可能的匹配项。
public static List<Point> getPointsFromMatAboveThreshold(Mat m, float t){
List<Point> matches = new ArrayList<Point>();
FloatIndexer indexer = m.createIndexer();
for (int y = 0; y < m.rows(); y++) {
for (int x = 0; x < m.cols(); x++) {
if (indexer.get(y,x)>t) {
System.out.println("(" + x + "," + y +") = "+ indexer.get(y,x));
matches.add(new Point(x, y));
}
}
}
return matches;
}
这将为您提供一定数量的白色坐标列表。然后你需要将这些聚类
TA贡献1827条经验 获得超4个赞
事实证明我错误地使用了 findContours,我能够通过在我的函数中附加以下代码来解决我的问题:
Mat dots = new Mat();
List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
Imgproc.findContours(grayMat, contours, dots, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE, new Point(0,0));
Imgproc.drawContours(grayMat, contours, -1, new Scalar(Math.random()*255, Math.random()*255, Math.random()*255));//, 2, 8, hierarchy, 0, new Point());
countours 列表包含轮廓的整体数,这是我正在寻找的斑点数。
添加回答
举报