Изучение Python OpenCV / Урок #8 - Распознавание номерных знаков и чтение их

  Рет қаралды 52,273

Гоша Дударь

Гоша Дударь

Күн бұрын

В ходе урока мы научимся обрабатывать изображение и находить номерные знаки лишь при помощи библиотеки OpenCV. Нами будет создана программа, что будет находить номерной знак, считывать с него текст и выводить этот же текст на фото.
✅ Полезные ссылки:
- Урок на сайте itProger: itproger.com/course/opencv/8
⏰ Тайм-коды:
00:00 - Начало
00:20 - Установка всех библиотек
03:43 - Отображение фото
06:28 - Оптимизация фото
08:55 - Углы изображения
10:40 - Нахождение контуров
15:00 - Поиск нужного контура
20:10 - Использование маски
25:15 - Вырезаем номерной знак
28:20 - Чтение текста с фото
31:15 - Вывод текста на фото
36:25 - Заключительная часть
✔ Сообщество программистов: itproger.com/
✔ -------------
Вступай в группу Вк - prog_life 🚀
Группа FaceBook - goo.gl/XW0aaP
Инстаграм itProger: / itproger_official
Instagram: / gosha_dudar
Telegram: t.me/itProger_official
Twitter - / goshadudar
- Уроки от #GoshaDudar 👨🏼‍💻
- Все уроки по хештегу #goshaLessons

Пікірлер: 65
@fewds3509
@fewds3509 2 жыл бұрын
Как всегда очень познавательно.
@medvedservice9184
@medvedservice9184 2 жыл бұрын
Огромное спасибо за уроки, очень доходчиво и понятно. В примере все начинает корректно работать если поменять местами x и y в координатах квадрата - (y1, x1), (y2, x2), а в putText (y1, x2+60).
@sergeigamich
@sergeigamich 2 жыл бұрын
Спасибо!
@user-vs2nn1ug1l
@user-vs2nn1ug1l Жыл бұрын
# сбой произошел еще выше, а именно y,x=np.where(imgMask==255) x1,y1=np.min(x),np.min(y) x2,y2=np.max(x),np.max(y) crop=imgGrey[y1:y2,x1:x2] .... imgFinal=cv2.rectangle(img,(x1,y1),(x2,y2), (0,255,0),4) # если писать на фоне, будет симпатичнее imgFinal=cv2.putText(img,res,(x2+10,y1-10),cv2.FONT_HERSHEY_PLAIN,3,(0,0,0),20) imgFinal=cv2.putText(img,res,(x2+10,y1-10),cv2.FONT_HERSHEY_PLAIN,3,(0,0,255),4)
@iMarkusUS
@iMarkusUS Жыл бұрын
давайте вот под эту картинку напишем программу , а под другую картинку напишем другую программу ))) П-программирование универсальное
@mistressbowie2820
@mistressbowie2820 2 жыл бұрын
Подгонять картинку под код это ни чему не учит.
@rumvitrumvit8055
@rumvitrumvit8055 Жыл бұрын
А кто подскажет как избавиться от черты между номером и регионом? Иногда эта черта сильно мешает.
@ordinary1083
@ordinary1083 Жыл бұрын
у меня одного ошибка при импортировании opencv? AttributeError: partially initialized module 'cv2' has no attribute 'gapi_wip_gst_GStreamerPipeline' (most likely due to a circular import)
@user-ky3ix7of1d
@user-ky3ix7of1d Жыл бұрын
самый большой косяк когда идет поиск закрытого контура номера, это то, что у номера 2 закрытых контура: сам номер и регион. и некорректно работает или регион оставляет или сам номер
@WitcherCoin
@WitcherCoin Жыл бұрын
У меня не находит номер на картинке, менял всякие картинки, но безрезультатно
@user-cg6bw8rj6g
@user-cg6bw8rj6g 10 ай бұрын
у меня возникают проблемы после установки библиотеки easyocr просто после каждой каманды imshow вылазиет ошибка! у кого есть такая проблема?
@exwwbuz6030
@exwwbuz6030 2 жыл бұрын
Cделай курс видео по Котлин для андроид
@user-qx2mm2wi3v
@user-qx2mm2wi3v Жыл бұрын
Можете, кто нибудь скинуть данную программу? Пж
@TheGamerslog88
@TheGamerslog88 Жыл бұрын
почему то после того , как обрезали изображение. Не хочет выводится crop. Ошибка error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'. Может кто знает , в чём проблема?
@mineralski9054
@mineralski9054 Жыл бұрын
Смог пофиксить?
@Nandarion
@Nandarion Жыл бұрын
16:36 Емое да что это вообще такое! По документации approxPolyDP() принимает параметр epsilon - максимальная разница между оригиналом и результатом аппроксимации. чем он больше, тем наоборот, выбор будет шире.
@artemlunin
@artemlunin Жыл бұрын
Меня в ступор вогнал финальный кусок с распознаванием текста, в общем-то вручную взяли значение номера из большого массива. С таким же успехом можно было просто "глазами" распознать текст без библиотек и вывести это значение на картинке
@lol-et1fz
@lol-et1fz 11 ай бұрын
XDXD ))
@lol-et1fz
@lol-et1fz 11 ай бұрын
Бывает )
@ilyin_sergey
@ilyin_sergey Ай бұрын
Букву о и ноль ему можно простить. Ну охуенно, че
@user-lc6ww5rc2d
@user-lc6ww5rc2d Жыл бұрын
Не получается установить easyocr, требуется какой-то torch. torch тоже установить не получается, ошибку выдаёт.
@roboger6590
@roboger6590 6 ай бұрын
поменяй версию пайтон на 3.8 или ниже
@user-vs2nn1ug1l
@user-vs2nn1ug1l Жыл бұрын
# сбой произошел еще выше, а именно y,x=np.where(imgMask==255) x1,y1=np.min(x),np.min(y) x2,y2=np.max(x),np.max(y) crop=imgGrey[y1:y2,x1:x2] .... imgFinal=cv2.rectangle(img,(x1,y1),(x2,y2), (0,255,0),4) # если писать на фоне, будет симпатичнее imgFinal=cv2.putText(img,res,(x2+10,y1-10),cv2.FONT_HERSHEY_PLAIN,3,(0,0,0),20) imgFinal=cv2.putText(img,res,(x2+10,y1-10),cv2.FONT_HERSHEY_PLAIN,3,(0,0,255),4)
@daniil1001_
@daniil1001_ 9 ай бұрын
на винде не работает easyocr, а про винду вообще ничего не сказал где искать установщик сертификатов(30:08)
@user-if5ud2ne1z
@user-if5ud2ne1z 2 жыл бұрын
12 лайк за мной
@GoldenGorbah
@GoldenGorbah 3 ай бұрын
а как тренировать модель?
@mickeymouse2414
@mickeymouse2414 3 ай бұрын
Нашел ответ?
@java_notactive
@java_notactive 2 жыл бұрын
Первый лайк моооой!
@user-vt4bc9jf2t
@user-vt4bc9jf2t 7 ай бұрын
а как делать тоде самое толтко с камерой в реальном времяни ? Будет видос когда то?)
@DNA_original
@DNA_original 2 ай бұрын
Обрабатывать так каждый кадр видео
@freshtwist4722
@freshtwist4722 4 күн бұрын
Создаёшь цикл cap = cv2.VideoCapture(Путь к файлу или айди камеры) while True: suc, img = cap.read() потом уже идёт остальной код, представленный в видео
@_black_stack_9914
@_black_stack_9914 Жыл бұрын
А КАК РАБОТАТЬ С ВИДЕО?!
@ruden6623
@ruden6623 Жыл бұрын
Разбивать видео на отдельные кадры(изображения) и работать к каждым кадром по отдельности
@anolegych
@anolegych 2 жыл бұрын
Вооот, воооот! То, что нужно! Хочу написать для работы в больнице программку для распознания заводских номеров оборудования, с юи в ткинтер. Подскажите ребят, каким образом можно совместить в одной проге эти библиотеки? Я просто еще совсем зеленый. Что почитать/посмотреть?
@Crocohufu
@Crocohufu 2 жыл бұрын
Разберись сперва с этим примером, чтобы он мог больше одного номера распознать.
@anolegych
@anolegych 2 жыл бұрын
@@Crocohufu подразумевается, что из папки будет загружаться по 1 фотке, сразу распознаваться, возможно, и скорее всего, с выделением нужного места вручную, чтобы лишнее не считалось с шильдика. Ну и в таблицу заноситься. А вот как допустим заставить ткинтер отображать то, что прочитал cv2 и simpleocr, привязать к кнопкам их функции пока что для меня тайна покрытая мраком. Я понимаю, что нужно долго копать эти вещи, но пока не понимаю в какую сторону лопатой ткнуть, и той ли стороной лопаты я копаю вообще)
@Rejgan318
@Rejgan318 2 жыл бұрын
@@anolegych Копай в сторону PySimpleGUI
@kitoboynaya
@kitoboynaya Жыл бұрын
Бесплатно обучаю алгоритмической торговле! :)
@LOGOSTT
@LOGOSTT Жыл бұрын
4:35 это называется не "серый формат изображения", а "(256) оттенков серого"
@iMarkusUS
@iMarkusUS Жыл бұрын
Пиждец , когда есть уже готовые нейронеи мы будем ковырять эту шнягу и толку не добьёмся .. как насчёт просто адаптировать готовую нейронную сеть по распознаванию номеров и постараться ее оптимизировать
@nurkenabdurakhmanov779
@nurkenabdurakhmanov779 Жыл бұрын
19:24 у меня нашлось в этот момент
@blackRUS2010
@blackRUS2010 Жыл бұрын
Гоша, может все-таки прямоугольник, а не квадрат? Садись, два, давай дневник, родителей в школу!
@ruden6623
@ruden6623 Жыл бұрын
Квадрат тоже прямоугольник, но не каждый прямоугольник квадрат
@blackRUS2010
@blackRUS2010 Жыл бұрын
@@ruden6623 кто же с этим спорит? только вот автор использует "квадрат" применительно к автомобильному номеру, который квадратом не является ) вот если бы наборот, номер был бы квадратный, то подходили бы оба варианта
@kitoboynaya
@kitoboynaya Жыл бұрын
Бесплатно обучаю алгоритмической торговле! :)
@blackRUS2010
@blackRUS2010 Жыл бұрын
@@kitoboynaya зачем вы это делаете?))
@mardershadow3965
@mardershadow3965 2 жыл бұрын
а как ти коментируеш сразу несколько строк ?
@vadimlerner7167
@vadimlerner7167 2 жыл бұрын
cntr /
@polladerr
@polladerr Жыл бұрын
CUDA not available - defaulting to CPU. Note: This module is much faster with a GPU. до сих пор такая штука я на винде того файла у меня нет
@nurkenabdurakhmanov779
@nurkenabdurakhmanov779 Жыл бұрын
тоже самое
@bloodroot9245
@bloodroot9245 Жыл бұрын
Не разобрался случайно?
@dsdf15
@dsdf15 9 ай бұрын
@@bloodroot9245 Там говорится что CUDA ядра не доступны на процессоре(CPU). При использовании Графического процессора(GPU) этот модуль будет работать быстрее. Необходимы доп. установки для переключения на использование GPU вместо CPU.
@user-dh8mr5hj3z
@user-dh8mr5hj3z 8 ай бұрын
Прямоугольник не надо называть квадратом.
@irina5358
@irina5358 Жыл бұрын
Не работает код в 2023
@Harvey_Spectr
@Harvey_Spectr 10 ай бұрын
import cv2 import numpy as np import imutils import easyocr from matplotlib import pyplot as pl img = cv2.imread('images/AVto 2jpg.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_filter = cv2.bilateralFilter(gray, 11, 15, 15) edges = cv2.Canny(img_filter, 30, 200) cont = cv2.findContours(edges.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) cont = imutils.grab_contours(cont) cont = sorted(cont, key=cv2.contourArea, reverse=True) pos = None for c in cont: approx = cv2.approxPolyDP(c, 10, True) if len(approx) == 4: pos = approx break mask = np.zeros(gray.shape, np.uint8) new_img = cv2.drawContours(mask,[pos], 0, 255, -1) bitwise_img = cv2.bitwise_and(img, img, mask=mask) (x, y) = np.where(mask == 255) (x1, y1) = (np.min(x), np.min(y)) (x2, y2) = (np.max(x), np.max(y)) crop = gray[x1:x2, y1:y2] text = easyocr.Reader(['en']) text = text.readtext(crop) pl.imshow(cv2.cvtColor(crop, cv2.COLOR_BGR2RGB)) pl.show() Если не работает то попробуй заменить 574 img = cv2.resize(img,(model_height,int(model_height*ratio)), interpolation=Image.Resampling.LANCZOS) 576 img = cv2.resize(img,(model_height,int(model_height*ratio)), interpolation=Image.Resampling.LANCZOS)
@roboger6590
@roboger6590 6 ай бұрын
Ставте python 3.8 и будет счастье
@viktornekrasov5024
@viktornekrasov5024 2 жыл бұрын
Bla bla bla. Bla bla bla. Вода вода вода инфа. Вода вода вода инфа.
@elezthemdev
@elezthemdev Жыл бұрын
Говорит какой-то ноунейм, или интернетный троль 😂
@MickelBack888
@MickelBack888 2 жыл бұрын
Мда, чел уже много лет свои "уроки" выкладывает, а так и не научился программировать
@johnkh678
@johnkh678 2 жыл бұрын
А это по твоему стихи пушкина?Или ты хотел увидеть как он напишет приложение на милион доларов за 8 уроков.
@aveomathman5532
@aveomathman5532 Жыл бұрын
@@johnkh678 как минимум нормально код писать и не вводить в заблуждение новичков своими "уроками"
@Name-ko3qb
@Name-ko3qb Жыл бұрын
@@aveomathman5532 Это ознакомительные видео для полноты картины, очень полезно
@aveomathman5532
@aveomathman5532 Жыл бұрын
@@Name-ko3qb могу сказать так, что в ютубе есть авторы, которые затрагивают openCV и контент у них получается в разы качественнее. Рекомендую поискать opencv tutorial и тебе попадется много ознакомительных видео для полноты картины, ну или можно чекнуть документацию. Чем раньше начнешь использовать документацию, тем быстрее ты начнешь писать хороший код!
@kitoboynaya
@kitoboynaya Жыл бұрын
Бесплатно обучаю алгоритмической торговле! :)
Изучение Python OpenCV / Урок #7 - Распознавание лиц
15:53
When Steve And His Dog Don'T Give Away To Each Other 😂️
00:21
BigSchool
Рет қаралды 16 МЛН
100😭🎉 #thankyou
00:28
はじめしゃちょー(hajime)
Рет қаралды 58 МЛН
Распознавание автомобильных номеров
8:26
VIDEOMAX - видеонаблюдение для профессионалов
Рет қаралды 58 М.
Твоя ПЕРВАЯ НЕЙРОСЕТЬ на Python с нуля! | За 10 минут :3
18:31
Хауди Хо™ - Просто о мире IT!
Рет қаралды 229 М.