diff --git a/Number-Plate-Detection/Numberplatedetection.py b/Number-Plate-Detection/Numberplatedetection.py new file mode 100644 index 0000000..ccd2bd5 --- /dev/null +++ b/Number-Plate-Detection/Numberplatedetection.py @@ -0,0 +1,67 @@ +import cv2 +import os +import time + +cascade_path = 'indian_license_plate.xml' +plate_cascade = cv2.CascadeClassifier(cascade_path) +if plate_cascade.empty(): + print(f"Error loading cascade from {cascade_path}") + exit() + +os.makedirs('plates', exist_ok=True) +video_path = 'Trafic Camera.mp4' +cap = cv2.VideoCapture(video_path) +if not cap.isOpened(): + print(f"Error opening video file {video_path}") + exit() + +plate_count = 0 +last_save_time = 0 +save_delay = 0.5 + +while True: + ret, frame = cap.read() + if not ret: + print("End of video or cannot read frame.") + break + + frame = cv2.resize(frame, (960, 540)) + + gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + + gray = cv2.equalizeHist(gray) + + gray = cv2.bilateralFilter(gray, 11, 17, 17) + + roi = gray[270:540, :] + + plates = plate_cascade.detectMultiScale( + roi, + scaleFactor=1.05, + minNeighbors=7, + minSize=(60, 20) + ) + + current_time = time.time() + + for (x, y, w, h) in plates: + y += 270 + + aspect_ratio = w / h + if 2 < aspect_ratio < 5: + cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) + + if current_time - last_save_time > save_delay: + plate_count += 1 + plate_img = frame[y:y+h, x:x+w] + cv2.imwrite(f"plates/plate_{plate_count}.jpg", plate_img) + print(f"Saved plate_{plate_count}.jpg") + last_save_time = current_time + + cv2.imshow("Number Plate Detection", frame) + + if cv2.waitKey(1) & 0xFF == ord('q'): + print("Quit pressed, exiting.") + break +cap.release() +cv2.destroyAllWindows() diff --git a/Number-Plate-Detection/README.md b/Number-Plate-Detection/README.md new file mode 100644 index 0000000..529aa7b --- /dev/null +++ b/Number-Plate-Detection/README.md @@ -0,0 +1,88 @@ +# Number Plate Detection 🚘🔍 + +This project is a simple Number Plate Detection system built using **OpenCV** and **Python**. It uses image processing techniques and a pre-trained Haar Cascade classifier to detect number plates in real-time from video streams or static images. + +## 📸 Demo + +![Screenshot 2025-05-21 160620](https://github.com/user-attachments/assets/fd6d233e-a948-4015-aab3-50ec09ac9f75) + + +## 🧠 Features + +- Real-time number plate detection using webcam +- Uses OpenCV's Haar Cascade Classifier +- Highlights detected number plates with rectangles +- Can be extended for OCR (Optical Character Recognition) + +## 🛠️ Technologies Used + +- Python 3.x +- OpenCV +- Haar Cascade Classifier + +## 📁 Project Structure + +Number-Plate-Detection/ + +│ + +├── Numberplatedetection.py # Main script for plate detection + +├── haarcascade_russian_plate_number.xml # Haar Cascade model for number plates + +└── README.md # Project documentation + +## 🚀 How to Run + +### 1. Clone the Repository + +```bash +git clone https://github.com/iamdevdhanush/Number-Plate-Detection.git +cd Number-Plate-Detection +``` + +2. Install Requirements + +```bash +pip install opencv-python +``` + +3. Run the Script + +```bash +python Numberplatedetection.py +``` + +📦 Dependencies +``` +opencv-python +``` +You can install them using pip: + +``` +pip install -r requirements.txt +``` + +📌 Notes + +Make sure you have the correct Haar Cascade XML file (haarcascade_russian_plate_number.xml). + +This project is a basic implementation and doesn't perform OCR. You can extend it using pytesseract for extracting plate text. + +🤖 Future Improvements + +Add OCR to extract text from number plates + +Improve accuracy with deep learning-based detection (YOLO, SSD) + +Support detection in images and video files + +📄 License + +This project is licensed under the MIT License. + +🙋‍♂️ Author + +Dhanush + +GitHub diff --git a/Number-Plate-Detection/Trafic Camera.mp4 b/Number-Plate-Detection/Trafic Camera.mp4 new file mode 100644 index 0000000..373b6f9 Binary files /dev/null and b/Number-Plate-Detection/Trafic Camera.mp4 differ diff --git a/Number-Plate-Detection/indian_license_plate.xml b/Number-Plate-Detection/indian_license_plate.xml new file mode 100644 index 0000000..1509669 --- /dev/null +++ b/Number-Plate-Detection/indian_license_plate.xml @@ -0,0 +1,774 @@ + + + + BOOST + LBP + 13 + 52 + + GAB + 9.9500000476837158e-01 + 5.0000000000000000e-01 + 9.4999999999999996e-01 + 1 + 100 + + 256 + 1 + 12 + + + <_> + 4 + -1.5821634531021118e+00 + + <_> + + 0 -1 44 308024693 -428545 2073820639 -52225 -67388417 + -140357 -89522241 -1073856515 + + -8.3980286121368408e-01 5.0890344381332397e-01 + <_> + + 0 -1 43 478420345 -141827 -613384193 -64001 -1153368067 + -411143 -1093866499 -1078449672 + + -7.0110827684402466e-01 5.5775439739227295e-01 + <_> + + 0 -1 18 338691444 2098804125 1024409535 -1082714123 + 1019050495 -4603461 1067105279 -266257 + + -6.3792645931243896e-01 5.8313608169555664e-01 + <_> + + 0 -1 51 590090517 -1107315363 1834336255 -1073774625 + -1144341569 -37749761 -1145176162 -1080153284 + + -5.8223354816436768e-01 5.9667408466339111e-01 + + <_> + 5 + -1.9795182943344116e+00 + + <_> + + 0 -1 9 -270536721 -997470257 -2013050814 -389289649 + -271845817 1077993474 -158866681 -134218753 + + -8.0115187168121338e-01 4.5364892482757568e-01 + <_> + + 0 -1 74 -339744981 -874523861 -1878818814 -1029716521 + -1218229757 554402178 -697830654 -201329681 + + -6.3889116048812866e-01 5.5221247673034668e-01 + <_> + + 0 -1 16 -1572881 -372055538 -127958685 -766614885 -17341969 + 2072203271 1531153387 49760863 + + -6.5832072496414185e-01 5.0100201368331909e-01 + <_> + + 0 -1 33 70255901 -32834 -1074003969 -1073924117 -33554433 + -655361 -135169 -1073860609 + + -5.1661574840545654e-01 6.4780247211456299e-01 + <_> + + 0 -1 47 351819221 -755715 -1073872899 2013265917 -16973829 + -671746 -229927 -1096282136 + + -5.5564248561859131e-01 5.7492965459823608e-01 + + <_> + 5 + -2.0048213005065918e+00 + + <_> + + 0 -1 37 -579281411 -141859 -581043201 -545662499 -302186499 + -1470017 -611647489 -1073996552 + + -7.6023739576339722e-01 4.0190881490707397e-01 + <_> + + 0 -1 41 8389085 -2803461 -1212416513 -40961 -336348161 + -1080641 -1147142401 -1141239810 + + -6.7304128408432007e-01 4.2959162592887878e-01 + <_> + + 0 -1 23 -1174406657 -573761 -1992050373 -1073771586 + -537314389 -1074460230 -6574213 181021224 + + -6.2686002254486084e-01 4.6247422695159912e-01 + <_> + + 0 -1 76 -72614613 -902827109 -493237918 -1563730601 + 2075120726 1405014685 -9447662 -146821321 + + -5.6248772144317627e-01 4.8325377702713013e-01 + <_> + + 0 -1 34 473962877 -749120037 -1655590409 -536977969 + -1175959555 -1078421463 972566009 -1366685380 + + -4.8482784628868103e-01 5.3586608171463013e-01 + + <_> + 6 + -1.6881239414215088e+00 + + <_> + + 0 -1 20 -605031937 -581736673 -213796353 -2390641 + -1439717121 -2257749 -1681159761 -1077990870 + + -7.3286467790603638e-01 3.5483869910240173e-01 + <_> + + 0 -1 24 -8324880 -10585707 -656121857 -10661551 -1718830595 + -106353733 -1080129091 -1949693752 + + -5.9217196702957153e-01 4.6253615617752075e-01 + <_> + + 0 -1 6 -286265749 -298875922 -1986868854 -489693752 + 2060188431 1646258224 -249567529 -152044817 + + -4.8896503448486328e-01 5.2091324329376221e-01 + <_> + + 0 -1 45 75500784 2111603675 387259645 1063206869 -1951875077 + -324663 2140019391 -1615315475 + + -6.8134146928787231e-01 3.8123682141304016e-01 + <_> + + 0 -1 15 -537667842 936823012 -762879886 550666714 680352171 + 394272911 -1021625861 1624760547 + + -6.3300865888595581e-01 3.9577165246009827e-01 + <_> + + 0 -1 29 6030637 -543706663 -1617437219 -67121131 -5512535 + -91821895 -68224513 -1093793613 + + -6.2998151779174805e-01 3.7764960527420044e-01 + + <_> + 6 + -1.9388419389724731e+00 + + <_> + + 0 -1 75 -201326837 -955261557 -1018968830 -338701545 + -84741625 1917292586 -719068624 -201589257 + + -7.4817961454391479e-01 2.7826941013336182e-01 + <_> + + 0 -1 10 -271923218 -337893890 -856682924 2058550718 + 1863060560 1778402655 2029218814 -4456453 + + -6.4382976293563843e-01 3.5757163166999817e-01 + <_> + + 0 -1 52 1073806812 -14908455 -1311770659 -144870421 + -73084932 -340858680 -1347886596 -70721976 + + -6.2845903635025024e-01 3.7706661224365234e-01 + <_> + + 0 -1 69 -528502 -387186707 942929664 4977111 1369140037 + 3912810 1542192932 1089468599 + + -7.8141981363296509e-01 2.7090081572532654e-01 + <_> + + 0 -1 62 -517424904 2078052509 -753127975 -704884716 + -1312248900 -1077312372 -1366107208 -1368647756 + + -6.3508522510528564e-01 3.7355837225914001e-01 + <_> + + 0 -1 19 80479509 -711036422 -686490305 -136353774 -218509569 + -55838549 -1215438856 -1611239582 + + -5.6283277273178101e-01 3.9366087317466736e-01 + + <_> + 7 + -1.1975721120834351e+00 + + <_> + + 0 -1 7 -272634129 -963657594 -971538330 -824720410 + -212870306 1628164179 -569646113 -201589761 + + -7.3248410224914551e-01 2.2834645211696625e-01 + <_> + + 0 -1 60 537003349 -2172961 -1649149473 -2105889 -1143222597 + -70426502 -1629491265 -1342226499 + + -5.9971082210540771e-01 3.7090694904327393e-01 + <_> + + 0 -1 28 -139484633 633778115 613356034 1893456382 1929513286 + 7889682 2003218950 -743446533 + + -5.1720756292343140e-01 4.6159994602203369e-01 + <_> + + 0 -1 50 -67130742 -1025860886 1658376196 1623355567 + -226069756 6739978 -970739120 -239079801 + + -4.8045945167541504e-01 4.7559025883674622e-01 + <_> + + 0 -1 36 1051760 397677560 1439363069 -6605603 -91701527 + -1612182821 2139242394 531666169 + + -7.0112109184265137e-01 3.2478842139244080e-01 + <_> + + 0 -1 30 -710117564 -4275245 -44180227 -11341222 -605965683 + -393688694 -18287730 -528234358 + + -5.1906365156173706e-01 4.6794250607490540e-01 + <_> + + 0 -1 65 -10486120 470573976 809832752 -1625566252 -592709616 + 450601532 -642780811 -805310601 + + -5.5150657892227173e-01 4.2102628946304321e-01 + + <_> + 8 + -1.6684050559997559e+00 + + <_> + + 0 -1 68 -16617 -2100257 -779233793 -576725029 -387253249 + -6373185 -17827073 -1025 + + -6.4715272188186646e-01 4.4864866137504578e-01 + <_> + + 0 -1 8 -268448985 -355843602 -1066677054 -454556850 + -1850029733 1739679818 -201854121 -150995969 + + -5.4795455932617188e-01 3.4248238801956177e-01 + <_> + + 0 -1 35 9703761 -136890384 1528304123 -2153827 914860991 + -1168432737 904731819 2067472703 + + -4.9102684855461121e-01 4.1780465841293335e-01 + <_> + + 0 -1 55 -13242385 -2675729 -715786761 -33556920 -544490497 + -34128604 -207635955 2137457152 + + -4.7315219044685364e-01 4.2060080170631409e-01 + <_> + + 0 -1 70 -409993696 824695020 1216987392 967285123 487053568 + 38167023 2023952693 1991232809 + + -6.6825598478317261e-01 3.2621189951896667e-01 + <_> + + 0 -1 49 268703569 -269258498 -246026531 -1075839493 + -607667781 -1148620615 -202542753 -1093527172 + + -6.2558317184448242e-01 3.0197361111640930e-01 + <_> + + 0 -1 27 -115364358 931465351 51456167 1066342839 -124789286 + 215691467 1807916027 -1198522 + + -4.6513053774833679e-01 4.2068210244178772e-01 + <_> + + 0 -1 14 2076169716 -2369830 461971472 2095348214 231216624 + 1598826671 524897276 1543462647 + + -5.3952771425247192e-01 3.6494618654251099e-01 + + <_> + 7 + -1.3922821283340454e+00 + + <_> + + 0 -1 3 -356077597 -139013693 -112730657 -3736518 -70254917 + -609234449 -626003969 -4105 + + -6.9726443290710449e-01 1.0850439965724945e-01 + <_> + + 0 -1 21 523263484 -1646465027 -550379553 -126211 -1181166756 + -2567752 -356450308 -1082639012 + + -6.4814126491546631e-01 2.3434743285179138e-01 + <_> + + 0 -1 57 -997793790 -119539761 -913836593 -137443421 + -274082845 -337391317 -330302465 1078452898 + + -5.6031310558319092e-01 3.2201811671257019e-01 + <_> + + 0 -1 64 -1109393644 783610748 -209977347 -1080043298 + -113512515 -1896112329 -72644424 -1880105484 + + -4.7628229856491089e-01 3.8589614629745483e-01 + <_> + + 0 -1 13 2010638319 1876617455 -860523545 672849954 957072795 + -71565685 1026645807 1206384583 + + -5.0234788656234741e-01 3.9042916893959045e-01 + <_> + + 0 -1 46 -135275158 -1832679569 151438112 -896564310 + -158994365 4977153 -902644810 -168826906 + + -4.6180748939514160e-01 4.2590984702110291e-01 + <_> + + 0 -1 32 2500868 -37027389 1003830773 -1082436709 -1180051030 + -307304261 -72599091 -1074517192 + + -6.7851001024246216e-01 2.9109567403793335e-01 + + <_> + 7 + -1.3981715440750122e+00 + + <_> + + 0 -1 2 -290460049 -287353881 -507258913 -60819233 -22285313 + -89212597 -676331525 -2097225 + + -6.8647056818008423e-01 1.6538882255554199e-01 + <_> + + 0 -1 63 -318784500 -1084367369 -58458115 -34080599 + -118777192 -345255896 -1096109944 -656672181 + + -5.4743081331253052e-01 2.8956905007362366e-01 + <_> + + 0 -1 39 -3150586 -294731675 1644185600 -673257138 -521942270 + 1128769704 1448072003 -739257585 + + -4.2168867588043213e-01 4.0135908126831055e-01 + <_> + + 0 -1 31 -1135823883 -757668 999612157 -6490627 -1149441028 + -1537893 -805438983 -1163391108 + + -4.9981307983398438e-01 3.4327375888824463e-01 + <_> + + 0 -1 11 -268442450 -168569637 -1195651454 -765742899 + 1395329831 521095743 1554662949 1951394811 + + -5.9372252225875854e-01 3.0440413951873779e-01 + <_> + + 0 -1 25 72355157 -673456645 335140055 2103251928 -225478229 + -239429117 -400374294 -1929614480 + + -6.4170426130294800e-01 2.4903862178325653e-01 + <_> + + 0 -1 42 -151275570 1351545059 805584004 902033849 + -1979217938 273843401 -247221778 1438874622 + + -5.6551593542098999e-01 3.0046430230140686e-01 + + <_> + 7 + -1.2768253087997437e+00 + + <_> + + 0 -1 72 -335548649 1934834527 -1296567941 2055200735 + 804235845 2061233379 -384041262 -17 + + -7.0549857616424561e-01 8.0438755452632904e-02 + <_> + + 0 -1 61 804232980 894980543 -782300163 -1077937189 -58017090 + -1343516525 -877712980 -1455424033 + + -4.9817597866058350e-01 2.8848552703857422e-01 + <_> + + 0 -1 0 -1568439445 -363865089 -1386890945 1385034326 + -298061441 -965762399 1810887151 -320866896 + + -3.9815270900726318e-01 3.9712515473365784e-01 + <_> + + 0 -1 53 -640041994 536360410 963584540 972535293 938487020 + 1072175677 1071593449 2147480543 + + -4.9214878678321838e-01 3.3720245957374573e-01 + <_> + + 0 -1 26 -934155 2147335917 -268501397 -1074922514 -537116738 + -1176440836 -671748145 -2100499766 + + -3.8093495368957520e-01 4.2473357915878296e-01 + <_> + + 0 -1 67 -956323798 1250915225 -2094399029 1952357835 + -405015736 1879221328 1653463714 1087108095 + + -5.4112964868545532e-01 3.0530884861946106e-01 + <_> + + 0 -1 17 1473793756 -611823278 -794652195 1535906256 + 1897403356 -1230212702 -845130760 1031304120 + + -6.7982202768325806e-01 2.2837364673614502e-01 + + <_> + 7 + -1.4132889509201050e+00 + + <_> + + 0 -1 12 -536875009 -2440229 -879574145 -631633446 -607421733 + -876133969 -68424037 -1 + + -6.4715534448623657e-01 2.7853882312774658e-01 + <_> + + 0 -1 73 -1477499641 -974176545 -842545293 -157288001 + 1905777490 1562087471 -3745916 -7618561 + + -4.5892652869224548e-01 3.4213942289352417e-01 + <_> + + 0 -1 56 75632917 -237112745 -543432897 -1084236583 + -1179206657 -38041473 -861293605 -1147257866 + + -5.5536472797393799e-01 2.8528028726577759e-01 + <_> + + 0 -1 58 -138468826 1273811468 353640576 2127243213 + 1461650197 969213753 918751790 1999634394 + + -6.1491394042968750e-01 2.4912446737289429e-01 + <_> + + 0 -1 54 -1162866956 2134667985 -99042851 -1109503784 + -1196887363 -73883459 2139668473 716970952 + + -7.2157818078994751e-01 2.3274585604667664e-01 + <_> + + 0 -1 5 -487398398 -1937708982 -804074470 974963746 973503047 + 1210623275 -91234049 -412617609 + + -5.3705358505249023e-01 2.8468334674835205e-01 + <_> + + 0 -1 38 -341841398 1753744002 135016450 843723747 + -2113196852 36045198 -1018174713 -246420569 + + -4.4833818078041077e-01 3.5536417365074158e-01 + + <_> + 8 + -1.7711157798767090e+00 + + <_> + + 0 -1 4 -296753297 1714156518 -771535401 -219220658 + -738197729 659285035 -208932705 -33 + + -7.1962618827819824e-01 -2.0501138642430305e-02 + <_> + + 0 -1 48 -532156542 -75509505 -714114689 -35808497 -748954629 + -8404374 1203960831 1879564870 + + -5.3061449527740479e-01 2.5552752614021301e-01 + <_> + + 0 -1 71 -809505008 148437557 2100231608 -36126372 + -1957963599 -1693853121 -1428218156 766506992 + + -5.8492779731750488e-01 2.5657415390014648e-01 + <_> + + 0 -1 22 -1021107947 -545522707 -1048707 -146903060 + -1787297987 -268632082 -253955 -1342484681 + + -3.6037015914916992e-01 4.6110373735427856e-01 + <_> + + 0 -1 1 -614513110 -438073334 2032912326 40913542 -565458613 + -406075145 -1669338114 1201095750 + + -5.8847701549530029e-01 2.6689708232879639e-01 + <_> + + 0 -1 40 -47468470 -47250930 353509480 1470574770 -1020645334 + 283253657 1444053065 1472977026 + + -5.0797688961029053e-01 3.0955684185028076e-01 + <_> + + 0 -1 59 141558648 -4148866 -818097707 380406893 505420265 + 2057962113 -1885320197 -1392608015 + + -5.9863525629043579e-01 2.6135751605033875e-01 + <_> + + 0 -1 66 -2099954413 -269274625 -225782025 1943642134 + -2645043 -1172682579 -2146894454 -1074512977 + + -4.0345665812492371e-01 3.9659076929092407e-01 + + <_> + + 0 0 1 1 + <_> + + 0 0 4 4 + <_> + + 0 1 1 1 + <_> + + 0 1 3 1 + <_> + + 0 2 1 1 + <_> + + 0 2 2 2 + <_> + + 0 3 1 1 + <_> + + 0 4 1 2 + <_> + + 0 5 1 1 + <_> + + 0 6 1 1 + <_> + + 0 7 2 2 + <_> + + 0 7 3 1 + <_> + + 0 10 1 1 + <_> + + 1 2 5 3 + <_> + + 1 4 3 3 + <_> + + 1 4 5 2 + <_> + + 2 2 4 3 + <_> + + 2 10 1 1 + <_> + + 3 7 13 2 + <_> + + 4 0 3 1 + <_> + + 4 2 15 3 + <_> + + 4 10 3 1 + <_> + + 5 0 4 1 + <_> + + 5 2 13 3 + <_> + + 5 10 7 1 + <_> + + 6 0 2 1 + <_> + + 6 2 6 2 + <_> + + 6 5 5 2 + <_> + + 6 6 1 1 + <_> + + 7 0 1 1 + <_> + + 7 1 4 2 + <_> + + 7 10 2 1 + <_> + + 8 0 10 1 + <_> + + 9 0 9 1 + <_> + + 9 10 6 1 + <_> + + 10 8 11 1 + <_> + + 10 9 10 1 + <_> + + 12 10 9 1 + <_> + + 13 6 1 1 + <_> + + 14 5 1 1 + <_> + + 15 4 1 2 + <_> + + 16 0 3 1 + <_> + + 16 6 2 1 + <_> + + 16 10 5 1 + <_> + + 18 0 5 1 + <_> + + 18 7 9 2 + <_> + + 19 5 2 1 + <_> + + 19 10 7 1 + <_> + + 20 0 2 3 + <_> + + 21 0 3 1 + <_> + + 21 6 1 1 + <_> + + 23 0 5 1 + <_> + + 23 0 7 2 + <_> + + 23 6 2 2 + <_> + + 24 10 4 1 + <_> + + 26 1 6 3 + <_> + + 27 0 2 1 + <_> + + 28 0 2 3 + <_> + + 30 5 2 2 + <_> + + 31 9 3 1 + <_> + + 35 0 3 1 + <_> + + 37 9 5 1 + <_> + + 38 10 2 1 + <_> + + 40 0 4 2 + <_> + + 40 10 4 1 + <_> + + 43 7 3 2 + <_> + + 44 0 2 1 + <_> + + 45 2 2 2 + <_> + + 46 0 2 1 + <_> + + 46 5 2 1 + <_> + + 46 6 2 2 + <_> + + 46 10 2 1 + <_> + + 49 1 1 1 + <_> + + 49 2 1 1 + <_> + + 49 4 1 1 + <_> + + 49 5 1 2 + <_> + + 49 6 1 1 +