Я использовал API облачного видения Google, чтобы распознать документ с таблицей, но иногда изображение будет немного повернуто, я пытаюсь получить значение, используя boundingPoly
ключа, который я хочу, но как мне его получить, если это не так там же 'y'
.
Я думал сделать «линию» выше и ниже boundingBox
и найти, находится ли точка между ними, но я не знаю, как это сделать.
[18] => Array
(
[description] => Date
[boundingPoly] => Array
(
[vertices] => Array
(
[0] => Array
(
[x] => 698
[y] => 289
)
[1] => Array
(
[x] => 729
[y] => 289
)
[2] => Array
(
[x] => 729
[y] => 301
)
[3] => Array
(
[x] => 698
[y] => 301
)
)
)
)
[66] => Array
(
[description] => 25/03/2019
[boundingPoly] => Array
(
[vertices] => Array
(
[0] => Array
(
[x] => 1007
[y] => 290
)
[1] => Array
(
[x] => 1131
[y] => 290
)
[2] => Array
(
[x] => 1131
[y] => 307
)
[3] => Array
(
[x] => 1007
[y] => 307
)
)
)
)
Учитывая точки (x1, y1)
и (x2, y2)
, вы можете определить, является ли третья точка (x3, y3)
коллинеарной, следующим образом.
Сначала вычислите наклон m1 = (y2 - y1) / (x2 - x1)
.
Затем вычислите наклон m2 = (y3 - y2) / (x3 - x2)
.
Линии коллинеарны тогда и только тогда, когда m1 = m2
.
Коллинеарность означает, что они лежат на одной линии.
Это не работает только для вертикальных линий; эти случаи можно обработать отдельно следующим образом: x1 = x2 = x3
, то точки лежат на одной прямой; если x1 = x2
или x2 = x3
, но не x1 = x2 = x3
, то третья точка не коллинеарна первым двум.
Учитывая линии (m1, h1)
и (m2, h2)
, вы можете определить, находится ли точка (x3, y3)
«между» этими линиями, следующим образом.
Вычислите y1 = h1 + m1 * x3
и y2 = h2 + m2 * x3
.
Тогда точка находится между линиями тогда и только тогда, когда y1 <= y3 <= y2
или y2 <= y3 <= y1
.
2. Если обе линии являются вертикальными линиями x = x1
и x = x2
, то точка находится между линиями тогда и только тогда, когда x1 <= x3 <= x2
или x2 <= x3 <= x1
.
Если ровно одна из линий вертикальна (предположим, что это первая для простоты записи), то вычислите x2 = (y3 - h2) / m2
; то точка находится между линиями тогда и только тогда, когда либо x1 <= x3 <= x2
, либо x2 <= x3 <= x1
.
(Если одна из ваших линий вертикальная, а другая горизонтальная, я думаю, что единственная точка между ними — это их точка пересечения).
Извините, я пытаюсь понять вторую формулу, но что такое (m1, h1)
@WeslleyRocha m1 — это наклон первой строки, а h1 — точка пересечения первой строки по оси y. Эти две вещи однозначно определяют любую (не вертикальную) линию.
Возможный дубликат Как проверить, образуют ли три точки прямую линию?