OPTICAL MARK RECOGNITION (OMR) MCQ Automated Grading- OpenCV Python

preview_player
Показать описание
In this video, we are going to learn how to create an Optical Mark recognition algorithm in python using OpenCV. We will write the code from scratch going step by step while discussing the details of each line. We will use the webcam to automatically find the grades of MCQs.

🚀🚀 My Urdu/Hindi AI YouTube Channel 🚀🚀

Code and Files:
coming soon...

Premium Courses:
✔️ Computer Vision Game Development Course:
✔️ Computer Vision with Arduino Course:
✔️ Advanced Drone Programming Course:
✔️ Learn to Build Computer Vision Mobile Apps:
✔️ Jetson Nano Premium Course:

⚙️⚙️⚙️—-My Gear — ⚙️⚙️⚙️

Follow Me:

#ComputerVision
#OpenCV
#CVZone
Рекомендации по теме
Комментарии
Автор

You offer all these courses for free, you are indeed a great Man. Thanks for the awesome work Sir.

chukypedro
Автор

Great Tutorial. I wonder why this video has so few likes and comments. This video and the creator's effort need more appreciation.

Thanks Murtaza

faizalimuhammadzoda
Автор

I've been watching your tutorials since I woke up today and I'm really amazed!!! Tks for that!!!

adrianorcampos
Автор

Honestly, you have helped me SO much with your videos! It's difficult to find good documentation for these things and the way you break down the details is so amazing. Thank you, you've taught me a LOT! I'm for sure going to get some courses from you.

Deserthacker
Автор

I admire the punctuality of your course. Long ago (1985) our School Guidance Bureau bought an OMR reader and the Sofware to read bundles of marked sheets, marked by students, to establish their level of performance on several multiple choice tests. The raw scores were saved to a file. And by another program the final results were calculated and printed.
I wonder if the same can be accomplished by the scanner in an all-in-one printer :)
Until now the sheets I made myself worked splendidly with your program :) THANKS!!! :)

Lennardish
Автор

This video is one of the best I have ever seen here on YouTube! Your explanations have been excellent, I learned many things. Now it’s my turn and I try to do that myself. Thank you very much!

joachimschmack
Автор

Thank you for your incredible tutorials! Your selfless dedication to sharing knowledge for free is truly appreciated. You've made a positive impact in my learning journey. Grateful beyond words!

bozok
Автор

I'm hitting the like button multiple times. Please keep uploading projects like this sir :)

muhammadardiputra
Автор

your explanation and concept are excellent. I learn a lot from you.
but why are we using all that sorting function to sort the 4 corner points when we can easily get it using boundingRect()
here is my code, hope it helps!

for c in contours:
if cv2.contourArea(c) >10000:
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.02*peri, True)
x, y, w, h = cv2.boundingRect(approx)

# this will help to get the 4 corner points.
_1st = np.array([x, y])
_2nd = np.array([x+w, y])
_3rd = np.array([x, y+h])
_4th = np.array([w, h])

SORTING IS DONE

But if you want to check if the 4 points are landscape or portrait and want to change in the landscape. then use this code after getting the 4 corner points.

def findlen(p1, p2):
"""
using Pythagoras theorem to get the length of the two points
length = sqroot[(x2-x1)**2 + (y2-y1)**2]
"""
lenth = ((p2[0] - p1[0])**2 + (p2[1] - p1[1])**2)**0.5
return lenth



paper_length = findlen(_1st, _3rd)
paper_breadth = findlen(_1st, _2nd)

if paper_breadth > paper_length: # here breadth should be smaller than length
temp = _1st.copy()
_1st = _3rd.copy()
_3rd = _4th.copy()
_4th = _2nd.copy()
_2nd = temp
DONE

Also, what if the image is flipped (upside down)
to fix that use some reference on the image and can easily fix it.
If you have a better answer and if I m wrong somewhere I m happy to learn from you. Thanks a lot.

uchihatashi
Автор

Thanks for sharing your experiences with us.

samanborhan
Автор

Honestly, you have helped me SO much, Your explanations have been excellent, Sir how can we detect none marked bubbles and multiple marked bubbles?

sithijaakash
Автор

What an project bhai, superb work. Much much impressed. Thankyou for sharing ur knowledge and approach towards the opencv.

amitmodh
Автор

I could not stop clapping ... I needed this so bad. but my question is what if none of the options were marked by the student?

motivita
Автор

Great video! Is there a way to identify a corrected answer? i.e. 2 answers are marked but 1 is with an X on it, I only want to identify the one without the X on it....

saaklein
Автор

MasyaAllah, terimakasih banyak bro, tutorial yang luarbiasa🤩🤩🤩🤩🤩🤩.

menujufalah
Автор

Great project tutorials.Please upload more projects. U are best man .

melihaltay
Автор

Excellent presentation. Thank you for sharing. I will be watching out for all of your upcoming videos.

interestedngreen
Автор

Nice tutorial. Keep on uploading great project.

yontenjamtsho
Автор

perfect Video, I really big fan of your channel

hoathinhtuoitho
Автор

Wow! it's Amazing I did it well ! Perfect work !

ikramikramkakarkakar