Skip to content

Instantly share code, notes, and snippets.

@udayapeddirajub
Last active July 27, 2022 08:30
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save udayapeddirajub/b3478358fdf50e481aeeb8560e854c02 to your computer and use it in GitHub Desktop.
Save udayapeddirajub/b3478358fdf50e481aeeb8560e854c02 to your computer and use it in GitHub Desktop.
import cv2
import imutils
import numpy as np
import pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd = 'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe'
path = r'C:\Program Files (x86)\Tesseract-OCR\7.jpg'
# Using cv2.imread() method
img = cv2.imread(path)
#print(img)
img = imutils.resize(img, width=500 )
#print(img)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #convert to grey scale
gray = cv2.bilateralFilter(gray, 11, 17, 17) #Blur to reduce noise
edged = cv2.Canny(gray, 30, 200) #Perform Edge detection
cnts,new = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
img1=img.copy()
cv2.drawContours(img1,cnts,-1,(0,255,0),3)
cv2.imshow("img1",img1)#
cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:30]
screenCnt = None #will store the number plate contour
img2 = img.copy()
cv2.drawContours(img2,cnts,-1,(0,255,0),3)
cv2.imshow("img2",img2) #top 30 contours
count=0
idx=7
# loop over contours
for c in cnts:
# approximate the contour
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.018 * peri, True)
if len(approx) == 4: #chooses contours with 4 corners
screenCnt = approx
x,y,w,h = cv2.boundingRect(c) #finds co-ordinates of the plate
new_img=img[y:y+h,x:x+w]
cv2.imwrite('./'+str(idx)+'.png',new_img) #stores the new image
idx+=1
break
#draws the selected contour on original image
cv2.drawContours(img, [screenCnt], -1, (0, 255, 0), 3)
cv2.imshow("Final image with plate detected",img)
Cropped_loc='./7.png' #the filename of cropped image
cv2.imshow("cropped",cv2.imread(Cropped_loc))
pytesseract.pytesseract.tesseract_cmd=r"C:\Program Files (x86)\Tesseract-OCR\tesseract.exe" #exe file for using ocr
text=pytesseract.image_to_string(Cropped_loc,lang='eng') #converts image characters to string
path = r'C:\Program Files (x86)\Tesseract-OCR\7.jpg'
k=cv2.waitKey(0)
if k==27:
cv2.destroyAllWindows()
@udayapeddirajub
Copy link
Author

Hi,
This code is useful for extracting the licence plate number from the image with OCR technique, you can customize the code as per your requirements.
make sure that you have all the required libraries in the mentioned path.
here is the image I used for testing.

7

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment