Мне удается получить части краев бумаги с неровными линиями, но, например, есть и ложные линии.< /p>
Вот изображения, на которых мне нужно, чтобы бумага была обнаружена. Как видите, положение камеры остается прежним.
- Пример изображения 1
- Пример изображения 2
Пример изображения 3 - Пример изображения 4
- Пример изображения 5
Я пробовал следующее: - Простое удержание порога -> Результат: поскольку части фона имеют тот же цвет, что и бумага, я не могу получить контур бумаги
- Hough Lines -> Результат: в зависимости от того, как вы меняете параметры, обнаруживается слишком много ложных линий или слишком просматриваются линии реальных краев бумаги
- Обнаружение контуров и аппроксимация формы -> Результат: для работы с контурами потребуется правильное пороговое значение.
- Сопоставление функций -> Результат: просто нет достаточно хороших функций для соответствия.
- Смещение прямоугольника по изображениям -> занимает слишком много времени и неточно, поскольку прямоугольник немного искажен и не идеально квадратный.
import cv2
import numpy as np
img = cv2.imread("path/to/image", cv2.IMREAD_GRAYSCALE)
_, binary = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
edges = cv2.Canny(contours, 50, 150)
lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 100, minLineLength=45, maxLineGap=8)
Подробнее здесь: https://stackoverflow.com/questions/787 ... ing-opencv