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

  Рет қаралды 139,590

Murtaza's Workshop - Robotics and AI

Murtaza's Workshop - Robotics and AI

4 жыл бұрын

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 KZfaq Channel 🚀🚀
/ @murtazahassan01
Code and Files:
coming soon...
Premium Courses:
✔️ Computer Vision Game Development Course:
bit.ly/3ttLZ2s
✔️ Computer Vision with Arduino Course:
bit.ly/3wzLB4m
✔️ Advanced Drone Programming Course:
bit.ly/3qs3v5g
✔️ Learn to Build Computer Vision Mobile Apps:
bit.ly/3uioY1J
✔️ Jetson Nano Premium Course:
bit.ly/3L8uIlF
⚙️⚙️⚙️--My Gear - ⚙️⚙️⚙️
👉 Complete Gear 💈: www.computervision.zone/tech-...
👉 My PC Specs 🖥️: www.computervision.zone/tech-...
👉 My Video Shooting Gear📽️ : www.computervision.zone/tech-...
👉 My Laptops 💻: www.computervision.zone/tech-...
👉 Educational Products🧑‍🎓: www.computervision.zone/tech-...
👉 KZfaq Starter Kit 🔴: www.computervision.zone/tech-...
Follow Me:
TikTok: bit.ly/3Vo76OQ
Facebook Group: bit.ly/3irDcb7
Discord: bit.ly/3JvyxAM
Facebook Page: bit.ly/3IvpU7W
Instagram : bit.ly/3NdGME3
Website: bit.ly/3ICFTS0
Github: bit.ly/3woU6PS
#ComputerVision
#OpenCV
#CVZone

Пікірлер: 225
@chukypedro818
@chukypedro818 2 жыл бұрын
You offer all these courses for free, you are indeed a great Man. Thanks for the awesome work Sir.
@faizalimuhammadzoda4731
@faizalimuhammadzoda4731 3 жыл бұрын
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
@Deserthacker
@Deserthacker 3 жыл бұрын
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.
@Lennardish
@Lennardish Жыл бұрын
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!!! :)
@bozok1903
@bozok1903 Жыл бұрын
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!
@muhammadardiputra5217
@muhammadardiputra5217 3 жыл бұрын
I'm hitting the like button multiple times. Please keep uploading projects like this sir :)
@interestedngreen
@interestedngreen 3 жыл бұрын
Excellent presentation. Thank you for sharing. I will be watching out for all of your upcoming videos.
@beingharly2433
@beingharly2433 3 жыл бұрын
Great video! Everything is perfect!
@adrianorcampos
@adrianorcampos 4 жыл бұрын
I've been watching your tutorials since I woke up today and I'm really amazed!!! Tks for that!!!
@murtazasworkshop
@murtazasworkshop 4 жыл бұрын
Glad you like them!
@rohithpokala
@rohithpokala 3 жыл бұрын
This happened to me today 😂
@melihaltay2215
@melihaltay2215 4 жыл бұрын
Great project tutorials.Please upload more projects. U are best man .
@joachimschmack9251
@joachimschmack9251 2 жыл бұрын
This video is one of the best I have ever seen here on KZfaq! 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!
@sakshirawat2684
@sakshirawat2684 7 ай бұрын
Please tell me the code he is teaching is actually working or not ? If its working only then i will make this project.
@learn-entertainment
@learn-entertainment 2 күн бұрын
@@sakshirawat2684 it's work
@ProfAlves
@ProfAlves 2 жыл бұрын
Você é inacreditável, sou seu fã
@GeeksDen
@GeeksDen 4 жыл бұрын
You are awesome ❣️ Great Tutorial keep uploading this type of content ... please
@amitmodh167
@amitmodh167 2 жыл бұрын
What an project bhai, superb work. Much much impressed. Thankyou for sharing ur knowledge and approach towards the opencv.
@fayechang8647
@fayechang8647 Жыл бұрын
it's very helpful and clear!! Thank you!
@sithijaakash3095
@sithijaakash3095 Жыл бұрын
Honestly, you have helped me SO much, Your explanations have been excellent, Sir how can we detect none marked bubbles and multiple marked bubbles?
@hoainam4394
@hoainam4394 3 жыл бұрын
Many thanks for this amazing video
@nadibhussain5096
@nadibhussain5096 4 жыл бұрын
loved it.thank you so much!!!!
@abdulnasirafridi
@abdulnasirafridi Жыл бұрын
You are doing well , your effort and clear explanation is really need to appreciate 👏 🙌 👍 😊 Thumps Up for your great work 👍 😀 💪
@avprince3692
@avprince3692 Жыл бұрын
hank you soo much very direct link n works for me love the way you expressed the installation .
@Arifulislam007
@Arifulislam007 4 жыл бұрын
Excellent Video. Keep it up man
@murtazasworkshop
@murtazasworkshop 4 жыл бұрын
Thank you
@samanborhan5413
@samanborhan5413 2 ай бұрын
Thanks for sharing your experiences with us.
@Iamnoone56
@Iamnoone56 3 жыл бұрын
That was amazing 💙
@ikramikramkakarkakar8613
@ikramikramkakarkakar8613 Жыл бұрын
Wow! it's Amazing I did it well ! Perfect work !
@nikhilgupta8196
@nikhilgupta8196 11 ай бұрын
Awesome explanation, much helpful
@freetrainingvideos
@freetrainingvideos 9 ай бұрын
Great work! Thanks
@menujufalah2506
@menujufalah2506 Жыл бұрын
MasyaAllah, terimakasih banyak bro, tutorial yang luarbiasa🤩🤩🤩🤩🤩🤩.
@monitor1045
@monitor1045 2 жыл бұрын
You are the best! Thanks a lot!
@karthiksundar5998
@karthiksundar5998 Жыл бұрын
Really helpfull tutorials. Helped a lot
@yontenjamtsho1539
@yontenjamtsho1539 4 жыл бұрын
Nice tutorial. Keep on uploading great project.
@murtazasworkshop
@murtazasworkshop 4 жыл бұрын
Thanx. Appreciate your support
@hoathinhtuoitho66
@hoathinhtuoitho66 2 жыл бұрын
perfect Video, I really big fan of your channel
@saidabdullahsadatc3312
@saidabdullahsadatc3312 Жыл бұрын
Thank You, Sir, A world of thanks.
@Mohamed-tt7fs
@Mohamed-tt7fs 2 жыл бұрын
you are very very intelligent ... Thank you so much
@omarhasan7622
@omarhasan7622 4 жыл бұрын
Nice tutorial! can you tell me how to detect square boxes in an image?
@alejandrocoronado1131
@alejandrocoronado1131 Жыл бұрын
I think a new hero has born.
@Flczxero
@Flczxero Жыл бұрын
I love this time for the enlightenment
@uchihatashi3249
@uchihatashi3249 3 жыл бұрын
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.
@sakshirawat2684
@sakshirawat2684 7 ай бұрын
Please tell me the code he is teaching is actually working or not ? If its working only then i will make this project.
@spyamongus6055
@spyamongus6055 Жыл бұрын
thank you so much , it worked 🙂
@getahunsorsa6768
@getahunsorsa6768 11 ай бұрын
i appreciate that. thank u!!!
@eemcs
@eemcs 3 жыл бұрын
Thank you very much
@amgadko9457
@amgadko9457 Жыл бұрын
I took two months to learn Adobe After Effects and Premier Pro. Now I am learning soft soft to make soft so I can have more verity
@camilatinampay8435
@camilatinampay8435 Жыл бұрын
In The setup yup that was my problem thanks a lot
@totsiemarquez802
@totsiemarquez802 Жыл бұрын
Thanks Sir! Is it also applicable with radio buttons? Because I want to get the value of the selected radio button on the pdf file
@flaviohenriq1
@flaviohenriq1 3 жыл бұрын
Hi! My name is Flávio, i like so much your tutorials. I have a question, how can i detect forms like vaiations graphs? For example, variation graphs like heart beats
@saaklein
@saaklein 2 жыл бұрын
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....
@sireeshakuchi6031
@sireeshakuchi6031 2 жыл бұрын
Sir, Instead of using options in ans variable .we have any chance to compare two images for correction.
@saipraneeth1099
@saipraneeth1099 3 жыл бұрын
awesome!
@jntb3000
@jntb3000 2 жыл бұрын
Excellent
@yudhistiramuslim3117
@yudhistiramuslim3117 3 жыл бұрын
thank you for great tutorial sir, can i use this code for multiple point, in this tutorial have two point biggespoint and gradepoint. can i use this code for multiple biggespoint, example there are 4 biggespoint in same weight and height
@SSH5000
@SSH5000 3 жыл бұрын
great video. I appreciate if you increase IDE font size.
@sagihaviv5675
@sagihaviv5675 3 жыл бұрын
hello im new to machine learning and i have a project now in my school: execute sql code from image, what can you suggest me to learn first
@chitranshudeep
@chitranshudeep Жыл бұрын
Thanks so much for tNice tutorials bro
@nidhin84
@nidhin84 4 жыл бұрын
i need to get rectangle covering the whole OMR sheet by 4 black circles on the 4 corners od the sheet. How can i do this?
@anhluong69
@anhluong69 4 жыл бұрын
Thank you so much!!!!
@murtazasworkshop
@murtazasworkshop 4 жыл бұрын
You're welcome!
@abdullahshah-785
@abdullahshah-785 4 жыл бұрын
wow such great learning
@murtazasworkshop
@murtazasworkshop 4 жыл бұрын
Gald i could help
@tovideo100
@tovideo100 3 жыл бұрын
Hello Sir, I’m using my own OMR that is a bit different from yours.I did up to finding threshold image and got a really nice clear picture. However, when I try to find the splitting of thresh image. I’m getting a really weird image. def splitBoxes(img): rows = np.vsplit(img,5) cv2.imshow("Split",rows[1]) utilis.spliBoxes(imgThresh) The above line of code gives some portion of row 0 image and some portion of row 1 image in rows[1]. Why is it not splitting each row correctly and what am I doing wrong. Hoping if you could provide some guidance.
@nghnino
@nghnino Жыл бұрын
Much appreciated and Thank you for sharing (In subscribed as well)...however I have a question, this Pycharm requires me to pay, are there any other Free alternative python I.D.E's to create these great projects?
@ManzoorHussain-gz1vk
@ManzoorHussain-gz1vk 3 жыл бұрын
Thank you so much, sir.
@murtazasworkshop
@murtazasworkshop 3 жыл бұрын
You are most welcome
@zafirabdullah5488
@zafirabdullah5488 Ай бұрын
Sir Murtaza, thank you for the great information. I need an OMR scanner to save the database as CSV files and to work with the MySQL database to save the results.♥
@MehediHasan-mw1oy
@MehediHasan-mw1oy 3 жыл бұрын
If any dot or spot remains in the gap part of an OMR sheet not in the number and circular part of OMR, Will it be a problem or will the machine count it?
@motivita
@motivita Жыл бұрын
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?
@murtazasworkshop
@murtazasworkshop Жыл бұрын
You can set a min threshold and if its not met then the result is zero.
@motivita
@motivita Жыл бұрын
@@murtazasworkshop Thank you..exactly how I was thinking. thank you very much. i am building this in python Flet and you have done the most difficult part for me.
@thanusan
@thanusan 4 жыл бұрын
Hi Murtaza, thanks for your video - it was very informative! I have a question - if you instead show the whole A4 paper in the webcam, then would the code break? This is because the 'biggest contour' will be the A4 paper itself, and the second biggest contour will be the questions box. How can you adapt the code to constantly work regardless of whether the A4 sheet is fully in view?
@wpacademy9808
@wpacademy9808 4 жыл бұрын
Hi, thanks for such a great video, please let me know can it read the barcode too?
@murtazasworkshop
@murtazasworkshop 4 жыл бұрын
yes you can read bar-code as well but you will need a separate package for that such as Zbar
@TeeLiverpool
@TeeLiverpool 3 жыл бұрын
thanks
@newgeneration8246
@newgeneration8246 4 жыл бұрын
Nice Tutorial. Can you do a 100 items OMR tutorial?
@murtazasworkshop
@murtazasworkshop 4 жыл бұрын
you can expand this to as many mcqs as you require.
@BCSVinayKumar
@BCSVinayKumar Жыл бұрын
I was surprised how understandable tNice tutorials tutorial is, thanks!
@amirhamza7545
@amirhamza7545 4 жыл бұрын
sir if we want to increase no. of question ?what are the change that we made?
@oriabnu1
@oriabnu1 Жыл бұрын
the top, when I installed soft soft (restart didn't help). I have a creative softblaster z softcard. I'm assuming it has sotNice tutorialng to do
@dipankarmukherjee8578
@dipankarmukherjee8578 2 жыл бұрын
The OMR code is running fine 5x5 Matrix and if all rows bubbles are fill. I am facing problem when I try to run 6x4 or others and few rows bubbles are empty. Please suggest
@awrdeey6835
@awrdeey6835 Ай бұрын
hi sir important question can i turn this code in to an app if eever i made my onw version? and add some things?
@m.hnamdari8338
@m.hnamdari8338 Жыл бұрын
thanks for your great tutorial may i have the source code? im a student and currenty working on a project for training
@manamghori5769
@manamghori5769 2 жыл бұрын
Sir how we read and store this data into database or any file kindly explain it
@abhishekdeepu2003
@abhishekdeepu2003 11 ай бұрын
Sir what if the question paper contains multiple columns of questions can please suggest me a solution and one more thing is that this code only works best for question paper containing equal number of questions and choices
@JAFX1
@JAFX1 2 жыл бұрын
Sir please for the stackimages function, can I get the code fro line 37 and 38
@kamalabenbhabhor9792
@kamalabenbhabhor9792 Жыл бұрын
wow thank you! i
@joachimfieber6501
@joachimfieber6501 3 жыл бұрын
Hello After i installed utils I get the error message : module 'utils' has no attribute 'stackImages' what am I doing wrong?
@jeschellegallardo245
@jeschellegallardo245 2 жыл бұрын
Hello I encounter an error in img= cv2.resize(img, (widthImg, heightImg)) how can I resolve it? Thank youu
@johnmoisesmorada5298
@johnmoisesmorada5298 Жыл бұрын
The reason for my asking, is due to crackling/distorting soft, whenever the drum/snare, or whatever is playing. TNice tutorials was the case off
@m.siddeeqkhan7632
@m.siddeeqkhan7632 2 жыл бұрын
Aoa sir kindly tell me what model is used in this project
@yel-hadd
@yel-hadd 3 жыл бұрын
if anyone is having problem splitting the image horizontally or vertically try resizing imgThresh to the nearest multiple of 5(or another number depending on your needs) def splitBoxes(img,choices,questions): imgWidth = img.shape[1] imgHeight = img.shape[0] multipleW = choices * round(imgWidth / choices) multipleH = questions * round(imgHeight / questions) img = cv2.resize(img, (multipleW, multipleH)) rows = np.vsplit(img,20) boxes = [] for r in rows: cols = np.hsplit(r,5) for box in cols: boxes.append(box) return boxes this is how I did it
@brahimchebli7781
@brahimchebli7781 3 жыл бұрын
khouya , wakha duz prive layhfdeek , whatsap wla telegram plz
@yuriarfil5154
@yuriarfil5154 2 жыл бұрын
This so much help for me Thanks a lot 🤟👍
@yel-hadd
@yel-hadd 2 жыл бұрын
@@yuriarfil5154 you're welcome
@archangelharsh0074
@archangelharsh0074 8 ай бұрын
Hlw bro ...if I want to increase number of questions then how can I do can you explain pls
@aravin2023
@aravin2023 Жыл бұрын
thank you for tNice tutorials it helped a lot
@tovideo100
@tovideo100 3 жыл бұрын
Thank you sir very helpful tutorial you provided to us. Sir, I have one question-How do I extract answers, if image is rotated by any angle?
@murtazasworkshop
@murtazasworkshop 3 жыл бұрын
If its small angle this could work. But if the angle is big then other methods would be required.
@tovideo100
@tovideo100 3 жыл бұрын
@@murtazasworkshop Thank you sir for reply. Can you give a hint to handle a big angle?
@nitindahikar7436
@nitindahikar7436 3 жыл бұрын
Is 100 mcq tutorials are stress full.
@rustamkhan1497
@rustamkhan1497 Жыл бұрын
If bubble (mcq filling place) has been cut with blade then the remaining mcqs will scan omr machine Reply me
@yashsankhala1806
@yashsankhala1806 Жыл бұрын
Sir i want to make this project on flutter so sir is this possible in it .. plzz replay .
@CozyCrafts9
@CozyCrafts9 2 жыл бұрын
Honestly it help but how we save the result in excel and make it a list and also it can take name of the candidate and there roll number and save all these in excel.
@codenet741
@codenet741 10 ай бұрын
File "", line 6, in concatenate ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 255 and the array at index 2 has size 350
@vulinhho7415
@vulinhho7415 4 жыл бұрын
Can I ask you a question. approx = approxPolyDP (i, 0.02 * peri, True) python does not recognize approxPolyDP as a function. It only accepts approx. I use python 3.7.2
@murtazasworkshop
@murtazasworkshop 4 жыл бұрын
use cv2 approx = cv2.approxPolyDP(cnt, 0.02 * peri, True)
@ozgegunaydin85
@ozgegunaydin85 2 жыл бұрын
thanks for sharing?does anybody know how to call pyhton codes from dart on flutter ?
@ramsvault
@ramsvault 3 жыл бұрын
coooool!!!
@codenet741
@codenet741 10 ай бұрын
return _nx.concatenate(arrs, 1) File "", line 6, in concatenate ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 255 and the array at index 2 has size 350
@spimantha5821
@spimantha5821 4 жыл бұрын
Hi, is this neural network?
@judahdeocampo544
@judahdeocampo544 3 жыл бұрын
Thanks for this video, but how can I expand this to many mcqs?
@polipols6098
@polipols6098 2 жыл бұрын
same question. have you figured it out? I got 60 items since it is a standardized test.
@yashdggjs
@yashdggjs 4 жыл бұрын
you are the only one ,keep it up brother
@murtazasworkshop
@murtazasworkshop 4 жыл бұрын
Appreciated
@elifbaykal7827
@elifbaykal7827 Жыл бұрын
good
@juliah6338
@juliah6338 3 жыл бұрын
Hi! Thank you so much for your helpful tutorial. I'm having a trouble with displaying the labels, for some reason, it gives this error: "File "/.../OMR_Main.py", line 139, in imgStacked = utilus.stackImages(imageArray,0.5,lables) File ".../OMR/utilus.py", line 38, in stackImages cv2.putText(ver,lables[d],(eachImgWidth*c+10,eachImgHeight*d+20),cv2.FONT_HERSHEY_COMPLEX,0.7,(255,0,255),2) TypeError: Can't convert object of type 'list' to 'str' for 'text' My code for labels is exactly like yours.
@JAFX1
@JAFX1 2 жыл бұрын
Please the stackimages line 37. Write the codes there for me
@PC-ii1yf
@PC-ii1yf 2 жыл бұрын
Did you get it?
@MegaCyberpirate
@MegaCyberpirate Жыл бұрын
Horizontal and vertical split not working properly. They are not giving one row?? What should i do
@brahimchebli7781
@brahimchebli7781 3 жыл бұрын
please , can you make a quick video , how to change the number of questions , with the same bubble template , please , and thank you a lot .
@archangelharsh0074
@archangelharsh0074 8 ай бұрын
I also wanted to change the number of questions can you help me please
@yontenjamtsho1539
@yontenjamtsho1539 4 жыл бұрын
Can you make a tutorial on training SSD on custom datasets?
@murtazasworkshop
@murtazasworkshop 4 жыл бұрын
i will look into it
@rajamohan8315
@rajamohan8315 Жыл бұрын
@@murtazasworkshop sir what will happen if a small line accidentally drawn in omr ...please reply
@hafidgando6951
@hafidgando6951 9 ай бұрын
How to get the utils / stackimages function?
5 Useful F-String Tricks In Python
10:02
Indently
Рет қаралды 250 М.
How to Detect QRCode and BarCode using OpenCV in Python + Project
23:45
Murtaza's Workshop - Robotics and AI
Рет қаралды 154 М.
Cute Barbie Gadget 🥰 #gadgets
01:00
FLIP FLOP Hacks
Рет қаралды 35 МЛН
КАРМАНЧИК 2 СЕЗОН 6 СЕРИЯ
21:57
Inter Production
Рет қаралды 490 М.
어른의 힘으로만 할 수 있는 버블티 마시는법
00:15
진영민yeongmin
Рет қаралды 13 МЛН
How I would learn to code (if I could start over)
10:52
PIRATE KING
Рет қаралды 1,3 МЛН
REAL TIME OBJECT MEASUREMENT | OpenCV Python (2020)
53:25
Murtaza's Workshop - Robotics and AI
Рет қаралды 237 М.
Automate your job with Python
6:07
John Watson Rooney
Рет қаралды 336 М.
COPPER PIPE MADE INTO A STUDIO DELAY THAT RUNS AT THE SPEED OF SOUND
11:50
LOOK MUM NO COMPUTER
Рет қаралды 149 М.
How ChatGPT Built My App in Minutes 🤯
8:28
Website Learners
Рет қаралды 1,9 МЛН
Traffic Signs Classification Using Convolution Neural Networks CNN | OPENCV Python
17:59
Murtaza's Workshop - Robotics and AI
Рет қаралды 167 М.
100 Computer Vision Projects for 2023
43:47
Murtaza's Workshop - Robotics and AI
Рет қаралды 46 М.
Computer Vision With Arduino |  2 Hour Course | OpenCV Python
2:05:07
Murtaza's Workshop - Robotics and AI
Рет қаралды 2,7 МЛН
Modern Graphical User Interfaces in Python
11:12
NeuralNine
Рет қаралды 1,4 МЛН
FormRead Free OMR optical mark recognition Software
4:57
FormRead
Рет қаралды 1,5 М.
Cute Barbie Gadget 🥰 #gadgets
01:00
FLIP FLOP Hacks
Рет қаралды 35 МЛН