我有一个
cv::Mat mat
std::vector<cv::Points> diagonalPoints
对于进一步的编码,在创建这些之后,这里变得很棘手
diagonalPoints
我遍历每列以获得两点之间的最大距离(对于每列,因此我比较
[i].x
和
[i+1].x
-见下文)。但是(!)经过计算,我会得到
每个
maxDist
对于比prevoius更大的列,而不是
一列中最大的一个
.
for (int i = 0; i < diagonalPoints.size(); i++) {
int dist = diagonalPoints[i + 1].y - diagonalPoints[i].y;
if (diagonalPoints[i].x == diagonalPoints[i + 1].x) {
if (dist > maxDist) {
maxDist = dist;
maxDistColumn = diagonalPoints[i].x;
firstPt = diagonalPoints[i];
secondPt = diagonalPoints[i + 1];
}
}
else if (diagonalPoints[i].x != diagonalPoints[i + 1].x) {
maxDist = 0;
}
std::cout << maxDist << " in i: " << maxDistColumn << "\n";
farestPoints = std::make_pair(firstPt, secondPt);
std::cout << farestPoints.first << ", " << farestPoints.second << " ";
}
输出是(为了减少它,仅针对第一列):
[0, 26], [0, 39] - maxDist: 13 in i: 0
[0, 26], [0, 39] - maxDist: 13 in i: 0
[0, 26], [0, 39] - maxDist: 13 in i: 0
[0, 42], [0, 950] - maxDist: 908 in i: 0
[0, 42], [0, 950] - maxDist: 908 in i: 0
[0, 42], [0, 950] - maxDist: 908 in i: 0
但我只想得到
[0, 42], [0, 950] - maxDist: 908 in i: 0