title
LEARN OPENCV in 3 HOURS with Python | Including 3xProjects | Computer Vision

description
In this video, we are going to learn everything required to get started with OpenCV in Python. We will be using Python since it is one of the most popular programming languages. And it has opened numerous job opportunities in various sectors. We will start from the installation process right up to creating exciting projects such as detecting colors, shapes humans, and even vehicle number plates. So If you are a beginner don't worry this course is for you. We will skip all the boring theory stuff and focus on the practical implementation. So you can get the computer vision skill set you have always wanted in your CV. By the end of the course, you will become familiar with the core principle of OpenCV and apply different techniques to solve real-world problems using computer vision. πŸš€πŸš€ My Urdu/Hindi AI Youtube Channel πŸš€πŸš€ https://www.youtube.com/@murtazahassan01 Code & Text Based Version: https://www.computervision.zone/courses/learn-opencv-in-3-hours/ Premium Courses: βœ”οΈ Computer Vision Game Development Course: https://bit.ly/3ttLZ2s βœ”οΈ Computer Vision with Arduino Course: https://bit.ly/3wzLB4m βœ”οΈ Advanced Drone Programming Course: https://bit.ly/3qs3v5g βœ”οΈ Learn to Build Computer Vision Mobile Apps: https://bit.ly/3uioY1J βœ”οΈ Jetson Nano Premium Course: https://bit.ly/3L8uIlF βš™οΈβš™οΈβš™οΈβ€”-My Gear β€” βš™οΈβš™οΈβš™οΈ πŸ‘‰ Complete Gear πŸ’ˆ: https://www.computervision.zone/tech-gear/ πŸ‘‰ My PC Specs πŸ–₯️: https://www.computervision.zone/tech-gear/filter/tax/tgcat:285/ πŸ‘‰ My Video Shooting GearπŸ“½οΈ : https://www.computervision.zone/tech-gear/filter/tax/tgcat:284/ πŸ‘‰ My Laptops πŸ’»: https://www.computervision.zone/tech-gear/filter/tax/tgcat:290/ πŸ‘‰ Educational ProductsπŸ§‘β€πŸŽ“: https://www.computervision.zone/tech-gear/filter/tax/tgcat:295/ πŸ‘‰ Youtube Starter Kit πŸ”΄: https://www.computervision.zone/tech-gear/filter/tax/tgcat:299/ Follow Me: TikTok: https://bit.ly/3Vo76OQ Facebook Group: https://bit.ly/3irDcb7 Discord: https://bit.ly/3JvyxAM Facebook Page: https://bit.ly/3IvpU7W Instagram : https://bit.ly/3NdGME3 Website: https://bit.ly/3ICFTS0 Github: https://bit.ly/3woU6PS #ComputerVision #OpenCV #CVZone Time Stamps: 00:00 Intro 2:17 Introduction to Images 4:37 Installations 9:09 Chapter 1 17:01 Chapter 2 27:31 Chapter 3 34:12 Chapter 4 44:59 Chapter 5 50:04 Chapter 6 56:14 Chapter 7 1:15:37 Chapter8 1:40:31 Chapter 9 1:46:03 Project 1 2:15:45 Project 2 2:56:34 Project 3 Download Links: PyCharm Community edition: https://www.jetbrains.com/pycharm/download/ Python: 3.7.6: https://www.python.org/downloads/release/python-376/

detail
{'title': 'LEARN OPENCV in 3 HOURS with Python | Including 3xProjects | Computer Vision', 'heatmap': [{'end': 1835.816, 'start': 1703.735, 'weight': 1}, {'end': 6021.375, 'start': 5901.265, 'weight': 0.882}, {'end': 7605.23, 'start': 7489.449, 'weight': 0.792}], 'summary': 'This 3-hour tutorial on opencv in python includes projects for color and shape detection, covering image processing techniques, color detection, contour analysis, and object location implementation. it equips beginners with practical implementation in computer vision, covering multiple color detection, image warping, correction, and number plate detection with successful results.', 'chapters': [{'end': 257.765, 'segs': [{'end': 196.052, 'src': 'embed', 'start': 22.779, 'weight': 0, 'content': [{'end': 29.703, 'text': 'We will start from the installation process right up to creating exciting projects such as detecting colors, shapes,', 'start': 22.779, 'duration': 6.924}, {'end': 31.865, 'text': 'humans and even vehicle number plates.', 'start': 29.703, 'duration': 2.162}, {'end': 35.868, 'text': "So if you are a beginner, don't worry, this course is for you.", 'start': 32.825, 'duration': 3.043}, {'end': 41.073, 'text': 'We will skip all the boring theory stuff and focus on the practical implementation.', 'start': 36.369, 'duration': 4.704}, {'end': 45.898, 'text': 'So you can get the computer vision skill set you have always wanted in your CV.', 'start': 41.754, 'duration': 4.144}, {'end': 48.24, 'text': 'By the end of the course,', 'start': 47.359, 'duration': 0.881}, {'end': 56.128, 'text': 'you will become familiar with the core principles of OpenCV and apply different techniques to solve real-world problems using computer vision.', 'start': 48.24, 'duration': 7.888}, {'end': 64.528, 'text': "If you'd like to learn more about such projects, don't forget to subscribe and hit that notification bell as I upload videos on a weekly basis.", 'start': 57.483, 'duration': 7.045}, {'end': 67.309, 'text': "So without further ado, let's get started.", 'start': 65.068, 'duration': 2.241}, {'end': 80.558, 'text': "Before we begin, let's look at the structure of the course.", 'start': 77.796, 'duration': 2.762}, {'end': 86.722, 'text': 'We will start with introduction to images, then perform the required installations.', 'start': 82.139, 'duration': 4.583}, {'end': 91.811, 'text': 'Then we will learn to read images, videos and webcams.', 'start': 88.089, 'duration': 3.722}, {'end': 96.433, 'text': 'Along with some basic must-know OpenCV functions.', 'start': 93.432, 'duration': 3.001}, {'end': 101.235, 'text': 'Later we will learn to resize and crop images.', 'start': 98.574, 'duration': 2.661}, {'end': 106.058, 'text': 'Then we will draw different shapes and text on images.', 'start': 103.016, 'duration': 3.042}, {'end': 115.354, 'text': 'From there we will get into some more advanced topics such as word perspective, joining images, color detection,', 'start': 107.307, 'duration': 8.047}, {'end': 118.656, 'text': 'contour detection and even face detection.', 'start': 115.354, 'duration': 3.302}, {'end': 127.484, 'text': 'After we have understood the fundamentals, we will create three different projects using these core principles.', 'start': 121.339, 'duration': 6.145}, {'end': 135.971, 'text': 'These projects will include virtual paint, paper scanner and the number plate detector.', 'start': 129.225, 'duration': 6.746}, {'end': 140.7, 'text': "So let's start with introduction to images.", 'start': 138.519, 'duration': 2.181}, {'end': 146.041, 'text': "So what are images made of? Let's say I wanted to display the number three.", 'start': 141.2, 'duration': 4.841}, {'end': 151.622, 'text': 'I will take an array of boxes where each box could be filled or empty.', 'start': 146.761, 'duration': 4.861}, {'end': 156.904, 'text': 'So to write the number three, we would color a few boxes to create that shape.', 'start': 152.383, 'duration': 4.521}, {'end': 160.945, 'text': 'Now, some boxes are white in color, whereas some are black.', 'start': 157.584, 'duration': 3.361}, {'end': 166.469, 'text': 'we can denote all the black boxes as 0 and all the white boxes as 1.', 'start': 161.926, 'duration': 4.543}, {'end': 170.131, 'text': 'In this example, we have 10 by 10 boxes.', 'start': 166.469, 'duration': 3.662}, {'end': 173.974, 'text': 'If we wanted more detail, we can increase the number of boxes.', 'start': 171.012, 'duration': 2.962}, {'end': 177.209, 'text': 'In reality, these boxes are pixels.', 'start': 175.208, 'duration': 2.001}, {'end': 182.351, 'text': 'You would have heard of VGA, HD, Full HD and 4K.', 'start': 177.949, 'duration': 4.402}, {'end': 185.553, 'text': 'All of these represent a fixed number of pixels.', 'start': 183.192, 'duration': 2.361}, {'end': 186.913, 'text': 'For example, VGA is 640 by 480.', 'start': 185.913, 'duration': 1}, {'end': 196.052, 'text': 'HD is 1280 by 720.', 'start': 186.913, 'duration': 9.139}], 'summary': 'Course covers practical opencv implementation, including color and shape detection, and projects like virtual paint, paper scanner, and number plate detector.', 'duration': 173.273, 'max_score': 22.779, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs22779.jpg'}, {'end': 257.765, 'src': 'embed', 'start': 220.404, 'weight': 6, 'content': [{'end': 228.729, 'text': 'Here we can see the difference between 2, 6 and 16 levels or shades of grey, but still the image is not very clear,', 'start': 220.404, 'duration': 8.325}, {'end': 231.271, 'text': 'so we will be using an 8-bit value.', 'start': 228.729, 'duration': 2.542}, {'end': 239.496, 'text': 'This will give us a resolution of 256, where 0 will be black and 255 will be white.', 'start': 231.951, 'duration': 7.545}, {'end': 244.86, 'text': 'This means we now have 254 colours between white and black.', 'start': 240.317, 'duration': 4.543}, {'end': 250.822, 'text': 'in other words, we have 254 shades of gray.', 'start': 245.84, 'duration': 4.982}, {'end': 257.765, 'text': 'this image is now known as a grayscale image.', 'start': 250.822, 'duration': 6.943}], 'summary': 'Comparing 2, 6, and 16 shades of grey, 8-bit resolution yields 256 colors in a grayscale image.', 'duration': 37.361, 'max_score': 220.404, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs220404.jpg'}], 'start': 0.771, 'title': 'Opencv in python and image introduction', 'summary': 'Covers a comprehensive three-hour tutorial on opencv in python, including projects like color and shape detection, and aims to equip beginners with practical implementation in computer vision. it also introduces the concept of images, pixels, resolution, and transition from binary to grayscale images.', 'chapters': [{'end': 135.971, 'start': 0.771, 'title': 'Learn opencv in python', 'summary': 'Covers a comprehensive three-hour tutorial on opencv in python, which includes practical projects such as color and shape detection, human and vehicle number plate detection, and aims to equip beginners with the essential skills and practical implementation in computer vision.', 'duration': 135.2, 'highlights': ['The course covers practical projects such as detecting colors, shapes, humans, and vehicle number plates, providing a comprehensive understanding of OpenCV in Python.', 'The course skips the boring theory and focuses on practical implementation, aiming to equip beginners with the essential computer vision skill set.', 'The chapter provides a structured course, starting with image introduction, installations, reading images, videos, and webcams, along with basic OpenCV functions, and gradually progressing to advanced topics such as perspective, color detection, contour detection, and face detection.', 'By the end of the course, learners will become familiar with the core principles of OpenCV and apply different techniques to solve real-world problems using computer vision, offering a practical skill set for job opportunities in various sectors.', 'The chapter concludes with the creation of three different projects, including virtual paint, paper scanner, and the number plate detector, providing hands-on experience in applying core principles to real-world projects.']}, {'end': 257.765, 'start': 138.519, 'title': 'Introduction to images', 'summary': 'Introduces the concept of images, pixels, and resolution, explaining the representation of images using boxes and pixels, as well as the transition from binary to grayscale images.', 'duration': 119.246, 'highlights': ['The image resolution can be represented using different pixel dimensions, such as VGA (640x480), HD (1280x720), and 4K, each with a fixed number of pixels, providing increased detail (256 shades of gray).', 'Images can transition from binary (black and white) to grayscale, allowing for 254 shades of gray, providing more detail and clarity.', 'The concept of images is introduced by explaining how they are made using an array of boxes representing pixels and the transition from binary to grayscale images.']}], 'duration': 256.994, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs771.jpg', 'highlights': ['The course covers practical projects such as detecting colors, shapes, humans, and vehicle number plates, providing a comprehensive understanding of OpenCV in Python.', 'The chapter provides a structured course, starting with image introduction, installations, reading images, videos, and webcams, along with basic OpenCV functions, and gradually progressing to advanced topics such as perspective, color detection, contour detection, and face detection.', 'By the end of the course, learners will become familiar with the core principles of OpenCV and apply different techniques to solve real-world problems using computer vision, offering a practical skill set for job opportunities in various sectors.', 'The course skips the boring theory and focuses on practical implementation, aiming to equip beginners with the essential computer vision skill set.', 'The chapter concludes with the creation of three different projects, including virtual paint, paper scanner, and the number plate detector, providing hands-on experience in applying core principles to real-world projects.', 'The image resolution can be represented using different pixel dimensions, such as VGA (640x480), HD (1280x720), and 4K, each with a fixed number of pixels, providing increased detail (256 shades of gray).', 'Images can transition from binary (black and white) to grayscale, allowing for 254 shades of gray, providing more detail and clarity.', 'The concept of images is introduced by explaining how they are made using an array of boxes representing pixels and the transition from binary to grayscale images.']}, {'end': 1015.03, 'segs': [{'end': 360.878, 'src': 'embed', 'start': 294.521, 'weight': 0, 'content': [{'end': 296.122, 'text': 'instead we are going to download 3.7..', 'start': 294.521, 'duration': 1.601}, {'end': 301.686, 'text': '6, as this works well with opencv.', 'start': 296.122, 'duration': 5.564}, {'end': 308.371, 'text': 'so we will click on download and then we will head on to the windows version.', 'start': 301.686, 'duration': 6.685}, {'end': 311.373, 'text': 'now, if you have mac, you can download the mac version as well.', 'start': 308.371, 'duration': 3.002}, {'end': 315.387, 'text': 'Once the download is complete, we will install.', 'start': 313.246, 'duration': 2.141}, {'end': 322.232, 'text': 'Make sure to add Python 3.7 to the path.', 'start': 315.407, 'duration': 6.825}, {'end': 331.157, 'text': 'So once the installation is done we will close the dialog and head on to PyCharm.', 'start': 326.274, 'duration': 4.883}, {'end': 338.046, 'text': 'Now PyCharm is the IDE that we will be using to edit our code.', 'start': 333.223, 'duration': 4.823}, {'end': 348.411, 'text': 'So it is a code editor that will allow us to write our code, but it has a lot of functionalities, which will help us in the coding process.', 'start': 338.286, 'duration': 10.125}, {'end': 355.495, 'text': 'So we will head on to its download section and we will download the community version as it is free.', 'start': 349.272, 'duration': 6.223}, {'end': 360.878, 'text': 'Once the download is complete, we will run the installation file.', 'start': 357.896, 'duration': 2.982}], 'summary': 'Download python 3.7, add to path, install pycharm, use for coding.', 'duration': 66.357, 'max_score': 294.521, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs294521.jpg'}, {'end': 594.895, 'src': 'embed', 'start': 476.155, 'weight': 2, 'content': [{'end': 479.756, 'text': 'so we will right click on our project.', 'start': 476.155, 'duration': 3.601}, {'end': 486.117, 'text': 'we will go to new and we will create a python file.', 'start': 479.756, 'duration': 6.361}, {'end': 494.559, 'text': 'here we will say chapter one.', 'start': 486.117, 'duration': 8.442}, {'end': 502.341, 'text': 'now, as you can see, in our project we have the chapter one dot py file and here is where we can write our code.', 'start': 494.559, 'duration': 7.782}, {'end': 507.191, 'text': "So let's import our OpenCV package.", 'start': 504.83, 'duration': 2.361}, {'end': 511.472, 'text': 'So we will write import and then CV2.', 'start': 509.091, 'duration': 2.381}, {'end': 514.513, 'text': 'CV2 stands for computer vision.', 'start': 512.192, 'duration': 2.321}, {'end': 522.236, 'text': 'Then we will print package imported.', 'start': 516.174, 'duration': 6.062}, {'end': 529.618, 'text': 'Now, if everything runs fine, this should output package imported.', 'start': 524.376, 'duration': 5.242}, {'end': 535.653, 'text': 'So we will right click on the chapter 1 and we will press run.', 'start': 531.348, 'duration': 4.305}, {'end': 542.02, 'text': 'So now in the console we can see the package imported message has been sent.', 'start': 537.135, 'duration': 4.885}, {'end': 547.787, 'text': 'This means that our package is successfully imported and now we can proceed further.', 'start': 542.161, 'duration': 5.626}, {'end': 561.213, 'text': 'So the first thing we will learn is how to read images, videos and webcam.', 'start': 555.97, 'duration': 5.243}, {'end': 568.358, 'text': 'So in order to read images, we have a function by the name IMREAD.', 'start': 562.374, 'duration': 5.984}, {'end': 574.661, 'text': "So let's start by declaring the variable in which we will store the image.", 'start': 569.498, 'duration': 5.163}, {'end': 576.643, 'text': 'So we will call it IMG.', 'start': 575.082, 'duration': 1.561}, {'end': 583.133, 'text': 'And then we are going to use our package, which is CV2.', 'start': 578.092, 'duration': 5.041}, {'end': 587.294, 'text': 'And then inside that package, we have the function I am read.', 'start': 583.513, 'duration': 3.781}, {'end': 589.914, 'text': 'Now this means we are reading an image.', 'start': 588.134, 'duration': 1.78}, {'end': 594.895, 'text': 'Now all we have to do is mention the path where this image is present.', 'start': 590.615, 'duration': 4.28}], 'summary': 'Creating a python file, importing opencv package, and reading images and videos using cv2 in a project.', 'duration': 118.74, 'max_score': 476.155, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs476155.jpg'}, {'end': 971.334, 'src': 'embed', 'start': 928.82, 'weight': 6, 'content': [{'end': 935.488, 'text': 'So here we will create this webcam object And then we will define some parameters for it.', 'start': 928.82, 'duration': 6.668}, {'end': 939.31, 'text': 'So we want it to be of a specific size.', 'start': 936.529, 'duration': 2.781}, {'end': 949.174, 'text': 'So we will define the width, which is the ID number three as 640.', 'start': 940.37, 'duration': 8.804}, {'end': 965.031, 'text': 'And then we will define the height, which is ID number four as 480.', 'start': 949.174, 'duration': 15.857}, {'end': 968.072, 'text': 'Now the rest of the code pretty much remains the same.', 'start': 965.031, 'duration': 3.041}, {'end': 971.334, 'text': "So let's run this and see what happens.", 'start': 969.393, 'duration': 1.941}], 'summary': 'Creating webcam object with specific size of 640x480.', 'duration': 42.514, 'max_score': 928.82, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs928820.jpg'}], 'start': 257.765, 'title': 'Setting up python and opencv, and importing media', 'summary': 'Covers installing python 3.7.6 and pycharm for opencv, and importing and displaying images, videos, and webcam feeds, including adding delays and adjusting parameters.', 'chapters': [{'end': 561.213, 'start': 257.765, 'title': 'Installing python and opencv for image processing', 'summary': 'Discusses the process of installing python 3.7.6 and setting up pycharm for opencv, including adding libraries, creating a new project, and importing the cv2 package, in order to learn how to read images, videos, and webcam.', 'duration': 303.448, 'highlights': ['The process begins with installing Python 3.7.6, which is recommended for compatibility with OpenCV, and setting up PyCharm as the IDE for editing code.', 'Setting up the project interpreter in PyCharm to ensure it is 3.7, adding the OpenCV Python package, and creating the project environment are essential steps for the setup.', 'The installation of OpenCV Python package is demonstrated, and the successful import of the package is verified by running a sample code.', 'The chapter covers the basics of reading images, videos, and webcam, which are fundamental in image processing with OpenCV.']}, {'end': 1015.03, 'start': 562.374, 'title': 'Importing images, videos, and webcams with opencv', 'summary': 'Demonstrates using opencv to import and display images, videos, and webcam feeds, including adding delays and breaking loops, and adjusting webcam parameters.', 'duration': 452.656, 'highlights': ['The chapter demonstrates using OpenCV to import and display images, videos, and webcam feeds, including adding delays and breaking loops, and adjusting webcam parameters.', 'The function IMREAD is used to read images, while imshow is used to display them, and videocapture to import and display videos, utilizing a while loop to go through each frame.', 'By utilizing webcam object parameters, such as width and height, users can define specific sizes for the webcam feed, and adjust settings like brightness using specific IDs.', 'The chapter details the process of importing and displaying images, videos, and using a webcam, providing examples of code and explaining the functionality of various functions and parameters.']}], 'duration': 757.265, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs257765.jpg', 'highlights': ['The process begins with installing Python 3.7.6 and setting up PyCharm as the IDE for editing code.', 'Setting up the project interpreter in PyCharm to ensure it is 3.7 and adding the OpenCV Python package are essential steps for the setup.', 'The installation of OpenCV Python package is demonstrated, and the successful import of the package is verified by running a sample code.', 'The chapter covers the basics of reading images, videos, and webcam, which are fundamental in image processing with OpenCV.', 'The chapter demonstrates using OpenCV to import and display images, videos, and webcam feeds, including adding delays and adjusting webcam parameters.', 'The function IMREAD is used to read images, while imshow is used to display them, and videocapture to import and display videos, utilizing a while loop to go through each frame.', 'By utilizing webcam object parameters, such as width and height, users can define specific sizes for the webcam feed, and adjust settings like brightness using specific IDs.', 'The chapter details the process of importing and displaying images, videos, and using a webcam, providing examples of code and explaining the functionality of various functions and parameters.']}, {'end': 3344.748, 'segs': [{'end': 1091.978, 'src': 'embed', 'start': 1062.867, 'weight': 2, 'content': [{'end': 1075.172, 'text': 'now, the first thing we will do is we will convert it into grayscale, so to do that, we will define our gray image, img gray, which is equals to now.', 'start': 1062.867, 'duration': 12.305}, {'end': 1084.055, 'text': 'we are going to use the functionality or the function from the cv2 package known as color, cvt.', 'start': 1075.172, 'duration': 8.883}, {'end': 1091.978, 'text': 'Now, CVT color basically converts your image into different color spaces.', 'start': 1085.313, 'duration': 6.665}], 'summary': 'Convert image to grayscale using cv2 package', 'duration': 29.111, 'max_score': 1062.867, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs1062867.jpg'}, {'end': 1307.358, 'src': 'embed', 'start': 1274.032, 'weight': 3, 'content': [{'end': 1277.895, 'text': 'Now this particular edge detector is known as Canny edge detector.', 'start': 1274.032, 'duration': 3.863}, {'end': 1285.741, 'text': 'So in order to find the edges in our image, we will use the image Canny.', 'start': 1278.836, 'duration': 6.905}, {'end': 1291.448, 'text': 'Uh, we will call it image canny, and then we will use our canny function.', 'start': 1287.446, 'duration': 4.002}, {'end': 1294.09, 'text': 'We will assign the image.', 'start': 1292.909, 'duration': 1.181}, {'end': 1300.274, 'text': 'And now we will add the threshold values.', 'start': 1297.512, 'duration': 2.762}, {'end': 1301.895, 'text': 'So we have two thresholds.', 'start': 1300.594, 'duration': 1.301}, {'end': 1307.358, 'text': 'So for the sake of simplicity, we will put it as hundred and hundred.', 'start': 1302.435, 'duration': 4.923}], 'summary': 'Using canny edge detector to find edges in image with threshold values of 100', 'duration': 33.326, 'max_score': 1274.032, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs1274032.jpg'}, {'end': 1835.816, 'src': 'heatmap', 'start': 1703.735, 'weight': 1, 'content': [{'end': 1707.538, 'text': 'First, we are going to learn how to resize an image.', 'start': 1703.735, 'duration': 3.803}, {'end': 1712.461, 'text': 'Now to resize the image, we need to know the current size of our image.', 'start': 1708.078, 'duration': 4.383}, {'end': 1722.789, 'text': 'So here we have a simple example where we are importing the library and then we are importing a image by the name Lambo,', 'start': 1713.182, 'duration': 9.607}, {'end': 1727.512, 'text': 'which is short for Lamborghini, and we are just displaying it.', 'start': 1722.789, 'duration': 4.723}, {'end': 1729.934, 'text': "So let's look at our image.", 'start': 1728.113, 'duration': 1.821}, {'end': 1732.536, 'text': 'So this is our image.', 'start': 1731.355, 'duration': 1.181}, {'end': 1737.797, 'text': 'Now to find the size of our image, we are going to write print.', 'start': 1734.534, 'duration': 3.263}, {'end': 1742.24, 'text': 'And then we will check the shape of our image.', 'start': 1739.578, 'duration': 2.662}, {'end': 1744.342, 'text': 'So img.shape.', 'start': 1742.32, 'duration': 2.022}, {'end': 1754.144, 'text': 'So if we run this again, it gives us 462 by 623 by three.', 'start': 1747.202, 'duration': 6.942}, {'end': 1758.086, 'text': 'Now this first 462 is the height.', 'start': 1754.824, 'duration': 3.262}, {'end': 1761.307, 'text': '623 is the width.', 'start': 1758.106, 'duration': 3.201}, {'end': 1765.848, 'text': 'Three is the number for your channels, which is BGR.', 'start': 1762.047, 'duration': 3.801}, {'end': 1771.43, 'text': 'Now in order to resize, we are going to use the resize function.', 'start': 1767.869, 'duration': 3.561}, {'end': 1773.27, 'text': 'So we will write IMG.', 'start': 1772.29, 'duration': 0.98}, {'end': 1782.113, 'text': 'resize is equals to CV2.resize.', 'start': 1776.69, 'duration': 5.423}, {'end': 1792.958, 'text': 'And here we are going to write which image we want to resize, which is our main image.', 'start': 1787.415, 'duration': 5.543}, {'end': 1797.66, 'text': 'And then we need to define the width and the height of our resize.', 'start': 1793.438, 'duration': 4.222}, {'end': 1800.981, 'text': 'So here we have to define the width first and then the height.', 'start': 1797.98, 'duration': 3.001}, {'end': 1807.154, 'text': "So the width, let's say we want to make it So currently we have 623.", 'start': 1801.802, 'duration': 5.352}, {'end': 1808.656, 'text': "Let's make it 300 and we can make the height as 200.", 'start': 1807.154, 'duration': 1.502}, {'end': 1810.359, 'text': "So let's show this image.", 'start': 1808.656, 'duration': 1.703}, {'end': 1835.816, 'text': 'So here is our original image and here is the image that we have resized.', 'start': 1831.513, 'duration': 4.303}], 'summary': 'Learn to resize an image using opencv library by example.', 'duration': 132.081, 'max_score': 1703.735, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs1703735.jpg'}, {'end': 2415.355, 'src': 'embed', 'start': 2383.782, 'weight': 0, 'content': [{'end': 2390.066, 'text': 'So if we run that we should get a diagonal line going all the way.', 'start': 2383.782, 'duration': 6.284}, {'end': 2391.789, 'text': "Okay, that's great.", 'start': 2391.129, 'duration': 0.66}, {'end': 2395.37, 'text': 'So next we will move on to rectangles.', 'start': 2392.229, 'duration': 3.141}, {'end': 2401.612, 'text': 'So we will write CV2.rectangle and it follows the same convention.', 'start': 2395.47, 'duration': 6.142}, {'end': 2405.473, 'text': 'So you have to write the image and then you have to define the points.', 'start': 2401.672, 'duration': 3.801}, {'end': 2410.754, 'text': "Let's say zero, zero, and then we have to define the ending points.", 'start': 2405.693, 'duration': 5.061}, {'end': 2415.355, 'text': 'So that will be the corner point at the diagonal point.', 'start': 2411.854, 'duration': 3.501}], 'summary': 'Demonstrating drawing a diagonal line and rectangles using cv2 library', 'duration': 31.573, 'max_score': 2383.782, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs2383782.jpg'}, {'end': 2712.953, 'src': 'embed', 'start': 2671.577, 'weight': 4, 'content': [{'end': 2675.22, 'text': 'by the way, you can put it at points, decimal places as well.', 'start': 2671.577, 'duration': 3.643}, {'end': 2679.984, 'text': 'so you can write 0.5, and it will.', 'start': 2675.22, 'duration': 4.764}, {'end': 2686.34, 'text': 'it will become really small, and then you can define the thickness as well.', 'start': 2679.984, 'duration': 6.356}, {'end': 2694.325, 'text': "so, for example, we'll put this as one, and here you can see the difference.", 'start': 2686.34, 'duration': 7.985}, {'end': 2712.953, 'text': 'So now we are going to learn how to use word perspective on an image to get its bird eye view.', 'start': 2707.372, 'duration': 5.581}], 'summary': 'Learn to adjust points and thickness in an image with perspective transformation.', 'duration': 41.376, 'max_score': 2671.577, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs2671577.jpg'}, {'end': 2950.434, 'src': 'embed', 'start': 2904.632, 'weight': 1, 'content': [{'end': 2910.036, 'text': 'so we have a function get perspective transform.', 'start': 2904.632, 'duration': 5.404}, {'end': 2914.638, 'text': 'so get perspective transform.', 'start': 2910.036, 'duration': 4.602}, {'end': 2915.519, 'text': 'there you go.', 'start': 2914.638, 'duration': 0.881}, {'end': 2917.62, 'text': 'so you have to define the points.', 'start': 2915.519, 'duration': 2.101}, {'end': 2929.523, 'text': 'so points one and point two Now we can get our output image based on this matrix.', 'start': 2917.62, 'duration': 11.903}, {'end': 2944.591, 'text': 'So we can say image output is equals to CV2.WarpPerspective.', 'start': 2930.644, 'duration': 13.947}, {'end': 2950.434, 'text': 'And then we need to define our source image and we have to define our matrix.', 'start': 2944.871, 'duration': 5.563}], 'summary': 'The function get perspective transform defines points one and two to generate an output image based on the matrix.', 'duration': 45.802, 'max_score': 2904.632, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs2904632.jpg'}], 'start': 1029.368, 'title': 'Image processing techniques', 'summary': 'Covers opencv basic functions, image manipulation with numpy and opencv, image resizing, cropping, and drawing shapes, opencv image drawing and text, and image processing techniques, including specific dimensions, coordinates, and channel numbers, with demonstrations and explanations for each function.', 'chapters': [{'end': 1398.351, 'start': 1029.368, 'title': 'Opencv basic functions', 'summary': 'Covers the basic functions of importing, converting to grayscale, blurring, edge detection, and dilation in opencv, with demonstrations and explanations for each function.', 'duration': 368.983, 'highlights': ['The chapter covers the basic functions of importing, converting to grayscale, blurring, edge detection, and dilation in OpenCV.', 'Demonstrates the process of converting an image into grayscale using the cvtColor function from the cv2 package.', 'Explains the Gaussian blur function for blurring images and demonstrates the impact of different kernel sizes on the degree of blur.', 'Demonstrates the use of the Canny edge detector for identifying edges in images and the impact of threshold values on the detected edges.', 'Explains the concept of dilation in image processing and demonstrates its usage for increasing the thickness of detected edges.']}, {'end': 1699.049, 'start': 1399.731, 'title': 'Image manipulation with numpy and opencv', 'summary': 'Covers the use of numpy to create a kernel for image dilation and opencv for image manipulation, including installation steps, kernel definition, iterations, and examples of dilation and erosion, with a note on the opencv convention.', 'duration': 299.318, 'highlights': ['The chapter covers the use of NumPy to create a kernel for image dilation and OpenCV for image manipulation.', 'Installation of NumPy is explained, including the steps to add NumPy via project settings and import it into the code.', 'Definition of a kernel using NumPy, including setting all values to one and specifying the matrix size as five by five.', 'Explanation of setting the type of the object as an unsigned 8-bit integer, with values ranging from 0 to 255.', 'Demonstration of image dilation and its impact on image thickness, with the ability to specify the number of iterations for kernel movement.']}, {'end': 2383.002, 'start': 1703.735, 'title': 'Image resizing, cropping, and drawing shapes', 'summary': 'Covers resizing an image to 300x200 pixels, cropping an image to specific dimensions, and drawing a green line from (0,0) to (300,300) on a black 512x512 image.', 'duration': 679.267, 'highlights': ['Resizing an image to 300x200 pixels', 'Cropping an image to specific dimensions', 'Drawing a green line from (0,0) to (300,300) on a black 512x512 image']}, {'end': 2712.953, 'start': 2383.782, 'title': 'Opencv image drawing and text', 'summary': 'Demonstrates how to draw diagonal lines, rectangles, circles, and add text to images using opencv, including specific coordinates, colors, and thickness, and also covers the function to fill rectangles and the usage of word perspective.', 'duration': 329.171, 'highlights': ['The chapter covers drawing diagonal lines, rectangles, circles, and adding text to images using OpenCV, with detailed explanations of specific coordinates, colors, and thickness, providing a comprehensive understanding of the process.', 'The function to fill rectangles is demonstrated as an alternative to increasing thickness, offering a more efficient approach to achieve the desired effect on the image.', "The usage of word perspective to obtain a bird's eye view of an image is introduced, showcasing a more advanced functionality of OpenCV and expanding the scope of image manipulation techniques."]}, {'end': 3344.748, 'start': 2715.193, 'title': 'Image processing techniques', 'summary': 'Covers the process of applying perspective transformation to an image to flatten a specific area, as well as stacking images vertically and horizontally, and includes details on defining points and handling images with different channel numbers.', 'duration': 629.555, 'highlights': ['Applying perspective transformation to flatten a specific area by defining four corner points and using the get perspective transform function, resulting in a transformed output image.', "Stacking images vertically and horizontally using numpy's vertical and horizontal stack functions, including the consideration of scaling and handling images with different channel numbers.", 'Utilizing a custom function, stack images, to easily stack multiple images while handling scaling and different channel numbers.']}], 'duration': 2315.38, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs1029367.jpg', 'highlights': ['The chapter covers drawing diagonal lines, rectangles, circles, and adding text to images using OpenCV, with detailed explanations of specific coordinates, colors, and thickness, providing a comprehensive understanding of the process.', 'Applying perspective transformation to flatten a specific area by defining four corner points and using the get perspective transform function, resulting in a transformed output image.', 'Demonstrates the process of converting an image into grayscale using the cvtColor function from the cv2 package.', 'Demonstrates the use of the Canny edge detector for identifying edges in images and the impact of threshold values on the detected edges.', "Demonstrates the usage of word perspective to obtain a bird's eye view of an image, showcasing a more advanced functionality of OpenCV and expanding the scope of image manipulation techniques."]}, {'end': 4120.104, 'segs': [{'end': 3424.828, 'src': 'embed', 'start': 3391.441, 'weight': 3, 'content': [{'end': 3401.368, 'text': 'So we are just displaying it using the imshow function and we are adding a delay so that it does not disappear.', 'start': 3391.441, 'duration': 9.927}, {'end': 3404.87, 'text': 'So this is our image.', 'start': 3403.409, 'duration': 1.461}, {'end': 3408.373, 'text': 'So our task will be to detect the orange color in this image.', 'start': 3405.01, 'duration': 3.363}, {'end': 3412.684, 'text': 'So first we are going to convert this into HSV space.', 'start': 3409.423, 'duration': 3.261}, {'end': 3424.828, 'text': 'So we will say image HSV is equals to, now as you remember, we have been using the CVT color to convert it into gray scale.', 'start': 3413.104, 'duration': 11.724}], 'summary': 'Using imshow to display image, task is to detect orange color, converting to hsv space.', 'duration': 33.387, 'max_score': 3391.441, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs3391441.jpg'}, {'end': 3519.783, 'src': 'embed', 'start': 3464.99, 'weight': 0, 'content': [{'end': 3468.94, 'text': "And I did not write a new name, that's why it's overwriting, HSV.", 'start': 3464.99, 'duration': 3.95}, {'end': 3475.36, 'text': 'So this is the original and this is the HSV.', 'start': 3471.457, 'duration': 3.903}, {'end': 3481.225, 'text': 'So now we need to define some color values, some ranges in which we want our color to be.', 'start': 3475.901, 'duration': 5.324}, {'end': 3485.488, 'text': 'So we will define the hue, the saturation, and the value limits.', 'start': 3481.825, 'duration': 3.663}, {'end': 3493.394, 'text': 'And within that limit, if the image region falls within that color range, we will grab that.', 'start': 3486.028, 'duration': 7.366}, {'end': 3495.196, 'text': "So let's do that.", 'start': 3493.995, 'duration': 1.201}, {'end': 3505.379, 'text': 'So, but one thing to note is that we do not actually know what are the minimum and maximum values that we need for this particular orange color.', 'start': 3495.896, 'duration': 9.483}, {'end': 3507.68, 'text': 'So what we are going to do?', 'start': 3506.059, 'duration': 1.621}, {'end': 3516.942, 'text': 'we are going to introduce something known as track bars that will help us play around with the values in real time so that we can find the optimum,', 'start': 3507.68, 'duration': 9.262}, {'end': 3519.783, 'text': 'minimum and maximum values of our color.', 'start': 3516.942, 'duration': 2.841}], 'summary': 'Defining color ranges using hsv values and track bars for optimization.', 'duration': 54.793, 'max_score': 3464.99, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs3464990.jpg'}, {'end': 3845.645, 'src': 'embed', 'start': 3813.163, 'weight': 5, 'content': [{'end': 3821.591, 'text': 'so what we will do next is we are going to read these uh, track bar values so we can apply on our image.', 'start': 3813.163, 'duration': 8.428}, {'end': 3827.717, 'text': 'so here we are going to get our values using the get track bar position function.', 'start': 3822.592, 'duration': 5.125}, {'end': 3832.282, 'text': 'so we will say our edge minimum basically is equals to cv2.', 'start': 3827.717, 'duration': 4.565}, {'end': 3839.849, 'text': 'cv2 dot gets track bar position.', 'start': 3832.282, 'duration': 7.567}, {'end': 3840.21, 'text': 'there you go.', 'start': 3839.849, 'duration': 0.361}, {'end': 3845.645, 'text': 'So then we will write which value are we talking about?', 'start': 3841.522, 'duration': 4.123}], 'summary': 'Reading track bar values to apply on the image using cv2.gettrackbarpos.', 'duration': 32.482, 'max_score': 3813.163, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs3813163.jpg'}], 'start': 3344.748, 'title': 'Color detection and track bars in opencv', 'summary': 'Covers converting images to hsv space, defining color ranges, and introducing track bars for real-time adjustments. it also demonstrates creating masks to filter images based on the defined color ranges.', 'chapters': [{'end': 3639.298, 'start': 3344.748, 'title': 'Color detection in opencv', 'summary': 'Covers converting an image to hsv space, defining color ranges, and introducing track bars to find the optimum minimum and maximum values for the orange color detection in opencv.', 'duration': 294.55, 'highlights': ['Introducing track bars to play around with the values in real-time to find the optimum minimum and maximum values of the color - providing a dynamic and interactive approach to color detection.', 'Defining the HSV space and converting the image to it, allowing for better color manipulation and analysis.', "Importing the image 'lambo.png' and displaying it using the imshow function, setting the stage for the color detection task.", 'Creating a new window for track bars, enabling easy manipulation and visualization of color value ranges in real-time.']}, {'end': 4120.104, 'start': 3639.298, 'title': 'Creating track bars and applying filters', 'summary': 'Demonstrates how to create track bars to capture user input for hue, saturation, and value ranges, allowing real-time adjustments and the creation of a mask to filter the image based on the defined color ranges.', 'duration': 480.806, 'highlights': ['Creating track bars for hue, saturation, and value ranges', 'Applying track bar values to filter the image', 'Capturing real-time adjustments in track bar values']}], 'duration': 775.356, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs3344748.jpg', 'highlights': ['Introducing track bars to play around with the values in real-time to find the optimum minimum and maximum values of the color - providing a dynamic and interactive approach to color detection.', 'Defining the HSV space and converting the image to it, allowing for better color manipulation and analysis.', 'Creating track bars for hue, saturation, and value ranges', "Importing the image 'lambo.png' and displaying it using the imshow function, setting the stage for the color detection task.", 'Creating a new window for track bars, enabling easy manipulation and visualization of color value ranges in real-time.', 'Applying track bar values to filter the image', 'Capturing real-time adjustments in track bar values']}, {'end': 5266.443, 'segs': [{'end': 4156.054, 'src': 'embed', 'start': 4120.104, 'weight': 0, 'content': [{'end': 4136.272, 'text': 'so we will say upper is equals to numpy.array and we will add our maximum limits, which is hmax, then smax and then valmax.', 'start': 4120.104, 'duration': 16.168}, {'end': 4140.626, 'text': 'okay. so this will give us the mask.', 'start': 4137.765, 'duration': 2.861}, {'end': 4142.147, 'text': 'so basically what it will do.', 'start': 4140.626, 'duration': 1.521}, {'end': 4150.371, 'text': 'it will filter out and give us the filtered out image of that color.', 'start': 4142.147, 'duration': 8.224}, {'end': 4154.453, 'text': "so let's see how that looks like.", 'start': 4150.371, 'duration': 4.082}, {'end': 4156.054, 'text': 'or no need to copy that.', 'start': 4154.453, 'duration': 1.601}], 'summary': 'Using numpy.array, we set upper limits for hmax, smax, and valmax to create a color mask for image filtering.', 'duration': 35.95, 'max_score': 4120.104, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs4120104.jpg'}, {'end': 4224.67, 'src': 'embed', 'start': 4190.272, 'weight': 2, 'content': [{'end': 4192.854, 'text': 'So if I was to detect the orange.', 'start': 4190.272, 'duration': 2.582}, {'end': 4201.153, 'text': 'would say that is pretty much good, so I recommend keep changing the values,', 'start': 4193.977, 'duration': 7.176}, {'end': 4207.226, 'text': 'try to keep it smoother and smoother and Eventually you will get some good results.', 'start': 4201.153, 'duration': 6.073}, {'end': 4214.808, 'text': 'So now that we have these values, what we can do is we can put them as our initial values.', 'start': 4207.486, 'duration': 7.322}, {'end': 4220.209, 'text': 'So we have 0, 19, 110, 240, 153, and 255.', 'start': 4215.408, 'duration': 4.801}, {'end': 4221.329, 'text': 'So we can go back here.', 'start': 4220.209, 'duration': 1.12}, {'end': 4224.67, 'text': 'We can still open up our track bar.', 'start': 4222.31, 'duration': 2.36}], 'summary': 'Recommend changing values to achieve smoother results. initial values: 0, 19, 110, 240, 153, 255.', 'duration': 34.398, 'max_score': 4190.272, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs4190272.jpg'}, {'end': 4305.327, 'src': 'embed', 'start': 4268.959, 'weight': 5, 'content': [{'end': 4278.065, 'text': 'so instead of getting this black and white mask, we can get the actual colored part, the orange color, over here.', 'start': 4268.959, 'duration': 9.106}, {'end': 4289.505, 'text': 'so how we can do that is by creating, using this mask we will create a new image so we can say image results is equals to.', 'start': 4278.065, 'duration': 11.44}, {'end': 4291.705, 'text': 'we are going to.', 'start': 4289.505, 'duration': 2.2}, {'end': 4294.866, 'text': 'we are going to use the and operation.', 'start': 4291.705, 'duration': 3.161}, {'end': 4305.327, 'text': 'so we have the bitwise and operation which will add two images together to create a new image.', 'start': 4294.866, 'duration': 10.461}], 'summary': 'Creating a new colored image using bitwise and operation.', 'duration': 36.368, 'max_score': 4268.959, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs4268959.jpg'}, {'end': 4396.474, 'src': 'embed', 'start': 4370.687, 'weight': 6, 'content': [{'end': 4381.33, 'text': 'and we are checking wherever we have these white pixels we are getting from this image and creating a completely new image from it.', 'start': 4370.687, 'duration': 10.643}, {'end': 4383.391, 'text': 'so that is what we are doing.', 'start': 4381.33, 'duration': 2.061}, {'end': 4393.209, 'text': 'So one thing we can do here is to add our function from our previous chapter, in which we joined the images,', 'start': 4384.557, 'duration': 8.652}, {'end': 4396.474, 'text': "so that we don't have to play with all these images again and again.", 'start': 4393.209, 'duration': 3.265}], 'summary': 'Creating a new image by identifying and processing white pixels, and optimizing by reusing a previous image joining function.', 'duration': 25.787, 'max_score': 4370.687, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs4370687.jpg'}, {'end': 4602.502, 'src': 'embed', 'start': 4576.163, 'weight': 3, 'content': [{'end': 4585.709, 'text': 'so we are going to detect each one of them and we will categorize which category it belongs to and we will show how many corner points it has,', 'start': 4576.163, 'duration': 9.546}, {'end': 4588.971, 'text': 'plus the area of each of the shape.', 'start': 4585.709, 'duration': 3.262}, {'end': 4591.233, 'text': "So let's start.", 'start': 4589.952, 'duration': 1.281}, {'end': 4594.676, 'text': 'So we are going to pre-process our image first.', 'start': 4592.054, 'duration': 2.622}, {'end': 4602.502, 'text': 'So we are going to convert it into grayscale, and then we will find the edges so that we can find their corner points.', 'start': 4595.216, 'duration': 7.286}], 'summary': 'Detect and categorize shapes, determine corner points and area, and pre-process image for analysis.', 'duration': 26.339, 'max_score': 4576.163, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs4576163.jpg'}, {'end': 4953.026, 'src': 'embed', 'start': 4916.998, 'weight': 4, 'content': [{'end': 4926.045, 'text': 'and then we are going to use our cv2 dot find contour function, find contours.', 'start': 4916.998, 'duration': 9.047}, {'end': 4936.974, 'text': 'now, in that we have to define our image, the one we want to find the contours in, and the second parameter is our retrieval method.', 'start': 4926.045, 'duration': 10.929}, {'end': 4939.916, 'text': 'we have different types of retrieval methods.', 'start': 4936.974, 'duration': 2.942}, {'end': 4944.42, 'text': 'the one we are going to use is the external method.', 'start': 4939.916, 'duration': 4.504}, {'end': 4945.581, 'text': 'so retrieval.', 'start': 4944.42, 'duration': 1.161}, {'end': 4949.196, 'text': 'We will write R-E.', 'start': 4947.13, 'duration': 2.066}, {'end': 4953.026, 'text': 'what is it? R-E-T-E-R, yeah.', 'start': 4949.196, 'duration': 3.83}], 'summary': "Using cv2's find contour function to identify contours in an image, external method retrieval being utilized.", 'duration': 36.028, 'max_score': 4916.998, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs4916998.jpg'}, {'end': 5122.34, 'src': 'embed', 'start': 5056.055, 'weight': 1, 'content': [{'end': 5060.217, 'text': "uh, before we do that, let's just print it out so you can see.", 'start': 5056.055, 'duration': 4.162}, {'end': 5064.459, 'text': 'um, what kind of areas are we getting?', 'start': 5060.217, 'duration': 4.242}, {'end': 5070.281, 'text': 'So, if we run this, Oh, actually we have to call the function.', 'start': 5064.579, 'duration': 5.702}, {'end': 5070.961, 'text': 'My bad.', 'start': 5070.561, 'duration': 0.4}, {'end': 5072.342, 'text': 'So we need to go down.', 'start': 5071.241, 'duration': 1.101}, {'end': 5080.57, 'text': 'And here we will say, get contours and we will send the image scanning.', 'start': 5073.346, 'duration': 7.224}, {'end': 5083.812, 'text': 'And there you go.', 'start': 5082.951, 'duration': 0.861}, {'end': 5090.295, 'text': 'So these are all the areas we are finding for each of what do you call the shapes that we have detected.', 'start': 5083.832, 'duration': 6.463}, {'end': 5095.698, 'text': 'So next we are going to draw them so that we can see them clearly.', 'start': 5091.716, 'duration': 3.982}, {'end': 5100.087, 'text': 'We are going to use the draw contours function.', 'start': 5097.364, 'duration': 2.723}, {'end': 5103.953, 'text': 'So cv2.draw contours.', 'start': 5100.468, 'duration': 3.485}, {'end': 5107.698, 'text': 'We will give it the image that we want to draw it on.', 'start': 5104.453, 'duration': 3.245}, {'end': 5116.856, 'text': "So we are going to use, let's create, I want to put it on the original image.", 'start': 5109.11, 'duration': 7.746}, {'end': 5122.34, 'text': 'So what we can do is we can create a copy of our original image.', 'start': 5117.456, 'duration': 4.884}], 'summary': 'Identifying areas and drawing contours on detected shapes using opencv.', 'duration': 66.285, 'max_score': 5056.055, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs5056055.jpg'}, {'end': 5231.704, 'src': 'embed', 'start': 5196.498, 'weight': 8, 'content': [{'end': 5199.941, 'text': 'and oh, we did not put the image contour here.', 'start': 5196.498, 'duration': 3.443}, {'end': 5206.205, 'text': 'so image contour, and there you go.', 'start': 5199.941, 'duration': 6.264}, {'end': 5211.87, 'text': 'so now we have all the shapes and we have detected all the contours.', 'start': 5206.205, 'duration': 5.665}, {'end': 5218.995, 'text': "you can see there's a blue line around them and it seems to have detected fairly well.", 'start': 5211.87, 'duration': 7.125}, {'end': 5222.999, 'text': 'so next, what are we going to do?', 'start': 5220.518, 'duration': 2.481}, {'end': 5228.943, 'text': 'so next we are going to check um for the minimum area.', 'start': 5222.999, 'duration': 5.944}, {'end': 5231.704, 'text': 'so we will give it a threshold.', 'start': 5228.943, 'duration': 2.761}], 'summary': 'Detecting shapes and contours with good accuracy.', 'duration': 35.206, 'max_score': 5196.498, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs5196498.jpg'}], 'start': 4120.104, 'title': 'Image color filtering, processing, and opencv contour analysis', 'summary': 'Demonstrates using numpy to filter specific colors from an image, creating new images, detecting shapes, finding contours and corner points, and analyzing contours with opencv, achieving smooth results and setting a minimum threshold for contour area at 500 pixels.', 'chapters': [{'end': 4370.687, 'start': 4120.104, 'title': 'Image color filtering with numpy', 'summary': 'Demonstrates using numpy to create a mask for filtering out specific colors from an image and applying the mask to obtain the desired colored image, achieving smooth results by adjusting the color values using track bars.', 'duration': 250.583, 'highlights': ['Using numpy to create a mask for filtering out specific colors from an image and applying the mask to obtain the desired colored image.', 'Adjusting color values using track bars to achieve smoother results and eventually obtain good color filtering.', 'Explaining the bitwise and operation for creating a new image by combining the original image with the applied mask.']}, {'end': 4977.32, 'start': 4370.687, 'title': 'Image processing and contour detection', 'summary': 'Covers creating a new image from white pixels, stacking images to display them together, detecting shapes in an image, and finding contours and corner points with the help of functions like stack images, cvt color, gaussian blur, and find contours.', 'duration': 606.633, 'highlights': ['Creating a new image from white pixels and stacking images to display them together', 'Detecting shapes in an image and finding contours and corner points', 'Creating a function to find contours and using the external retrieval method']}, {'end': 5266.443, 'start': 4977.8, 'title': 'Opencv contour analysis', 'summary': 'Discusses using opencv to find and analyze contours in an image, drawing and calculating areas for each contour, and setting a minimum threshold for contour area at 500 pixels.', 'duration': 288.643, 'highlights': ["Drawing contours on the original image using OpenCV's drawContours function.", 'Calculating and printing the areas of the detected contours.', 'Looping through and analyzing the contours found in the image.']}], 'duration': 1146.339, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs4120104.jpg', 'highlights': ['Using numpy to create a mask for filtering out specific colors from an image and applying the mask to obtain the desired colored image.', "Drawing contours on the original image using OpenCV's drawContours function.", 'Adjusting color values using track bars to achieve smoother results and eventually obtain good color filtering.', 'Detecting shapes in an image and finding contours and corner points', 'Creating a function to find contours and using the external retrieval method', 'Explaining the bitwise and operation for creating a new image by combining the original image with the applied mask.', 'Creating a new image from white pixels and stacking images to display them together', 'Calculating and printing the areas of the detected contours.', 'Looping through and analyzing the contours found in the image.']}, {'end': 6353.742, 'segs': [{'end': 5302.09, 'src': 'embed', 'start': 5267.763, 'weight': 4, 'content': [{'end': 5279.676, 'text': 'And if we write that and we can see all of our uh shapes have areas greater than 500, so we should not have any issues.', 'start': 5267.763, 'duration': 11.913}, {'end': 5285.92, 'text': 'so the next thing we are going to do is we will calculate the curve length.', 'start': 5279.676, 'duration': 6.244}, {'end': 5293.725, 'text': 'so the curve length will help us, uh, approximate the corners of our edges, uh, corners of our shape.', 'start': 5285.92, 'duration': 7.805}, {'end': 5295.806, 'text': "so let's write that down.", 'start': 5293.725, 'duration': 2.081}, {'end': 5302.09, 'text': 'so we are going to write here parameter is equals to cv2 dot,', 'start': 5295.806, 'duration': 6.284}], 'summary': 'All shapes have areas > 500, next step is to calculate curve length using cv2.', 'duration': 34.327, 'max_score': 5267.763, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs5267763.jpg'}, {'end': 5949.383, 'src': 'embed', 'start': 5914.554, 'weight': 3, 'content': [{'end': 5918.777, 'text': 'Since we are dealing with decimal numbers, we have to define one of them as float.', 'start': 5914.554, 'duration': 4.223}, {'end': 5923.64, 'text': 'Float, so it gives us float value.', 'start': 5919.857, 'duration': 3.783}, {'end': 5927.963, 'text': 'So once we have that, we are going to put another if statement.', 'start': 5924.34, 'duration': 3.623}, {'end': 5930.485, 'text': 'If our aspect ratio.', 'start': 5928.824, 'duration': 1.661}, {'end': 5944.902, 'text': 'is greater than 0.95, and our aspect ratio is less than 1.05, which means we can have a deviation of 5%.', 'start': 5933.718, 'duration': 11.184}, {'end': 5949.383, 'text': 'Then we will say that our object type is equals to square.', 'start': 5944.902, 'duration': 4.481}], 'summary': 'Using float for decimal numbers. condition for aspect ratio 0.95 to 1.05. object type equals square.', 'duration': 34.829, 'max_score': 5914.554, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs5914554.jpg'}, {'end': 6047.346, 'src': 'heatmap', 'start': 5901.265, 'weight': 0, 'content': [{'end': 5903.106, 'text': "If it's not, we will say it's a rectangle.", 'start': 5901.265, 'duration': 1.841}, {'end': 5907.609, 'text': 'So the first thing we will do is we will get the aspect ratio.', 'start': 5903.906, 'duration': 3.703}, {'end': 5913.773, 'text': 'So we will write aspect ratio is equals to, it will be width divided by height.', 'start': 5907.769, 'duration': 6.004}, {'end': 5918.777, 'text': 'Since we are dealing with decimal numbers, we have to define one of them as float.', 'start': 5914.554, 'duration': 4.223}, {'end': 5923.64, 'text': 'Float, so it gives us float value.', 'start': 5919.857, 'duration': 3.783}, {'end': 5927.963, 'text': 'So once we have that, we are going to put another if statement.', 'start': 5924.34, 'duration': 3.623}, {'end': 5930.485, 'text': 'If our aspect ratio.', 'start': 5928.824, 'duration': 1.661}, {'end': 5944.902, 'text': 'is greater than 0.95, and our aspect ratio is less than 1.05, which means we can have a deviation of 5%.', 'start': 5933.718, 'duration': 11.184}, {'end': 5949.383, 'text': 'Then we will say that our object type is equals to square.', 'start': 5944.902, 'duration': 4.481}, {'end': 5972.455, 'text': "If that's not the case, then our object type is equals to rectangle.", 'start': 5964.813, 'duration': 7.642}, {'end': 5974.876, 'text': "So let's run that.", 'start': 5973.576, 'duration': 1.3}, {'end': 5978.537, 'text': 'And there you go.', 'start': 5977.897, 'duration': 0.64}, {'end': 5983.999, 'text': 'So here we are getting a square, rectangle, square, square, rectangle, square.', 'start': 5978.617, 'duration': 5.382}, {'end': 5986.86, 'text': 'So next we will write it for the circle.', 'start': 5984.419, 'duration': 2.441}, {'end': 5991.461, 'text': 'So we will write else if.', 'start': 5987.04, 'duration': 4.421}, {'end': 6014.489, 'text': "object corner is greater than four then we are going to write object type is equals to circles so let's run that And there you go.", 'start': 5996.483, 'duration': 18.006}, {'end': 6021.375, 'text': 'So now we have the circle, we have the rectangle and we have the square, the triangle.', 'start': 6014.809, 'duration': 6.566}, {'end': 6024.677, 'text': 'So all of them we are detecting properly, except for this one.', 'start': 6021.435, 'duration': 3.242}, {'end': 6030.002, 'text': 'It will take a little more complication to solve that, but we can try that later on.', 'start': 6024.998, 'duration': 5.004}, {'end': 6042.764, 'text': 'To detect faces we are going to use a method proposed by Viola and Jones.', 'start': 6038.462, 'duration': 4.302}, {'end': 6047.346, 'text': 'This was one of the earliest methods that allowed real-time object detection.', 'start': 6043.645, 'duration': 3.701}], 'summary': 'Using aspect ratio to classify objects into square, rectangle, or circle; detecting faces with viola and jones method.', 'duration': 32.537, 'max_score': 5901.265, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs5901265.jpg'}, {'end': 6095.774, 'src': 'embed', 'start': 6070.188, 'weight': 1, 'content': [{'end': 6078.175, 'text': 'In our case we are not going to train the model but instead we will use a pre-trained file for faces which is provided by OpenCV.', 'start': 6070.188, 'duration': 7.987}, {'end': 6087.162, 'text': 'Now OpenCV has provided some default cascades that can detect different things such as number plates, eyes, full body etc.', 'start': 6078.775, 'duration': 8.387}, {'end': 6095.774, 'text': 'If you want to learn more about creating custom cascades, I have a separate video for that, which will be available in the description.', 'start': 6088.749, 'duration': 7.025}], 'summary': 'Using pre-trained file from opencv for face detection, with options for custom cascades.', 'duration': 25.586, 'max_score': 6070.188, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs6070188.jpg'}, {'end': 6260.154, 'src': 'embed', 'start': 6233.021, 'weight': 2, 'content': [{'end': 6239.384, 'text': 'So next we are going to create a bounding box around the faces that we have detected.', 'start': 6233.021, 'duration': 6.363}, {'end': 6245.766, 'text': 'So we have to loop through all the faces that we have detected and put rectangles around them.', 'start': 6239.524, 'duration': 6.242}, {'end': 6247.587, 'text': 'So we will write four.', 'start': 6246.167, 'duration': 1.42}, {'end': 6254.071, 'text': 'we will directly get the parameters of our x, y and width and height.', 'start': 6249.628, 'duration': 4.443}, {'end': 6258.994, 'text': 'so these are the four parameters that you require to actually create the bounding box.', 'start': 6254.071, 'duration': 4.923}, {'end': 6260.154, 'text': 'so we will.', 'start': 6258.994, 'duration': 1.16}], 'summary': 'Creating bounding boxes around detected faces using x, y, width, and height parameters.', 'duration': 27.133, 'max_score': 6233.021, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs6233021.jpg'}], 'start': 5267.763, 'title': 'Image processing techniques', 'summary': 'Covers techniques for calculating curve length, approximating corner points, object detection, classification, and face detection using opencv, viola-jones method, and pre-trained cascade files.', 'chapters': [{'end': 5426.991, 'start': 5267.763, 'title': 'Calculating curve length and approximating corner points', 'summary': 'Discusses calculating the curve length and approximating the corner points of shapes using opencv, with a focus on identifying the number of corner points in each shape and understanding the arc length parameter.', 'duration': 159.228, 'highlights': ['The chapter explains how to calculate the curve length of contours using the arc length parameter, with a focus on ensuring all shapes have areas greater than 500.', 'It details the process of approximating the corner points of shapes, emphasizing the significance of understanding the number of corner points in each shape and adjusting the resolution for optimal results.']}, {'end': 6014.489, 'start': 5427.312, 'title': 'Object detection and classification', 'summary': 'Discusses detecting and categorizing objects based on the number of corners, creating bounding boxes, and classifying objects as triangles, squares, rectangles, or circles using their dimensions and aspect ratios.', 'duration': 587.177, 'highlights': ['Creating bounding boxes around detected objects and extracting their dimensions.', 'Categorizing objects based on the number of corners and classifying them as triangles, squares, rectangles, or circles.', 'Determining object type based on aspect ratio and classifying as square or rectangle.']}, {'end': 6353.742, 'start': 6014.809, 'title': 'Face detection using viola-jones method', 'summary': 'Explains the viola-jones method for real-time face detection, using pre-trained cascade files to identify faces and creating bounding boxes around them, with the possibility to detect other objects using custom cascades.', 'duration': 338.933, 'highlights': ['The Viola-Jones method allows real-time object detection and is used for detecting faces using pre-trained cascade files, provided by OpenCV.', 'Pre-trained cascade files provided by OpenCV are used for detecting faces without the need to train the model, and custom cascades can be created to detect other objects such as cars, mobile phones, and TVs.', 'The process involves converting the image into grayscale, detecting faces using the Viola-Jones method, and creating bounding boxes around the detected faces.']}], 'duration': 1085.979, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs5267763.jpg', 'highlights': ['The Viola-Jones method allows real-time object detection and is used for detecting faces using pre-trained cascade files, provided by OpenCV.', 'Pre-trained cascade files provided by OpenCV are used for detecting faces without the need to train the model, and custom cascades can be created to detect other objects such as cars, mobile phones, and TVs.', 'Creating bounding boxes around detected objects and extracting their dimensions.', 'Determining object type based on aspect ratio and classifying as square or rectangle.', 'The chapter explains how to calculate the curve length of contours using the arc length parameter, with a focus on ensuring all shapes have areas greater than 500.']}, {'end': 7007.88, 'segs': [{'end': 6468.468, 'src': 'embed', 'start': 6440.619, 'weight': 3, 'content': [{'end': 6443.401, 'text': 'We are setting the width and height of our frame.', 'start': 6440.619, 'duration': 2.782}, {'end': 6447.124, 'text': 'And these are ID number three and ID number four.', 'start': 6444.182, 'duration': 2.942}, {'end': 6449.706, 'text': 'Then we are also setting up the brightness.', 'start': 6447.604, 'duration': 2.102}, {'end': 6451.967, 'text': "Let's make it 150.", 'start': 6449.766, 'duration': 2.201}, {'end': 6456.871, 'text': 'And then we have our now our device is not zero.', 'start': 6451.967, 'duration': 4.904}, {'end': 6458.312, 'text': "It's supposed to be one.", 'start': 6456.891, 'duration': 1.421}, {'end': 6464.205, 'text': 'And then we are getting into our while loop where we are getting our image.', 'start': 6459.522, 'duration': 4.683}, {'end': 6468.468, 'text': 'And then we are displaying it using the imshow function.', 'start': 6465.086, 'duration': 3.382}], 'summary': 'Setting frame dimensions, brightness, and device id; displaying image.', 'duration': 27.849, 'max_score': 6440.619, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs6440619.jpg'}, {'end': 6601.922, 'src': 'embed', 'start': 6563.319, 'weight': 0, 'content': [{'end': 6568.501, 'text': 'And then we will take this image and we will convert it into the HSV space.', 'start': 6563.319, 'duration': 5.182}, {'end': 6578.267, 'text': 'And from there we are going to use our upper and lower limits to this one.', 'start': 6569.702, 'duration': 8.565}, {'end': 6581.909, 'text': 'so let me remove that.', 'start': 6578.267, 'duration': 3.642}, {'end': 6588.173, 'text': 'so here we have our upper and lower limits and then what can we do?', 'start': 6581.909, 'duration': 6.264}, {'end': 6592.095, 'text': "then we can just show that if it's working properly or not.", 'start': 6588.173, 'duration': 3.922}, {'end': 6601.922, 'text': 'so cv2.im show and we can put, for example, image and we need to show our mask.', 'start': 6592.095, 'duration': 9.827}], 'summary': 'Convert image to hsv space, set upper and lower limits, and display the mask using cv2.imshow.', 'duration': 38.603, 'max_score': 6563.319, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs6563319.jpg'}, {'end': 6684.622, 'src': 'embed', 'start': 6653.238, 'weight': 1, 'content': [{'end': 6658.623, 'text': 'So we need to give it the minimum and the maximum hue and saturation values.', 'start': 6653.238, 'duration': 5.385}, {'end': 6663.247, 'text': 'For that, I have written down a code by the name color picker.', 'start': 6659.063, 'duration': 4.184}, {'end': 6670.312, 'text': 'So basically what it does, it helps us pick the right hue and saturation values using a webcam.', 'start': 6663.787, 'duration': 6.525}, {'end': 6676.017, 'text': "So it's pretty much the same code, but added with the webcam that we have done in our color chapter.", 'start': 6670.372, 'duration': 5.645}, {'end': 6684.622, 'text': 'so here we have our webcam and we have the color orange.', 'start': 6680.461, 'duration': 4.161}], 'summary': 'Code uses color picker to set min and max hue/saturation values, using webcam for color selection.', 'duration': 31.384, 'max_score': 6653.238, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs6653238.jpg'}, {'end': 6976.304, 'src': 'embed', 'start': 6942.953, 'weight': 2, 'content': [{'end': 6948.955, 'text': "but that's the thing like we are only detecting orange we need to detect all the colors we have in this list.", 'start': 6942.953, 'duration': 6.002}, {'end': 6959.519, 'text': "so for that we need to add on a for loop so we can say for let's say color, color in my colors,", 'start': 6948.955, 'duration': 10.564}, {'end': 6964.961, 'text': 'for each of these colors we are going to create a mask.', 'start': 6959.519, 'duration': 5.442}, {'end': 6967.161, 'text': "so we don't need to write this down.", 'start': 6964.961, 'duration': 2.2}, {'end': 6976.304, 'text': 'we can just replace this with colors, color and then again color.', 'start': 6967.161, 'duration': 9.143}], 'summary': 'To detect all colors, add a for loop to create masks for each color in the list.', 'duration': 33.351, 'max_score': 6942.953, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs6942953.jpg'}], 'start': 6354.703, 'title': 'Webcam color detection', 'summary': 'Demonstrates setting up a webcam to capture images, adjust brightness, and integrating color detection through hsv space conversion, with the process of defining color ranges, creating masks, and displaying results using a for loop.', 'chapters': [{'end': 6601.922, 'start': 6354.703, 'title': 'Webcam color detection', 'summary': 'Demonstrates how to set up a webcam to capture images, adjust brightness, and display the feed, while also integrating color detection by converting images to the hsv space and applying upper and lower limits to create a mask for detecting colors.', 'duration': 247.219, 'highlights': ['The chapter focuses on setting up the webcam, adjusting brightness, and displaying the feed, utilizing ID numbers and specific device settings.', 'The chapter integrates color detection by converting images to the HSV space and applying upper and lower limits to create a mask for detecting colors.']}, {'end': 7007.88, 'start': 6601.922, 'title': 'Detecting different colors', 'summary': 'Discusses the process of detecting different colors using a color picker to define lists of colors with their respective minimum and maximum hue and saturation values, followed by creating masks for each color and utilizing a for loop to display the results in different windows.', 'duration': 405.958, 'highlights': ['The chapter discusses the process of detecting different colors using a color picker to define lists of colors with their respective minimum and maximum hue and saturation values.', 'Creating masks for each color and utilizing a for loop to display the results in different windows.']}], 'duration': 653.177, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs6354703.jpg', 'highlights': ['The chapter integrates color detection by converting images to the HSV space and applying upper and lower limits to create a mask for detecting colors.', 'The chapter discusses the process of detecting different colors using a color picker to define lists of colors with their respective minimum and maximum hue and saturation values.', 'Creating masks for each color and utilizing a for loop to display the results in different windows.', 'The chapter focuses on setting up the webcam, adjusting brightness, and displaying the feed, utilizing ID numbers and specific device settings.']}, {'end': 8008.197, 'segs': [{'end': 7082.867, 'src': 'embed', 'start': 7029.884, 'weight': 0, 'content': [{'end': 7041.905, 'text': 'for example, if I remove this now, let me remove that, and it will only give me two of the masks, so it will not show me green anymore.', 'start': 7029.884, 'duration': 12.021}, {'end': 7046.568, 'text': 'so this way we have created something generic that will work for multiple colors.', 'start': 7041.905, 'duration': 4.663}, {'end': 7048.69, 'text': 'so you can keep adding more and more.', 'start': 7046.568, 'duration': 2.122}, {'end': 7051.351, 'text': 'now for each of the masks that we have detected.', 'start': 7048.69, 'duration': 2.661}, {'end': 7063.164, 'text': 'let me comment this out For each of the masks that we have detected, we need to find where is this object that we have found in our image?', 'start': 7051.351, 'duration': 11.813}, {'end': 7073.573, 'text': 'Now to find that, we need to get our contours and we need to approximate the bounding box around it so we can find our location of the object.', 'start': 7063.564, 'duration': 10.009}, {'end': 7082.867, 'text': 'So for that, we need to get into the code of one of our previous chapters in which we learned how to find contours.', 'start': 7074.744, 'duration': 8.123}], 'summary': 'Creating a generic mask for multiple colors and finding object locations using contours.', 'duration': 52.983, 'max_score': 7029.884, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs7029884.jpg'}, {'end': 7249.011, 'src': 'embed', 'start': 7203.608, 'weight': 7, 'content': [{'end': 7206.671, 'text': 'so it should not display any of the masks.', 'start': 7203.608, 'duration': 3.063}, {'end': 7209.332, 'text': "so let's try that out.", 'start': 7206.671, 'duration': 2.661}, {'end': 7212.575, 'text': 'orange, green, purple.', 'start': 7209.332, 'duration': 3.243}, {'end': 7214.576, 'text': 'so none of them are working.', 'start': 7212.575, 'duration': 2.001}, {'end': 7224.803, 'text': "great, let's find out why.", 'start': 7214.576, 'duration': 10.227}, {'end': 7227.445, 'text': 'so, when we are sending the mask?', 'start': 7224.803, 'duration': 2.642}, {'end': 7239.608, 'text': 'Okay, because we did not put here image results.', 'start': 7235.487, 'duration': 4.121}, {'end': 7246.571, 'text': 'so we need to display the image result, because that is the one that will have the the elements on it.', 'start': 7239.608, 'duration': 6.963}, {'end': 7248.511, 'text': "So let's run that.", 'start': 7246.571, 'duration': 1.94}, {'end': 7249.011, 'text': 'There you go.', 'start': 7248.511, 'duration': 0.5}], 'summary': 'Troubleshooting image display issue with masks - orange, green, and purple, none working, resolving by displaying image results.', 'duration': 45.403, 'max_score': 7203.608, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs7203608.jpg'}, {'end': 7299.898, 'src': 'embed', 'start': 7272.878, 'weight': 2, 'content': [{'end': 7277.824, 'text': "So we will send the center rather than, so we'll send the tip rather than the center.", 'start': 7272.878, 'duration': 4.946}, {'end': 7280.107, 'text': "So what we'll do is we will return.", 'start': 7278.225, 'duration': 1.882}, {'end': 7291.556, 'text': 'so here we will return and we are going to return the value of x plus our width, divided by 2.', 'start': 7281.934, 'duration': 9.622}, {'end': 7299.898, 'text': "so it's in the center, and then we are going to send the the value of y as it is.", 'start': 7291.556, 'duration': 8.342}], 'summary': 'Returning the center coordinates: x + width/2, y', 'duration': 27.02, 'max_score': 7272.878, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs7272878.jpg'}, {'end': 7605.23, 'src': 'heatmap', 'start': 7489.449, 'weight': 0.792, 'content': [{'end': 7492.05, 'text': 'So this is my value of the orange.', 'start': 7489.449, 'duration': 2.601}, {'end': 7506.14, 'text': 'So what I can do is I can use these values in my, what do you call code? So But again, you have to make sure you are writing in the format of BGR.', 'start': 7492.59, 'duration': 13.55}, {'end': 7507.901, 'text': 'So let me write that down here.', 'start': 7506.68, 'duration': 1.221}, {'end': 7511.003, 'text': 'So it is BGR, not RGB.', 'start': 7508.421, 'duration': 2.582}, {'end': 7519.367, 'text': 'So we have to write, so here we will have 51, then 153, and then 255.', 'start': 7511.744, 'duration': 7.623}, {'end': 7523.149, 'text': 'Similarly, we can find for purple and green.', 'start': 7519.367, 'duration': 3.782}, {'end': 7526.21, 'text': 'So for that, for purple, it is 255, 0, and 255.', 'start': 7523.809, 'duration': 2.401}, {'end': 7539.162, 'text': 'And for green, we all know it is BGR, so it should be 0, 255, and 0.', 'start': 7526.21, 'duration': 12.952}, {'end': 7549.05, 'text': 'these are our colors now, and what we can do is we can draw the color of the circle based on these values.', 'start': 7539.162, 'duration': 9.888}, {'end': 7549.831, 'text': 'what happened?', 'start': 7549.05, 'duration': 0.781}, {'end': 7557.737, 'text': 'so what we can say is we can say that we need my color value as the input as well.', 'start': 7549.831, 'duration': 7.906}, {'end': 7563.502, 'text': 'so if we go down when we are sending the values, we need my color values as well.', 'start': 7557.737, 'duration': 5.765}, {'end': 7567.925, 'text': 'so we can say What can we say?', 'start': 7563.502, 'duration': 4.423}, {'end': 7571.009, 'text': 'Okay, we need a counter to actually count how many times.', 'start': 7568.206, 'duration': 2.803}, {'end': 7573.451, 'text': "So we'll put count is equals to zero.", 'start': 7571.389, 'duration': 2.062}, {'end': 7578.156, 'text': 'And every time it counts, we need to know which color are we talking about.', 'start': 7574.452, 'duration': 3.704}, {'end': 7583.181, 'text': 'So we can say here counts plus equals one.', 'start': 7578.617, 'duration': 4.564}, {'end': 7595.699, 'text': 'So instead of our main blue color here, we can say my color values and I need to get the value of my counter index.', 'start': 7584.324, 'duration': 11.375}, {'end': 7601.647, 'text': 'So my count right now, whatever my count is, I need to get that value from counter.', 'start': 7596.24, 'duration': 5.407}, {'end': 7605.23, 'text': 'this what you call list.', 'start': 7602.489, 'duration': 2.741}], 'summary': 'Using bgr format, defining values for orange, purple, and green colors to draw circles based on the values.', 'duration': 115.781, 'max_score': 7489.449, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs7489449.jpg'}, {'end': 7676.881, 'src': 'embed', 'start': 7616.275, 'weight': 3, 'content': [{'end': 7624.018, 'text': 'so this should give us the correct color of our what you call marker.', 'start': 7616.275, 'duration': 7.743}, {'end': 7624.778, 'text': "so let's run that.", 'start': 7624.018, 'duration': 0.76}, {'end': 7630.5, 'text': "So if I have purple, it's giving me the color purple.", 'start': 7627.455, 'duration': 3.045}, {'end': 7633.264, 'text': "If I have orange, it's giving me orange.", 'start': 7631.061, 'duration': 2.203}, {'end': 7635.928, 'text': "It's a little bit hard to see, but you get the gesture.", 'start': 7633.304, 'duration': 2.624}, {'end': 7638.933, 'text': 'And then you have green, so we are getting green.', 'start': 7636.249, 'duration': 2.684}, {'end': 7642.071, 'text': 'So that is good.', 'start': 7641.03, 'duration': 1.041}, {'end': 7646.013, 'text': 'We are getting the correct colors and the correct values.', 'start': 7642.451, 'duration': 3.562}, {'end': 7649.595, 'text': 'Now what we need to do is we need to draw these points.', 'start': 7646.713, 'duration': 2.882}, {'end': 7652.517, 'text': "So in order to draw, it's actually fairly simple.", 'start': 7649.955, 'duration': 2.562}, {'end': 7661.042, 'text': 'We are going to create a list of points, and we are just going to display it every time, and we are going to loop it around.', 'start': 7653.518, 'duration': 7.524}, {'end': 7670.388, 'text': "So at the bottom, let's go at the top first, and we are going to create a list called My Points.", 'start': 7662.763, 'duration': 7.625}, {'end': 7676.881, 'text': 'And inside this list, we are going to have three things.', 'start': 7672.819, 'duration': 4.062}], 'summary': 'Testing shows correct marker colors for purple, orange, and green. now planning to draw points using a list.', 'duration': 60.606, 'max_score': 7616.275, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs7616275.jpg'}, {'end': 7781.279, 'src': 'embed', 'start': 7742.314, 'weight': 5, 'content': [{'end': 7752.699, 'text': 'yeah, we need the points and we will also need the color values, my color values.', 'start': 7742.314, 'duration': 10.385}, {'end': 7765.788, 'text': 'so what we will do is we will say that for each point in my points, what we need to do is we need to iterate and we need to just draw a circle.', 'start': 7752.699, 'duration': 13.089}, {'end': 7769.65, 'text': 'let me just copy it from up here.', 'start': 7765.788, 'duration': 3.862}, {'end': 7781.279, 'text': 'you can copy it, the circle, and we can put it here that what we need to do is we need to draw on im result, our image result,', 'start': 7769.65, 'duration': 11.629}], 'summary': 'Need points and color values to draw circles on image result.', 'duration': 38.965, 'max_score': 7742.314, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs7742314.jpg'}, {'end': 7946.851, 'src': 'embed', 'start': 7919.964, 'weight': 6, 'content': [{'end': 7929.052, 'text': 'So here we need to write return, not in the loop, we need to write here return and then we are going to return our points.', 'start': 7919.964, 'duration': 9.088}, {'end': 7938.267, 'text': 'So every time it adds on to these points, it will send these new points over here.', 'start': 7931.744, 'duration': 6.523}, {'end': 7946.851, 'text': 'Now, once we have our new points, what we can do is we can check if the new points are actually there or not.', 'start': 7938.667, 'duration': 8.184}], 'summary': 'Code should include a return statement, points are added and checked.', 'duration': 26.887, 'max_score': 7919.964, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs7919964.jpg'}], 'start': 7007.88, 'title': 'Implementing color detection and object location with opencv', 'summary': 'Demonstrates the implementation of a generic color detection system, allowing for the addition of multiple colors and the use of contours to locate objects in an image. it also discusses drawing object markers, determining center points, setting colors based on detection, and drawing points on a canvas with rgb values for different colors.', 'chapters': [{'end': 7249.011, 'start': 7007.88, 'title': 'Color detection and object location', 'summary': 'Demonstrates the implementation of a generic color detection system, allowing for the addition of multiple colors and the use of contours to locate objects in an image, while also discussing the debugging process.', 'duration': 241.131, 'highlights': ['The chapter showcases the creation of a generic color detection system, enabling the addition of multiple colors, providing flexibility and scalability for the functionality.', "The implementation involves the use of contours to locate objects in an image, demonstrating the process of finding the object's location through approximating the bounding box.", 'The debugging process is illustrated in the transcript, highlighting the identification and resolution of issues related to the display of masks and the proper function call for image results.']}, {'end': 7646.013, 'start': 7249.091, 'title': 'Drawing object markers with opencv', 'summary': 'Discusses how to draw object markers using opencv, including determining the center point, setting the color based on detection, and using rgb values for different colors.', 'duration': 396.922, 'highlights': ['Determining the center point of the detected object by sending the tip rather than the center, using the formula x + width / 2 for the center point and y for the top point, ensuring to return zero values if the object is not detected, and using these values to draw a circle around the object.', 'Setting the color of the drawn circle based on the detected object by defining color values for orange, green, and purple, obtaining the RGB values for each color, and using the my color values list to determine the color of the marker based on the count of detected objects.']}, {'end': 8008.197, 'start': 7646.713, 'title': 'Drawing points on canvas', 'summary': 'Explains the process of drawing points on a canvas using a list of points and color values, iterating through the points to draw circles of different colors at specified coordinates, and returning the new points after validation.', 'duration': 361.484, 'highlights': ['Creating a list of points with x, y, and color index to draw circles', 'Iterating through points to draw circles of different colors', 'Returning the new points after validation']}], 'duration': 1000.317, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs7007880.jpg', 'highlights': ['The chapter showcases the creation of a generic color detection system, enabling the addition of multiple colors, providing flexibility and scalability for the functionality.', "The implementation involves the use of contours to locate objects in an image, demonstrating the process of finding the object's location through approximating the bounding box.", 'Determining the center point of the detected object by sending the tip rather than the center, using the formula x + width / 2 for the center point and y for the top point, ensuring to return zero values if the object is not detected, and using these values to draw a circle around the object.', 'Setting the color of the drawn circle based on the detected object by defining color values for orange, green, and purple, obtaining the RGB values for each color, and using the my color values list to determine the color of the marker based on the count of detected objects.', 'Creating a list of points with x, y, and color index to draw circles', 'Iterating through points to draw circles of different colors', 'Returning the new points after validation', 'The debugging process is illustrated in the transcript, highlighting the identification and resolution of issues related to the display of masks and the proper function call for image results.']}, {'end': 9105.444, 'segs': [{'end': 8129.421, 'src': 'embed', 'start': 8101.793, 'weight': 0, 'content': [{'end': 8107.574, 'text': 'you can add that and we know already that our blue is basically BGR.', 'start': 8101.793, 'duration': 5.781}, {'end': 8110.735, 'text': 'so it will be 2550 and 0.', 'start': 8107.574, 'duration': 3.161}, {'end': 8117.576, 'text': 'so this will add the blue color and if we run it now and let me try the blue here and there, you go.', 'start': 8110.735, 'duration': 6.841}, {'end': 8120.378, 'text': "so now it's detecting blue as well.", 'start': 8117.576, 'duration': 2.802}, {'end': 8123.579, 'text': 'so this is how simple it is to add more colors.', 'start': 8120.378, 'duration': 3.201}, {'end': 8129.421, 'text': 'so the good thing about this is that it will detect all the colors at the same time as well.', 'start': 8123.579, 'duration': 5.842}], 'summary': 'Adding blue color with bgr code 2550 and 0, successfully detects blue and multiple colors simultaneously.', 'duration': 27.628, 'max_score': 8101.793, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs8101793.jpg'}, {'end': 8409.484, 'src': 'embed', 'start': 8374.53, 'weight': 2, 'content': [{'end': 8386.017, 'text': "we will give the size of the kernel five by five and then the Sigma X, let's say one, and then we will, uh,", 'start': 8374.53, 'duration': 11.487}, {'end': 8390.808, 'text': 'find our edges using our canny edge detector.', 'start': 8387.145, 'duration': 3.663}, {'end': 8405.12, 'text': 'so we will say image canny is equals to cv2 dot canny and our image is blur and then we have the threshold.', 'start': 8390.808, 'duration': 14.312}, {'end': 8409.484, 'text': "so we'll put, um, let's say 200 by 200.", 'start': 8405.12, 'duration': 4.364}], 'summary': 'Using a 5x5 kernel and sigma x of 1, applying canny edge detector on blurred image with 200x200 threshold.', 'duration': 34.954, 'max_score': 8374.53, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs8374530.jpg'}, {'end': 8665.513, 'src': 'embed', 'start': 8627.346, 'weight': 3, 'content': [{'end': 8628.988, 'text': 'then it might not detect properly.', 'start': 8627.346, 'duration': 1.642}, {'end': 8636.733, 'text': "that's why we are adding this here as well.", 'start': 8628.988, 'duration': 7.745}, {'end': 8645.259, 'text': 'so we need to return the threshold and there you go.', 'start': 8636.733, 'duration': 8.526}, {'end': 8650.603, 'text': 'so the boundaries are much thicker and easier to detect what is happening in the image.', 'start': 8645.259, 'duration': 5.344}, {'end': 8656.027, 'text': 'so next we are going to move on to our contours.', 'start': 8650.603, 'duration': 5.424}, {'end': 8659.869, 'text': 'so we need to find the biggest contour in our image.', 'start': 8656.027, 'duration': 3.842}, {'end': 8661.47, 'text': 'so this is what we will do now.', 'start': 8659.869, 'duration': 1.601}, {'end': 8665.513, 'text': 'so in chapter 8, for the contours.', 'start': 8661.47, 'duration': 4.043}], 'summary': 'Adjusting threshold for thicker boundaries; finding biggest contour in chapter 8.', 'duration': 38.167, 'max_score': 8627.346, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs8627346.jpg'}], 'start': 8008.997, 'title': 'Image processing techniques', 'summary': "Covers a color detection code for multiple colors, document image pre-processing including resizing and edge detection, and contour detection with image warping for a bird's eye view.", 'chapters': [{'end': 8201.087, 'start': 8008.997, 'title': 'Color detection code', 'summary': 'Demonstrates a simple and generic code for color detection using webcam, enabling the addition and detection of multiple colors, as seen with purple, orange, green, and blue, providing flexibility and ease of use.', 'duration': 192.09, 'highlights': ['The code demonstrates the simple and generic process of color detection, allowing for the addition of new colors by appending them to the list of colors and their respective color values, as exemplified by the addition and detection of purple, orange, green, and blue, showcasing flexibility and ease of use.', 'It showcases the detection of multiple colors at the same time, providing a comprehensive and efficient color detection process, demonstrated by the simultaneous detection of purple, orange, green, and blue, highlighting the effectiveness of the code.', 'The chapter emphasizes the ease of adding new colors to the code, requiring only the addition of new color values to the list, as evidenced by the straightforward process of adding the color blue and successfully detecting it, showcasing the simplicity and adaptability of the code.', 'It demonstrates the use of webcam code and parameter adjustments to facilitate color detection, providing a foundational understanding of the process and its practical application, reinforcing the learning from previous chapters and showcasing the practical implementation of the code.']}, {'end': 8627.346, 'start': 8201.727, 'title': 'Document image pre-processing', 'summary': 'Discusses the pre-processing of document images, including resizing, converting to grayscale, applying gaussian blur, detecting edges using canny edge detector, and using dilation and erosion functions to adjust edge thickness.', 'duration': 425.619, 'highlights': ['Applying Gaussian blur to the grayscale image to reduce noise and smoothen the image, with a kernel size of 5x5 and a Sigma X value of 1.', 'Detecting edges using the Canny edge detector with a threshold of 200 by 200, which can be adjusted based on the specific requirements.', 'Using dilation and erosion functions to adjust the thickness of the edges, enhancing the quality of the pre-processed image.', 'Resizing the original image to a predefined width and height of 640 and 480 respectively, ensuring consistency throughout the process.']}, {'end': 9105.444, 'start': 8627.346, 'title': 'Contour detection and image warping', 'summary': "Covers contour detection using the getcontours function and identifying the biggest contour based on area, with a threshold of 5,000. it also discusses the process of warping the image to obtain a bird's eye view using the corner points of the biggest contour.", 'duration': 478.098, 'highlights': ['The chapter discusses the process of identifying the biggest contour in the image by using the getContours function and setting a threshold of 5,000 for the area.', "It explains the iterative process of looping through contours to find the biggest one and replacing the current value with the new one if it's bigger, ultimately providing the biggest contour and its corresponding corner points.", "The transcript details the procedure for warping the image to obtain a bird's eye view by utilizing the corner points of the biggest contour, demonstrating the practical implementation of the concepts discussed."]}], 'duration': 1096.447, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs8008997.jpg', 'highlights': ['The code demonstrates the simple and generic process of color detection, allowing for the addition of new colors by appending them to the list of colors and their respective color values, as exemplified by the addition and detection of purple, orange, green, and blue, showcasing flexibility and ease of use.', 'It showcases the detection of multiple colors at the same time, providing a comprehensive and efficient color detection process, demonstrated by the simultaneous detection of purple, orange, green, and blue, highlighting the effectiveness of the code.', 'Applying Gaussian blur to the grayscale image to reduce noise and smoothen the image, with a kernel size of 5x5 and a Sigma X value of 1.', 'The chapter discusses the process of identifying the biggest contour in the image by using the getContours function and setting a threshold of 5,000 for the area.']}, {'end': 9994.313, 'segs': [{'end': 9148.924, 'src': 'embed', 'start': 9105.444, 'weight': 2, 'content': [{'end': 9116.648, 'text': 'and the last one we can do is we can print out the biggest one before it sends.', 'start': 9105.444, 'duration': 11.204}, {'end': 9125.311, 'text': 'so we can say here, biggest, and there you go.', 'start': 9116.648, 'duration': 8.663}, {'end': 9137.261, 'text': "so if we look at it, let me increase that size, let's make it 20..", 'start': 9125.311, 'duration': 11.95}, {'end': 9137.961, 'text': 'so there you go.', 'start': 9137.261, 'duration': 0.7}, {'end': 9141.482, 'text': 'so we are getting the correct points of our biggest contour.', 'start': 9137.961, 'duration': 3.521}, {'end': 9144.563, 'text': 'so the next part will be to warp.', 'start': 9141.482, 'duration': 3.081}, {'end': 9147.903, 'text': 'so now we are going to warp.', 'start': 9144.563, 'duration': 3.34}, {'end': 9148.924, 'text': 'where is that function?', 'start': 9147.903, 'duration': 1.021}], 'summary': 'Printing the biggest contour before sending, increasing size to 20.', 'duration': 43.48, 'max_score': 9105.444, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs9105444.jpg'}, {'end': 9246.357, 'src': 'embed', 'start': 9175.799, 'weight': 0, 'content': [{'end': 9182.326, 'text': 'So we need to find out these points one, and then these points two, and then we create the metrics.', 'start': 9175.799, 'duration': 6.527}, {'end': 9185.449, 'text': 'And based on that, we have the width and the height.', 'start': 9182.566, 'duration': 2.883}, {'end': 9190.193, 'text': 'So this width and height are basically the width and height of our image.', 'start': 9185.769, 'duration': 4.424}, {'end': 9197.621, 'text': 'So we will say width image and height image again, width image.', 'start': 9190.253, 'duration': 7.368}, {'end': 9226.565, 'text': 'and height image and then width image and then height image we can remove the pass So the next step would be to put our points here.', 'start': 9203.36, 'duration': 23.205}, {'end': 9236.088, 'text': 'So we are getting our biggest contour and all we need to do is we need to input the biggest contours over here.', 'start': 9227.325, 'duration': 8.763}, {'end': 9237.669, 'text': 'So there are already four points.', 'start': 9236.148, 'duration': 1.521}, {'end': 9242.531, 'text': 'So that way we can easily put it directly over here.', 'start': 9238.189, 'duration': 4.342}, {'end': 9246.357, 'text': 'Now, the next thing is fine over here.', 'start': 9243.396, 'duration': 2.961}], 'summary': 'Identifying points, creating metrics, and inputting contours for image processing.', 'duration': 70.558, 'max_score': 9175.799, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs9175799.jpg'}, {'end': 9363.742, 'src': 'embed', 'start': 9339.008, 'weight': 3, 'content': [{'end': 9348.478, 'text': 'So what we need to make sure of is that when we are sending the points to warp, all of our points are aligned like this.', 'start': 9339.008, 'duration': 9.47}, {'end': 9355.985, 'text': 'So the smallest one should be the first one, then the width and height, the width and zero, then the zero and height,', 'start': 9348.938, 'duration': 7.047}, {'end': 9357.227, 'text': 'and then the width and the height.', 'start': 9355.985, 'duration': 1.242}, {'end': 9361.791, 'text': 'So how can we make sure of that? Because our values can vary.', 'start': 9357.967, 'duration': 3.824}, {'end': 9363.742, 'text': 'it can keep changing.', 'start': 9362.762, 'duration': 0.98}], 'summary': 'Align all points in the specified order to ensure consistency in variable values.', 'duration': 24.734, 'max_score': 9339.008, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs9339008.jpg'}, {'end': 9442.486, 'src': 'embed', 'start': 9399.434, 'weight': 4, 'content': [{'end': 9409.937, 'text': 'we need some points inside and then we are going to apply some methodology inside here that will allow us to create or reorder our points.', 'start': 9399.434, 'duration': 10.503}, {'end': 9416.699, 'text': 'So if we have, for example, let me make it a little bit simpler.', 'start': 9410.657, 'duration': 6.042}, {'end': 9442.486, 'text': 'If you run this now, if we add these values up, what we can do is we can add these values up and we can find the smallest and the biggest point.', 'start': 9417.279, 'duration': 25.207}], 'summary': 'Applying methodology to create or reorder points, finding smallest and biggest point.', 'duration': 43.052, 'max_score': 9399.434, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs9399434.jpg'}], 'start': 9105.444, 'title': 'Image warping and correction', 'summary': 'Covers the process of finding the biggest contour, obtaining points for warping, and applying the warping function to the image, along with the importance of properly aligning points before warping and a methodology for reordering points to ensure the correct perspective.', 'chapters': [{'end': 9291.662, 'start': 9105.444, 'title': 'Image warping process', 'summary': 'Covers the process of finding the biggest contour, obtaining points for warping, and applying the warping function to the image, demonstrating the use of specific points and metrics in the process.', 'duration': 186.218, 'highlights': ['The process involves finding the biggest contour in the image, with the ability to print its points and adjust its size.', 'The next step is to define two sets of points, create metrics, and generate the warped perspective, while also determining the width and height of the image.', 'The image warping process includes inputting the obtained points of the biggest contour and applying the warping function to the image, resulting in the output image being displayed.']}, {'end': 9994.313, 'start': 9292.584, 'title': 'Correcting warping in image processing', 'summary': 'Discusses the importance of properly aligning points before warping, presenting a methodology for reordering points to ensure the correct perspective, with a demonstration of adding, finding the smallest and largest points, and rearranging the points based on their differences.', 'duration': 701.729, 'highlights': ['The importance of properly aligning points before warping is emphasized, with a demonstration of adding, finding the smallest and largest points, and rearranging the points based on their differences.', 'A methodology for reordering points to ensure the correct perspective is presented, involving adding, finding the smallest and largest points, and rearranging the points based on their differences.', 'Demonstration of adding, finding the smallest and largest points, and rearranging the points based on their differences showcases the methodology for reordering points to ensure the correct perspective.', "It is mentioned that the smallest point will be '0,0' and the biggest point will be 'width,height', highlighting the significance of correctly ordering the points for successful warping."]}], 'duration': 888.869, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs9105444.jpg', 'highlights': ['The process involves finding the biggest contour in the image, with the ability to print its points and adjust its size.', 'The next step is to define two sets of points, create metrics, and generate the warped perspective, while also determining the width and height of the image.', 'The image warping process includes inputting the obtained points of the biggest contour and applying the warping function to the image, resulting in the output image being displayed.', 'The importance of properly aligning points before warping is emphasized, with a demonstration of adding, finding the smallest and largest points, and rearranging the points based on their differences.', 'A methodology for reordering points to ensure the correct perspective is presented, involving adding, finding the smallest and largest points, and rearranging the points based on their differences.', 'Demonstration of adding, finding the smallest and largest points, and rearranging the points based on their differences showcases the methodology for reordering points to ensure the correct perspective.', "It is mentioned that the smallest point will be '0,0' and the biggest point will be 'width,height', highlighting the significance of correctly ordering the points for successful warping."]}, {'end': 11328.691, 'segs': [{'end': 10090.503, 'src': 'embed', 'start': 10064.493, 'weight': 1, 'content': [{'end': 10073.078, 'text': 'so if you look at the resources folder, we have a paper image and this image is really high resolution.', 'start': 10064.493, 'duration': 8.585}, {'end': 10076.199, 'text': 'it is 4000 by 3000.', 'start': 10073.078, 'duration': 3.121}, {'end': 10083.601, 'text': 'so if you apply the same method on this one, it will give you a really good scanned image at the end.', 'start': 10076.199, 'duration': 7.402}, {'end': 10090.503, 'text': "but because we are getting it from a live webcam and it is only 640 by 480, that's why the resolution is not that good.", 'start': 10083.601, 'duration': 6.902}], 'summary': 'High-resolution paper image is 4000x3000, while webcam image is only 640x480.', 'duration': 26.01, 'max_score': 10064.493, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs10064493.jpg'}, {'end': 10245.267, 'src': 'embed', 'start': 10215.638, 'weight': 0, 'content': [{'end': 10229.302, 'text': 'So cropped is equals to cv2.resize and then our image crop and then our width of our image and then height of our image.', 'start': 10215.638, 'duration': 13.664}, {'end': 10232.583, 'text': 'And then we can output the cropped image instead.', 'start': 10230.382, 'duration': 2.201}, {'end': 10238.325, 'text': 'So if we run that, now we are getting a much cleaner image.', 'start': 10233.824, 'duration': 4.501}, {'end': 10245.267, 'text': 'We have removed 20 pixels from each side and now it looks more like a scanned paper.', 'start': 10239.225, 'duration': 6.042}], 'summary': 'Using cv2.resize to crop image, removing 20 pixels from each side for cleaner scanned paper look.', 'duration': 29.629, 'max_score': 10215.638, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs10215638.jpg'}, {'end': 10810.696, 'src': 'embed', 'start': 10722.035, 'weight': 2, 'content': [{'end': 10725.056, 'text': 'So here we can define our parameters.', 'start': 10722.035, 'duration': 3.021}, {'end': 10738.502, 'text': 'And then we are converting our image to gray.', 'start': 10734.48, 'duration': 4.022}, {'end': 10739.522, 'text': 'That is fine.', 'start': 10738.702, 'duration': 0.82}, {'end': 10744.765, 'text': 'And then we are detecting the faces.', 'start': 10740.703, 'duration': 4.062}, {'end': 10756.556, 'text': 'So in this case we can say that number plates, and we can copy this and paste it here.', 'start': 10745.285, 'duration': 11.271}, {'end': 10769.785, 'text': 'so instead of the face cascade we should say plate cascade, for example, or number plate cascade.', 'start': 10756.556, 'duration': 13.229}, {'end': 10776.79, 'text': 'so here we can say that, and let me do that again.', 'start': 10769.785, 'duration': 7.005}, {'end': 10783.456, 'text': "Okay, and it's drawing the rectangle around it.", 'start': 10779.994, 'duration': 3.462}, {'end': 10791.761, 'text': 'Now what we need to do is, once we detect our object, we need to first create a filter.', 'start': 10784.176, 'duration': 7.585}, {'end': 10796.103, 'text': 'So we are only taking objects that are bigger than a certain area.', 'start': 10791.901, 'duration': 4.202}, {'end': 10804.908, 'text': 'And then we need to define a way in which we can save our images once we are getting our number plate.', 'start': 10797.804, 'duration': 7.104}, {'end': 10807.854, 'text': "so let's do that.", 'start': 10806.033, 'duration': 1.821}, {'end': 10810.696, 'text': 'so the first thing, we will add our filter.', 'start': 10807.854, 'duration': 2.842}], 'summary': 'Image processing: detecting and filtering number plates with rectangles.', 'duration': 88.661, 'max_score': 10722.035, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs10722035.jpg'}, {'end': 11328.691, 'src': 'embed', 'start': 11301.653, 'weight': 3, 'content': [{'end': 11305.938, 'text': 'So if I press S, it will say scan saved.', 'start': 11301.653, 'duration': 4.285}, {'end': 11310.782, 'text': 'And then if I go to the next image, I can save again.', 'start': 11306.96, 'duration': 3.822}, {'end': 11315.084, 'text': 'I can go to the next image and I can save.', 'start': 11310.802, 'duration': 4.282}, {'end': 11318.286, 'text': 'So all three of these number plates should have been saved.', 'start': 11315.704, 'duration': 2.582}, {'end': 11323.748, 'text': 'If we go to our scanned folder here, we can double click it and we can see we have three images.', 'start': 11318.766, 'duration': 4.982}, {'end': 11325.069, 'text': 'This is the first one.', 'start': 11324.229, 'duration': 0.84}, {'end': 11326.61, 'text': 'This is the second one.', 'start': 11325.309, 'duration': 1.301}, {'end': 11328.691, 'text': 'And this is the third one.', 'start': 11327.21, 'duration': 1.481}], 'summary': 'Scanned and saved three number plate images successfully.', 'duration': 27.038, 'max_score': 11301.653, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs11301653.jpg'}], 'start': 9994.313, 'title': 'Image processing techniques', 'summary': 'Demonstrates image cropping and resolution adjustment, image stacking workflow, real-time number plate detection from car images, and opencv number plate detection, with specific techniques such as reducing image width, stacking images, defining parameters, and adjusting cascade method to detect russian number plates, resulting in cleaner images, effective workflow, and successful number plate detection with a minimum area set at 500.', 'chapters': [{'end': 10245.267, 'start': 9994.313, 'title': 'Image cropping and resolution', 'summary': 'Demonstrates the process of image cropping and resolution adjustment, showing how to reduce the width of an image, improve resolution, and remove unwanted lines by cropping, resulting in a cleaner scanned paper image.', 'duration': 250.954, 'highlights': ['The original image is 640 by 480, resulting in a limited resolution, while a higher resolution image of 4000 by 3000 in the resources folder can produce better results when applying the same method.', 'Demonstrates the process of removing 20 pixels from each side of the image and then resizing it to achieve a cleaner scanned paper image, showcasing the practical application of image manipulation techniques.', 'Explains the need for reducing the width of the image from 640 to 360 and adjusting the camera settings to achieve the desired dimensions, highlighting the practical challenges and solutions in image processing.', 'Emphasizes the importance of adjusting image dimensions and resolution to improve the quality of the scanned image, providing insights into the impact of image properties on the final output.']}, {'end': 10589.594, 'start': 10247.421, 'title': 'Image stacking workflow', 'summary': 'Discusses the workflow for stacking images, including the process of selecting and stacking specific images, and addressing potential errors when defining contours and performing image warping.', 'duration': 342.173, 'highlights': ['The process of selecting and stacking specific images is discussed, involving the declaration of an image array and the stacking of images using a predefined function.', 'Addressing potential errors when defining contours and performing image warping is detailed, including conditional statements to handle cases where the biggest contour is not found.']}, {'end': 10847.051, 'start': 10613.194, 'title': 'Webcam number plate detection', 'summary': 'Covers real-time detection of number plates from car images using the cascade method, including the process of defining parameters, detecting number plates, and applying filters based on area size, with a minimum area set at 500.', 'duration': 233.857, 'highlights': ['Real-time detection of number plates using the cascade method, building on the knowledge from the face detection chapter.', 'Copying and applying code from chapter one for webcam setup and from chapter nine for the cascade method.', 'Defining parameters, converting images to gray, and detecting number plates using the plate cascade.', 'Applying a filter to only consider objects larger than a specified area, with a minimum area set at 500.']}, {'end': 11328.691, 'start': 10847.051, 'title': 'Opencv number plate detection', 'summary': 'Covers the process of opencv number plate detection, including labeling, extracting the region of interest, changing the cascade to detect russian number plates, and saving the scanned images with proper feedback, resulting in successful saving of multiple number plate images in a scan folder.', 'duration': 481.64, 'highlights': ['The process of saving the scanned images with proper feedback, resulting in successful saving of multiple number plate images in a scan folder.', 'Extracting the region of interest (ROI) by using the given rectangle coordinates to obtain the original number plate image.', 'Changing the cascade to detect Russian number plates and successfully obtaining the number plate on the original image.', 'Labeling the number plate on the original image and adjusting the font, scale, color, and thickness for clear visibility.', 'Writing code to display the number plate on the original image and extracting the region of interest (ROI) for further processing.']}], 'duration': 1334.378, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/WQeoO7MI0Bs/pics/WQeoO7MI0Bs9994313.jpg', 'highlights': ['Demonstrates the process of removing 20 pixels from each side of the image and then resizing it to achieve a cleaner scanned paper image, showcasing the practical application of image manipulation techniques.', 'The original image is 640 by 480, resulting in a limited resolution, while a higher resolution image of 4000 by 3000 in the resources folder can produce better results when applying the same method.', 'Applying a filter to only consider objects larger than a specified area, with a minimum area set at 500.', 'The process of saving the scanned images with proper feedback, resulting in successful saving of multiple number plate images in a scan folder.', 'Defining parameters, converting images to gray, and detecting number plates using the plate cascade.']}], 'highlights': ['The Viola-Jones method allows real-time object detection and is used for detecting faces using pre-trained cascade files, provided by OpenCV.', 'The process involves finding the biggest contour in the image, with the ability to print its points and adjust its size.', 'The chapter covers practical projects such as detecting colors, shapes, humans, and vehicle number plates, providing a comprehensive understanding of OpenCV in Python.', 'The process begins with installing Python 3.7.6 and setting up PyCharm as the IDE for editing code.', 'The chapter provides a structured course, starting with image introduction, installations, reading images, videos, and webcams, along with basic OpenCV functions, and gradually progressing to advanced topics such as perspective, color detection, contour detection, and face detection.']}