Я хочу создать систему видения для обнаружения дефектов в конденсаторах SMD, дефект называется «крошечное отверстие», и они представляют собой небольшие отверстия на поверхности чипа, которые образуются во время конструирования. Моя цель состоит в том, чтобы создать алгоритм, способный обнаруживать эти дыры, и с этим отбросить чипы, имеющие этот дефект
. На данный момент я создал два кода:
- Первый преобразует исходное изображение в двоичное изображение, чтобы я мог очистить круги, код и результат выглядит следующим образом. после получения изображения в двоичном виде, я не знаю, как заставить мой алгоритм обнаруживать, что есть круг, в соответствии с тем, что я исследовал с «ХОГ», его можно применять только к изображениям в оттенках серого
`
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread("C:/Users/Johanna Menendez/Documents/UNIR/TFM/chips/20190905_124734.jpg", 0)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
newImg = cv2.resize(img, (0,0), fx=0.50, fy=0.50)
(thresh, blackAndWhiteImage) = cv2.threshold(newImg, 127, 255, cv2.THRESH_BINARY)
numpy_vertical_concat = np.concatenate((newImg, blackAndWhiteImage), axis=1)
cv2.imshow('binary', numpy_vertical_concat)
cv2.waitKey(0)
`
двоичный -Второй является обнаружение контуров, проблема в том, что он не только обнаруживает круги, а также после это я не знаю, как заставить мой алгоритм обнаружить, что это круг
import cv2
`
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread("C:/Users/Johanna Menendez/Documents/UNIR/TFM/chips/20190905_124734.jpg", 0)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
newImg = cv2.resize(img, (0,0), fx=0.50, fy=0.50)
gray = cv2.cvtColor(newImg, cv2.COLOR_RGB2GRAY)
(thresh, blackAndWhiteImage) = cv2.threshold(gray, 130, 255, cv2.THRESH_BINARY)
(contours, hierarchy) = cv2.findContours(blackAndWhiteImage, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
img = cv2.drawContours(newImg, contours, -1, (0, 255, 0), 2)
#numpy_vertical_concat = np.concatenate((newImg, img), axis=1)
cv2.imshow('binary', img)
cv2.waitKey(0)`
обнаружение контуров
Не могли бы вы помочь мне узнать, как мой алгоритм распознает круги?