Изображение обрабатывается бинарным, как получить контуры из этого файла.
неправильные контур:
my code:
CANNY_THRESH1 = 50 #
CANNY_THRESH2 = 150 #
DILATE_ITER = 2 #
ERODE_ITER = 1 #
APPROX_POLY_EPSILON = 0.02 #
MIN_AREA = 1000 #
DEBUG = True #
img = cv2.imread("debug_binary.jpg")
orig = img.copy()
#
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# =======================
# find canny
# =======================
edges = cv2.Canny(gray, CANNY_THRESH1, CANNY_THRESH2)
# =======================
# morph process
# =======================
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
morph = cv2.morphologyEx(edges, cv2.MORPH_CLOSE, kernel)
morph = cv2.dilate(morph, kernel, iterations=DILATE_ITER)
morph = cv2.erode(morph, kernel, iterations=ERODE_ITER)
# =======================
# find contours
# =======================
contours, _ = cv2.findContours(morph, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
book_contours = []
for cnt in contours:
if cv2.contourArea(cnt) < MIN_AREA:
continue
# 多边形逼近
epsilon = APPROX_POLY_EPSILON * cv2.arcLength(cnt, True)
approx = cv2.approxPolyDP(cnt, epsilon, True)
if len(approx) == 4: # 只保留四边形轮廓
book_contours.append(approx)
# =======================
# draw contours
# =======================
output = orig.copy()
cv2.drawContours(output, book_contours, -1, (0, 0, 255), 3)
Подробнее здесь: https://stackoverflow.com/questions/797 ... ith-opencv
Обнаружение документа: Как получить контуры из этого изображения с OpenCV ⇐ Android
Форум для тех, кто программирует под Android
1755152632
Anonymous
Изображение обрабатывается бинарным, как получить контуры из этого файла.
неправильные контур:
my code:
CANNY_THRESH1 = 50 #
CANNY_THRESH2 = 150 #
DILATE_ITER = 2 #
ERODE_ITER = 1 #
APPROX_POLY_EPSILON = 0.02 #
MIN_AREA = 1000 #
DEBUG = True #
img = cv2.imread("debug_binary.jpg")
orig = img.copy()
#
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# =======================
# find canny
# =======================
edges = cv2.Canny(gray, CANNY_THRESH1, CANNY_THRESH2)
# =======================
# morph process
# =======================
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
morph = cv2.morphologyEx(edges, cv2.MORPH_CLOSE, kernel)
morph = cv2.dilate(morph, kernel, iterations=DILATE_ITER)
morph = cv2.erode(morph, kernel, iterations=ERODE_ITER)
# =======================
# find contours
# =======================
contours, _ = cv2.findContours(morph, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
book_contours = []
for cnt in contours:
if cv2.contourArea(cnt) < MIN_AREA:
continue
# 多边形逼近
epsilon = APPROX_POLY_EPSILON * cv2.arcLength(cnt, True)
approx = cv2.approxPolyDP(cnt, epsilon, True)
if len(approx) == 4: # 只保留四边形轮廓
book_contours.append(approx)
# =======================
# draw contours
# =======================
output = orig.copy()
cv2.drawContours(output, book_contours, -1, (0, 0, 255), 3)
Подробнее здесь: [url]https://stackoverflow.com/questions/79735018/document-detect-how-to-get-contours-from-this-image-with-opencv[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия