1

мы начали с отсканированных изображений правильных нарисованных диаграмм логической схемы, мы смогли отделить логические ворота от отсканированного изображения схемы, но мы не смогли обнаружить и как продолжить дальше, для этого мы использовали python open cv, наш код вышеперечисленногоКак обнаружить логические ворота от отсканированных изображений ручных схем?

import cv2 
import numpy as np 
from matplotlib import pyplot as plt 
img = cv2.imread('logic.png',0) 

ret,img2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV) # converting the image into binary image. 
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(100,3)) # kernel to detect vertical lines 
vertical = cv2.morphologyEx(img2, cv2.MORPH_OPEN, kernel) # applying morphological opening operation to detect vertical lines 
vertical = cv2.dilate(vertical,kernel,iterations = 1) #dilate the vertical lines obtained 

kernel2 = cv2.getStructuringElement(cv2.MORPH_RECT,(3,100)) # kernel to detect horizontal lines 
horizontal = cv2.morphologyEx(img2, cv2.MORPH_OPEN, kernel2) # applying morphological opening operation to detect horizontal lines 
horizontal = cv2.dilate(horizontal,kernel2,iterations = 1) #dilate the horizontal lines obtained 

cv2.imshow('d',vertical) # show the vertical imag 
cv2.imshow('b',horizontal) # show the horizontal image 

img = img2 -horizontal - vertical # subtracting horizontal and vertical lines from original image 

cv2.imwrite('horizontal.png',horizontal) 
cv2.imwrite('vertical.png',vertical) 
cv2.imwrite('result.png',img) 


cv2.imshow('last',img)  # show the resulted image after subtraction 

kerne = np.ones((3,3),np.uint8)    # kernel to remove the noise from the last image 
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kerne) # applying opening morphological operation to remove the noise from the image 
cv2.imshow('opening',opening)    # show the resulted image after removing noise 
cv2.imwrite('noise_removal.png',opening) 
cv2.waitKey(0) 

Проверить результат ниже, и посоветовать, как действовать дальше, чтобы обнаружить логические элементы из сканированных изображений рисованных схем?

В результате код ниже:

1) входного изображения:

2) Выход изображения (код результата):

+1

Результаты изображения не отображаются по ссылке –

+0

, вы хотите обнаружить только тип ворот и поместить их в массив или вы хотите создать граф (дерево) посредством анализа изображения? –

+0

@ Ссылка изображения изображения Anatoly теперь исправлена. Мы хотим сначала обнаружить ворота, а затем проанализировать выражение для схемы. –

ответ

0

Логические двери имеют одинаковый размер. Я бы сделал это:

  1. Подключенные компоненты с маркировкой белых областей.
  2. Отдельный/изолированный
  3. Отфильтруйте этикетки по размеру.
  4. (опционально) Все логические двери будут касаться крошечного белого рисунка/метки справа.

 Смежные вопросы

  • Нет связанных вопросов^_^