Thanks, this has helped simplify a lot of techniques I was getting my head around. Such a great pipeline, and a great tutorial. Keep them up in the same style!
@NicholasRenotte3 жыл бұрын
Thanks so much @Anthony, glad you enjoyed it!
@mencychristian18313 жыл бұрын
Man you saved my presentation ....thank you so much!
@NicholasRenotte3 жыл бұрын
YESS, glad I could help @Mency, how did your presentation go?
@mencychristian18313 жыл бұрын
@@NicholasRenotte That was my best presentation ever 😀
@NicholasRenotte3 жыл бұрын
@@mencychristian1831 YESSSSS, so glad to hear!!
@PlateCatcher7 ай бұрын
Awesome content! I've been diving into ANPR technology myself and recently developed a Windows app for it. It's fascinating to see the different approaches out there.
@philatkinson80512 жыл бұрын
Great video and really good explanation and as for typing that amount of code by hand and it working first time. . . Just amazing.
@geethasubramanyam Жыл бұрын
Notes to Self: @ 7:22 In the given code, the imshow() function is used to display the grayscale image, which has only one color channel. However, the imshow() function expects an RGB image to display, so the cvtColor() function is used to convert the grayscale image to RGB format by replicating the pixel values across all three color channels. This allows the imshow() function to display the image correctly, but the resulting plot will still show the image in grayscale.
@ScaryLasers6 ай бұрын
You are awesome! I am just digging in to python and you my friend are so informative, easy to undersatand, and the pacing is perfect. Thank you will be following and checking out your other vids 😁
@Matt.D-x9v2 ай бұрын
Some great inspiration for my related project; just one tip, I seem to find that adaptive mean thresholding works better than the canny filter. You're looking for a discrete shape, a number plate - not the edges of something which could be one of any number of shapes like.. well, the actual car. All license plates are going to either be rectangular or some small-vertex polygon similarly (
@padynz98692 жыл бұрын
Very lucid and beautifully presented, Nicholas.
@abhinavsingh5953 жыл бұрын
Program is working well, that helped a lot thanks.
@abhinavsingh351310 ай бұрын
Bro please tell me how to install and run the project please
@user-zj9pq5xc7x Жыл бұрын
I have mad respect towards you for this. thank you so much
@weixiangng82792 жыл бұрын
Great explanation from you Nicholas. Like the method you used.
@surajprakash4630 Жыл бұрын
Thanks man it's working fine...u explains very well
@EduardoAvelar3 жыл бұрын
Amazing approach. Thanks for sharing.
@NicholasRenotte3 жыл бұрын
Thanks so much @Eduardo!
@ozlematz25283 жыл бұрын
Thank you my teacher. Nice education. ^_^
@NicholasRenotte3 жыл бұрын
So glad you enjoyed it Özlem!
@johanneszwilling2 жыл бұрын
😎👍🏼 PERFECT Tutorial!
@JH-ms1jv3 жыл бұрын
Hey mate. Great videos. I’ve read through a few comments and pretty excited to see this “new” video ahah. Any idea when it’s going to be released?
@NicholasRenotte3 жыл бұрын
Was smashing it out til late last night @J H, let me know what you think: kzbin.info/www/bejne/Zl6XoZKHnNeXmKc
@joshinc68903 жыл бұрын
Thank you for sharing this great knowledge
@NicholasRenotte3 жыл бұрын
Anytime @Josh, glad you enjoyed it!
@satyanarayanakoppuravuri6 ай бұрын
i am not getting any location which you explained at 14:20 then what to do at that time?
@gustavojuantorena4 жыл бұрын
Another great tutorial, Nicholas! 👏👏
@NicholasRenotte4 жыл бұрын
🙏🙏🙏 thanks so much @Gustavo!!
@dharshinir71542 жыл бұрын
Clearly explained ....👏
@jesunahmadushno2 жыл бұрын
Hi, whenever i'm trying to import cv2 and other my jupyter kernel The kernel appears to have died. It will restart automatically. do you have any solution?
@LuisMunoz-ju2in3 жыл бұрын
You're amazing. This is the best video and tutorial I've seen. Please create a tutorial to apply Machine Learning to Number Plate Recognition!
@NicholasRenotte3 жыл бұрын
Definitely, going to try for deep learning @Luis!
@businessgamerprb53987 ай бұрын
Hi... Great video but the problem is it works only on about 10 percent of images in my data set... On others it either says cannot find contour or just detects wrong contour... I have tried with 400+ images and only got about 40-50 correct results... What should i do... Or is this algorithm not enough??
@godfreyfonseca57073 жыл бұрын
Really amazing,was very helpful. Just wanted to know if there's a way to use an entire dataset of images for this technique? Any tutorial you may know of? Thanks In advance!
@NicholasRenotte3 жыл бұрын
Stay tuned @Godfrey, updated version of this tutorial coming out this week!
@godfreyfonseca57073 жыл бұрын
@@NicholasRenotte great 😍🙌... looking forward to it!
@ronakttawde3 жыл бұрын
please make object tracking & counting video on vehicles in opencv & python
@abdulwaseymohammed9729 Жыл бұрын
Hi Nicholas, thanks for this video. Could you do another video that shows how to extract hand written text from the Crosswords puzzles and compare that with the correct answers?
@srabonbhowmik37803 жыл бұрын
Hi, In [44]: you have typed 'en' as the plate number is in English. but my question is will it work for the other languages like Bangla or Arabic or even German? Video duration: 19:28
@NicholasRenotte3 жыл бұрын
Supports a ton of languages @Srabon. Check this out: www.jaided.ai/easyocr/
@Knowledge_Wave8132 жыл бұрын
Amazing 👍👍
@ChirawatNg Жыл бұрын
Great tutorial !!!! Thank you
@Gudduyadav_1989 Жыл бұрын
Really great 👍 thank you 🙂
@jhansiballini58633 ай бұрын
Thank you for the detail. But could you please make a video of collecting toll tax using this ANPR.
@01bit3 жыл бұрын
Great explanation!!!
@NicholasRenotte3 жыл бұрын
Thanks a bunch @01bit, so glad you enjoyed it!
@vonvanmany9972 жыл бұрын
Hi Nicholas, Thank You for all the hard work you put into this tutorial, its taught me SO Much.. I have a question about the images you used vs. My own images , yours work fine in the program, but the ones I used doesn't populate any coordinates in the location cell. the properties of your images are: 160KB in sizes, 300dpi, 960x722 (dimensions) and 24 bit depth, my images are: 600KB, 96dpi, 2000x1500, and 24 bit depth, aren't
@vonvanmany9972 жыл бұрын
is this the reason why the coordinates aren't population or am I missing something in the code
@ashish.ksingh87653 жыл бұрын
Can u make some videos using open cv.... (Problem statement on real life based.. ) And also tere solution.
@manisharya21382 жыл бұрын
Please make one more video with great accuracy. This video is also excellent but I test some images on the data sometimes accuracy miss
@Andy-rq6rq4 жыл бұрын
Awesome vid Nick, surprised you don't have more subs. Any chance of considering doing semantic segmentation, particularly with the human body.
@NicholasRenotte4 жыл бұрын
Thanks so much @Andy, 😅 it's taken a little while but i've really only hit the ground running for a few months now! We'll get there! I've done it with JS (kzbin.info/www/bejne/gXLEiZV9p56iZtU), Python is defs coming!
@Andy-rq6rq4 жыл бұрын
@@NicholasRenotte Wow thanks!
@NicholasRenotte4 жыл бұрын
@@Andy-rq6rq anytime hombre!
@sakshishrivastava02103 жыл бұрын
Thanks a lot brother🙌
@NicholasRenotte3 жыл бұрын
Anytime @Sakshi!
@datapro0073 жыл бұрын
Hi, Nick, Great video. I did spend a lot of time on the Tensorflow version of this project that you posted a while back. What do you see as the plusses and minuses of the two different approaches?
@NicholasRenotte3 жыл бұрын
The TF version is a lot more resilient to different photos of plates. This almost needs to be tuned each time depending on lighting, contrast, hue and sat to be able to effectively pick up the plate each time. However the TF version is wayyyy more compute heavy.
@adityagoel27922 жыл бұрын
@@NicholasRenotte I had the same question. Thanks for clarifying Nick! Keep them coming - you're a GREAT teacher! :)
@nickgoddard84502 ай бұрын
i am trying to do this but just for single images, to send the program an image URL and have it return the numberplate text. Is there another tutorial or idea for something like that ? Thanks !
@MUHAMMADIZZKAMARUDDIN Жыл бұрын
why other images besides the 4 images provided cant extract the plate number?
@nathakritnukulrat3063 Жыл бұрын
I've got this problem too
@user-ed7cg1pv5f Жыл бұрын
Thank you so much for this code! Is there any way to do a performance evaluation of the code?
@piyushkumar-wg8cv2 жыл бұрын
What's the difference between this video and your 2 hour long video on ANPR
@Ben-gh1bz Жыл бұрын
This video uses OpenCv, the 2 hour long video uses TensorFlow
@232nate3 жыл бұрын
Thank you for the detail
@NicholasRenotte3 жыл бұрын
Glad you enjoyed it @232nate, this is the updated version if you're interested: kzbin.info/www/bejne/Zl6XoZKHnNeXmKc
@kronos99133 жыл бұрын
Nice thanks bro!
@NicholasRenotte3 жыл бұрын
Thanks so much @Kronos!
@costin2k Жыл бұрын
Great video , i want to add to this project real time object detection from webcam. Can you tell me few stepts for that? Thanks in advance :)
@nishkarve Жыл бұрын
Nicholas, great job. How do I apply EasyOCR on a camera stream?
@Владимир-ъ2ф9у3 жыл бұрын
Thank you!!! It is very interesting. I have a question. If the number is compound. And there are 2 rectangular counters? How much I tried, only the last contour defines.
@Alpha-mk5qw2 жыл бұрын
Are there any videos showing a physical prototype or build with a camera?
@rohit_mondal__3 жыл бұрын
thanks sir !...this helped me
@NicholasRenotte3 жыл бұрын
You're welcome man! So glad it helped!
@rohit_mondal__3 жыл бұрын
@@NicholasRenotte sir can u please make a video on yolo using keras ?
@NicholasRenotte3 жыл бұрын
@@rohit_mondal__ will take a look!
@tejeshwarrajput16793 жыл бұрын
Great video!! i have a doubt can do the same thing by using visual studio code ??
@NicholasRenotte3 жыл бұрын
Sure can, just need to install a Python interpreter into VSC.
@giggslim49173 жыл бұрын
Hi nic anyway to edit the code such that it can better detect images of black license plates with white text? (Singaporean License Plate)
@NicholasRenotte3 жыл бұрын
Heya @Giggs! Try out the new workflow, it's way more accurate and can do different types of plates!
@simbarashenyaruwata77402 жыл бұрын
Good day, Nicholas can i use opencv contour detection to detect square number plates used in Zimbabwe
@RavnnN2 жыл бұрын
line 28, in new_image = cv2.drawContours(mask, [location], 0,255, -1) error: (-215:Assertion failed) reader.ptr != NULL in function 'cvDrawContours' got this error... can u resolve it?
@nimeshkumar36633 жыл бұрын
hi, I just wanted to know can I use this model as a Text detection model, will this model be able to recognize text from images.
@NicholasRenotte3 жыл бұрын
Sure can, check out the drug extraction video I did for PaddleOCR. I show how to do it there.
@subhronilbiswas21902 жыл бұрын
My Jupiter kernel is dying each and every time I'm trying to import easyocr. Plzzzz help 😭😭😭😭😭😭😭😭😭😭
@arabe74869 ай бұрын
hi, im like zero of python, im trying to follow step by step but i could not install imutil, i've installed easyocr but here can i find imutil to install? thanks
@jaytab36863 жыл бұрын
Is this one better than the other one?
@vishwashehan84413 жыл бұрын
im having a error in reader = easyocr.Reader(['en']) line it says it's detection models an after like 2% it is getting stucked kinda very very slow any idea?
@swapnilchowdhury39572 жыл бұрын
Everything worked perfectly fine and I even got the cropped number plate but the line result = reader.readtext(cropped_image) Showing unknown C++ exception from opencv code I don't have GPU so using CPU only Plz help
@NicholasRenotte2 жыл бұрын
Try uninstalling opencv and reinstalling it using pip install opencv-python
@laponiec3 жыл бұрын
All I got after reading the text from the cropped image was an error: \Scripts\venv\lib\site-packages\easyocr\craft_utils.py", line 31, in getDetBoxes_core nLabels, labels, stats, centroids = cv2.connectedComponentsWithStats(text_score_comb.astype(np.uint8), connectivity=4) cv2.error: Unknown C++ exception from OpenCV code
@AbhinavKumar-xi2qw3 жыл бұрын
Can you please tell me how can we give command to Arduino to do something when we detect face or our algorithms given us yes to do something
@NicholasRenotte3 жыл бұрын
Haven't worked much with arduinos yet but when I do I got you!
@jiachuntan31444 жыл бұрын
I noticed that the program doesnt work well with black plates, how should I tweak it so it can detect black colour plates?
@NicholasRenotte4 жыл бұрын
Heya @Jia, can you share some of your example images? I can play around with the mask settings for you and give you some updated parameters!
@jiachuntan31444 жыл бұрын
@@NicholasRenotte sure, can u drop your email here ??
@NicholasRenotte4 жыл бұрын
@@jiachuntan3144 hmu on LinkedIn to share privately! www.linkedin.com/in/nicholasrenotte/
@aimenino72852 жыл бұрын
Hi have a small request in the last step (step 6) for rendering results can you help me how i can add Chinese characters and English on the image
@gugasevero762 жыл бұрын
Hi body! I run your code on colab. Almost everything perfect but other plate I tryed it recognize letter "I" as "1". There is some update?
@vikashchand.4 жыл бұрын
Killing it man! 🔥 Can you show how you would turn this into an api and host it maybe?
@NicholasRenotte4 жыл бұрын
WHADDUP @Vikash! Definitely, have some stuff with Streamlit and FastAPI planned!!
@vikashchand.4 жыл бұрын
@@NicholasRenotte sounds awesome man! Looking forward to it!
@raymondmichael49873 жыл бұрын
9 months later; asking if you made it bro
@pokojowyfreestyle92693 жыл бұрын
I don't know why, but it works for me only with Porsche, the others have still None on location step. Could you help me and tell on which parts of code should i focus?
@NicholasRenotte3 жыл бұрын
Heya @Pokojowy, walk through each step and ensure you're still detecting the edges appropriately. You might need to play with the Canny algorithm line!
@dhruvdarji7729 Жыл бұрын
I import opencv library but kernal automatically close??
@shukursabzaliev89293 жыл бұрын
Amazing intro ))) One question though, can the image size affect findContours functions?
@LIMYEOWCHYE3 жыл бұрын
Is it possible to actually automatically use the pictures inside the folder without manually typing the image file into cv2.imread?
@NicholasRenotte3 жыл бұрын
You can loop through the images in the folder using os.listdir then pass them to the model!
@teilorlopes10393 жыл бұрын
Great tutorial! What about to implement usign live videos!
@h-electronics6023 жыл бұрын
I have another question how can I detect a plate in a video instead of a high-quality picture I modified the code to take frames from a video but the plate is not really clear. In another video I used, the plate in it was very clear, but could not detect, and even I tried your original code with a screenshot of the scene but it could not detect the picture anyway. Any suggestions?
@NicholasRenotte3 жыл бұрын
Heya @H-Electronics, it might take some additional processing to detect. What I would suggest is using a DL model to identify the region with the plate, single out the region, apply perspective transformation (www.pyimagesearch.com/2014/08/25/4-point-opencv-getperspective-transform-example/) THEN applying OCR.
@h-electronics6023 жыл бұрын
@@NicholasRenotte Oops! The page you are looking for no longer exists. Perhaps starting from the site's homepage will get you on the right track. XD That what I found
@h-electronics6023 жыл бұрын
@@NicholasRenotte I am thinking of an algorithm to detect all the possible rectangles in the frame and then by machine learning try to identify whether this rectangle is a plate or not. Like the algorithm that recognize if this animal is cat or dog.The problem I think it will not be efficient because the processing time will belong. What do you think?
@NicholasRenotte3 жыл бұрын
@@h-electronics602 from what I've seen, it's normally a little slower than using non-deep learning powered OCR. It should be a lot more resilient to different styled plates though!
@joshuamiranda66883 жыл бұрын
Amazing!!!!!
@NicholasRenotte3 жыл бұрын
Thanks so much @Joshua!
@h-electronics6023 жыл бұрын
I have a problem in when in section number zero when I import the libraries. "The kernel appears to have died. It will restart automatically." it occurs only when I try to run "import easyocr", when I remove it runs normally, please help!
@NicholasRenotte3 жыл бұрын
Hmm, what does it say in your terminal or command prompt that's running the Jupyter Notebook server?
@h-electronics6023 жыл бұрын
@@NicholasRenotte I solved the problem, I cleaned my pc from everything related to python and download everything from the begging I Guess something was related to the log in appdata file was making problem. Thank you!
@NicholasRenotte3 жыл бұрын
@@h-electronics602 awesome stuff, yeah sometimes there's a bunch of conflicts and it requires a clean slate. Awesome work on getting it working though!!
@absormu9293 жыл бұрын
Thanks bro Nicholas Renotte....
@NicholasRenotte3 жыл бұрын
Thanks a ton @Absor!
@azmijedli7432 жыл бұрын
haw can i applied on raspberry pi plz for my graduation project
@Eightminutesengineering2 жыл бұрын
Great video , very helpful. When i am running this code , i am getting this error message ModuleNotFoundError: No module named 'imutils can you please guide
@NicholasRenotte2 жыл бұрын
Heya @Faryal, can you ensure you're running the notebook in the same kernel as what you've installed the dependencies in.
@Dillil3 жыл бұрын
Nice tutorial. Do you know how to recognize the characters without using easy OCR at the last step..? I want to use template matching technique to recognize the characters and i will have to use a dataset for it as well. Is there any tutorials you can point me to if you know..? Would be a huge help thank you.
@NicholasRenotte3 жыл бұрын
Heya @Dil lil, you could also use something like Tesseract or an API? Any reason you can't use Easy OCR?
@Dillil3 жыл бұрын
@@NicholasRenotte It’s for a college project. So I have to train a model.
@NicholasRenotte3 жыл бұрын
@@Dillil ah got it, I don't really have anything that's built from scratch yet unfortunately!
@jeeyashah20163 жыл бұрын
cv2.bitwise_and(img, img , mask=mask) why are you passing both sources parameter as the same 'img'? and why not img and new_image as first two parametres? also what does mask=mask mean?
@NicholasRenotte3 жыл бұрын
Heya @jeeya, this is probably the best explanation I've seen for it: stackoverflow.com/questions/32774956/explain-arguments-meaning-in-res-cv2-bitwise-andimg-img-mask-mask
@RanjitSingh-rq1qx2 жыл бұрын
Sir how can we create the front end for this project by using flask.
@akshitsoni98002 жыл бұрын
Hey bro m facing assert error 251 for drawcontour anu suggestion how to solve it
@electromusic92063 жыл бұрын
Hiii I am getting error like attribute error Cv2. Cv2 module not found something like that Help me out off it I am using Jupiter notebook
@NicholasRenotte3 жыл бұрын
Try installing opencv-python!
@jaap63843 жыл бұрын
Hey, amazing video first of. I do have one problem with the mask, it does not mask out the numberplate but instead masks out the window, any clue how i can fix this?
@NicholasRenotte3 жыл бұрын
Hold up on it, I've actually got a significantly better version of it coming this week!
@jaap63843 жыл бұрын
@@NicholasRenotte Oh that is great to hear? Does it use something like TensorFlow?
@NicholasRenotte3 жыл бұрын
@@jaap6384 sure does!
@ygproductions40254 жыл бұрын
I want to make a executable file with a GUI for this project. How can I do that? Please help me.
@NicholasRenotte4 жыл бұрын
Check out PySimpleGUI, you could probably wrap the code into something like that!
@santoshnarayana85933 жыл бұрын
Can this be embedded into android phone & used on live streaming 📷 in offline mode plz advice Thx in advance.
@NicholasRenotte3 жыл бұрын
Wouldn't recommend as it's super compute heavy.
@ahmedhelal9203 жыл бұрын
Hi thanks for this fantastic tutorial , how can we add button to add more than one picture and result convert it to excel ?
@NicholasRenotte3 жыл бұрын
Check out the new tutorial on the channel!
@rverm10005 ай бұрын
can this be used to detect numbers on coins? and color of coins?
@candrasniper34043 жыл бұрын
What if there is another text beside the number plate? Such as, numbers on car sticker.
@NicholasRenotte3 жыл бұрын
Normally would need to do some additional processes to manually filter it out. Could also filter based on detected region size i.e. the main plate is going to be the largest detected block of text (most of the time)
@candrasniper34043 жыл бұрын
@@NicholasRenotte if using region detected trick, so it must have a certain distance from the camera to get the range of plate box, if you do it in real time from a video capture, not from a photo. But it will also get another text in a box that close to the range region that we've set.
@diegolozano85393 жыл бұрын
Great video, is there a way to store those number plates?
@NicholasRenotte3 жыл бұрын
Yup definitely could @Diego, let me know if you want a vid on it. In the meantime you could write it out to a file once, just grab the text then use a standard output function: with open('outputfile.txt', 'w') as f: f.write()
@diegolozano85393 жыл бұрын
@@NicholasRenotte Thank you for your reply! it would be awesome to have a video on that!!
@MaestriiCabanelor3 жыл бұрын
please make video when u capture with live camera the plates
@NicholasRenotte3 жыл бұрын
Yup, definitely coming @Seby!
@rickieryan39193 жыл бұрын
Was just involved in a hit and run... Can you help me uncover the license plate number. should be fun haha
@NicholasRenotte3 жыл бұрын
Oh no! You should take a look at the super resolution models!
@lizzyangelinalphonsag1652 Жыл бұрын
when I run the import cell , my kernel is keep on dying .what should I do to recover from this problem ?@Nicholas Renotte
@35_pranotisarjoshi_2b62 жыл бұрын
Nich Sir, what if I dont have External Graphics card can it still work?
@hariskabeerhariskabeer61903 жыл бұрын
hi nicholas the video was literally awseome. but there is one thing i need to ask is how can i store the results in my data base because i am working on a parking system based on facial recognition and license plate recognition i have to first save the license plate result then go to the next process of verification and other stuff help will be appreciated.
@NicholasRenotte3 жыл бұрын
Depends on your db but you could output the results using a Python SQL client or something along those lines!
@malikahmad24413 жыл бұрын
@@NicholasRenotte is there any comma separation technique used and extract only number plate characters from the result and store it into a db ?
@NicholasRenotte3 жыл бұрын
@@malikahmad2441 not sure what's the goal of splitting by commas but you could use the split method. e.g. 'PLATE,99'.split(',') #will split based on commas
@yativijay13363 жыл бұрын
can you please make a video for helmet detection using open cv please
@NicholasRenotte3 жыл бұрын
Heya @Yati, check out the latest video, should give you a walkthrough on how to do it!
@marziehkhaliliy69082 жыл бұрын
this Code is perfect. thanks. but, Is there anyone to help me? I have problem in 4th part and i got error:(
@jainvinay2 жыл бұрын
Can you please write down the code
@raghuram98763 жыл бұрын
it is not working for me cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-wvn_it83\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor' it is showing me this no matter how many times i am editing
@sedky69 Жыл бұрын
Great video. Do you have a video on how to incorporate machine learning into this?
@charradmalek70202 жыл бұрын
Hi Nick great video thanks , i just wanted to ask you a question if it is possible to give me a tool so that it reads plates in Arabic I tried with ArabicOcr but I cannot install it on my computer
@NicholasRenotte2 жыл бұрын
Try PaddleOCR: github.com/PaddlePaddle/PaddleOCR
@lindazakraoui39742 жыл бұрын
hi there, did you find a solution to read plates in arabic please?
@abrahammathew97833 жыл бұрын
Hi Nick, Great Video!! One question, Is it possible to run this on a mp4 file.
@okanmaden39803 жыл бұрын
hey bro can u explain why text = result [0] [-2]. I didnt understand why it's "-" and why "2".
@NicholasRenotte3 жыл бұрын
The -2 grabs the second last value from the array!