Я планирую использовать Opencv на Raspberry pi 3 с камерой для подсчета строк на следующем изображении
Он будет использоваться в машине, которая производит резьбу. Если один (или несколько) будет потерян, машина остановится.
Теперь мне интересно, как это сделать ...?
Спасибо за совет!
РЕДАКТИРОВАТЬ
P.S. Я использовал cv2.findContours (ответ Джеру Люка). Я положил перед камерой лист формата А4 с черными линиями. Я нормально работаю в цикле while, НО ... у меня 43 строки на листе. Когда камера обнаруживает различия, я записываю результаты в файл. Иногда бывает 710,800,67 и т. д.
Пожалуйста, посмотрите файл со значениями, которые у меня есть https://www.dropbox.com/s/jnn4w8mq3rrtppo/bledy.txt?dl=0
строк .... Ошибка сохраняется в течение нескольких секунд. Tere замечает ошибку, когда у меня 43,43,43,43,44,43,43,43 (одно неверное), потому что я смотрю несколько значений, прежде чем поставить ошибку. Но когда есть сотни плохих ценностей, я понятия не имею ...
Используйте Преобразование линий Хафа для обнаружения линий и просто подсчитайте количество найденных вами countours.
Здесь есть руководство по вашей проблеме (поскольку вы не указали язык, он находится на python).
У меня есть что-то относительно попроще. Он не включает никаких петель for
, следовательно, требует меньше времени. Я использовал концепцию подсчета контуров на изображении после нахождения подходящего порога. Я нашел идеальный порог методом проб и ошибок.
У меня есть подход на питоне:
import cv2
path = 'C:/Users/Desktop/stack/contour/'
img = cv2.imread(path + 'lines.png', 0)
cv2.imshow('original Image', img)
ret, thresh = cv2.threshold(img, 80, 255, cv2.THRESH_BINARY_INV)
cv2.imshow('thresh1', thresh)
_, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
print('Number of lines:', len(contours))
cv2.waitKey(0)
cv2.destroyAllWindows()
Примечание:
for
не задействованы. Нет необходимости также подсчитывать количество изменений пикселей. Каждая предполагаемая линия становится контуром. Используя `len (contours), вы получаете количество имеющихся строк.
Мммм, поскольку ваша камера не параллельна плоскости резьбы, вы обнаружите, что на горизонтальной линии внизу изображения больше нитей, чем на горизонтальной линии вверху, поэтому вам, возможно, придется искать нерегулярные зазоры а не абсолютное количество потоков.