Обнаружение заполненных черных прямоугольников на узорчатом фоне с помощью Python OpenCVPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обнаружение заполненных черных прямоугольников на узорчатом фоне с помощью Python OpenCV

Сообщение Anonymous »

Я пытаюсь определить расположение этих заполненных черных прямоугольников с помощью OpenCV.
Черные прямоугольники на бумаге
Я пробовал чтобы найти их контуры, но я думаю, что фоновые линии также распознаются как объекты. Кроме того, прямоугольники не полностью разделены (иногда они касаются угла), а затем определяются как один, но мне нужно расположение каждого из них отдельно.
Вот результаты Я получил это из следующего кода.

Код: Выделить всё

import numpy as np
import cv2

image = cv2.imread("page.jpg")

result = image.copy()
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

thresh = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV,51,9)

cnts = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
cv2.drawContours(thresh, [c], -1, (255,255,255), -1)

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=4)

cnts = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
x,y,w,h = cv2.boundingRect(c)
cv2.rectangle(image, (x, y), (x + w, y + h), (36,255,12), 3)

cv2.imshow('thresh', thresh)
cv2.imshow('opening', opening)
cv2.imshow('image', image)
cv2.waitKey()
Порог
Открытие
Результат
Как можно видите, на начальном изображении белые прямоугольники соединены с черными, но я хочу, чтобы они были отдельно. Затем в Результате он просто обнаруживает контур вокруг всей страницы.

Подробнее здесь: https://stackoverflow.com/questions/792 ... hon-opencv
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»