title
LEARN OPENCV C++ in 4 HOURS | Including 3x Projects | Computer Vision
description
This is an OpenCV C++ course that will teach you everything you need to know to get started. This course is based on my previous OpenCV Python course that now has more than a million views and 98.8% positive feedback. Like before we are going to learn the basics that include Processing images videos webcams and finding shapes colors, humans, and vehicle number plates. We will also have 3 example projects that will cover all the basics we have learned. C++ is an excellent language for implementation and creating real-world products. so having this advanced computer vision skill on your CV will really make it stand out from the competition. And Don't worry if you are a beginner we will go step by step right from the installation up to creating exciting projects, And our main focus will be practical implementation so we will skip all the boring theory stuff.
ππ My Urdu/Hindi AI YouTube Channel ππ
https://www.youtube.com/@murtazahassan01
Course Link - Code + Files:
https://www.computervision.zone/courses/opencv-cv/
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
1:24 Introduction to Images
3:48 Installation - Windows
11:51 Installation - Mac
22:05 Chapter 1 - Read Images Videos and Webcams
35:23 Chapter 2 - Basic Functions
50:21 Chapter 3 - Resize and Crop
58:31 Chapter 4 - Drawing Shapes and Text
01:11:07 Chapter 5 - Warp Perspective
01:22:40 Chapter 6 - Color Detection
01:37:17 Chapter 7 - Shapes/Contour Detection
02:14:52 Chapter8 - Face Detection
02:22:21 Project 1 - Virtual Painter
03:02:52 Project 2 - Document Scanner
03:46:14 Project 3 - License Plate Detector
detail
{'title': 'LEARN OPENCV C++ in 4 HOURS | Including 3x Projects | Computer Vision', 'heatmap': [{'end': 3274.357, 'start': 3128.621, 'weight': 0.765}, {'end': 6407.048, 'start': 6258.345, 'weight': 1}], 'summary': 'Learn opencv c++ in 4 hours with 3 projects, covering image basics, setting up opencv on visual studio and xcode, importing media, image processing, contour detection, shape detection, color detection, virtual painter, and document scanner creation.', 'chapters': [{'end': 217.899, 'segs': [{'end': 122.04, 'src': 'embed', 'start': 0.669, 'weight': 0, 'content': [{'end': 2.39, 'text': 'Hey everyone, welcome to my channel.', 'start': 0.669, 'duration': 1.721}, {'end': 8.734, 'text': 'This is OpenCV C++ course that will teach you everything you need to know to get started.', 'start': 2.77, 'duration': 5.964}, {'end': 17.438, 'text': 'This course is based on my previous OpenCV course with Python that now has more than a million views and 98.8% positive feedback.', 'start': 9.374, 'duration': 8.064}, {'end': 29.947, 'text': 'Like before, we are going to learn the basics that include processing images, videos, webcams and even finding shapes, colors,', 'start': 20.88, 'duration': 9.067}, {'end': 31.749, 'text': 'humans and vehicle number plates.', 'start': 29.947, 'duration': 1.802}, {'end': 37.493, 'text': 'We will also have three example projects that will cover all the basics that we have learned.', 'start': 32.529, 'duration': 4.964}, {'end': 43.798, 'text': 'C++ is an excellent language for implementation and creating real-world products.', 'start': 38.634, 'duration': 5.164}, {'end': 50.483, 'text': 'So having this advanced computer skill set on your CV will really make it stand out from the competition.', 'start': 44.378, 'duration': 6.105}, {'end': 58.328, 'text': "And don't worry if you are a beginner we will go step by step right from installation up to creating exciting projects.", 'start': 51.443, 'duration': 6.885}, {'end': 64.513, 'text': 'And our main focus will be practical implementation so we will skip all the boring theory stuff.', 'start': 59.249, 'duration': 5.264}, {'end': 71.728, 'text': "I upload videos on a weekly basis, so don't forget to subscribe and hit that notification bell to keep updated.", 'start': 65.563, 'duration': 6.165}, {'end': 73.429, 'text': "So, let's get started.", 'start': 72.208, 'duration': 1.221}, {'end': 92.591, 'text': "So let's start with introduction to images.", 'start': 90.41, 'duration': 2.181}, {'end': 97.952, 'text': "So what are images made of? Let's say I wanted to display the number three.", 'start': 93.091, 'duration': 4.861}, {'end': 103.534, 'text': 'I will take an array of boxes where each box could be filled or empty.', 'start': 98.653, 'duration': 4.881}, {'end': 108.796, 'text': 'So to write the number three, we would color a few boxes to create that shape.', 'start': 104.274, 'duration': 4.522}, {'end': 112.837, 'text': 'Now, some boxes are white in color, whereas some are black.', 'start': 109.496, 'duration': 3.341}, {'end': 119.219, 'text': 'we can denote all the black boxes as 0 and all the white boxes as 1.', 'start': 113.817, 'duration': 5.402}, {'end': 122.04, 'text': 'In this example, we have 10 by 10 boxes.', 'start': 119.219, 'duration': 2.821}], 'summary': 'Opencv c++ course teaches image processing, with 98.8% positive feedback and practical projects, reaching over a million views.', 'duration': 121.371, 'max_score': 0.669, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk669.jpg'}], 'start': 0.669, 'title': 'Opencv c++ course and image basics', 'summary': 'Introduces an opencv c++ course, emphasizing the value of advanced computer skills in c++ for real-world product development, and introduces the concept of images and pixels, with examples of binary and greyscale images and resolutions such as vga, hd, full hd, and 4k.', 'chapters': [{'end': 50.483, 'start': 0.669, 'title': 'Opencv c++ course', 'summary': 'Introduces an opencv c++ course, built upon a highly successful python course with over a million views and 98.8% positive feedback, covering image and video processing, shape and color recognition, human and vehicle number plate detection, and offering three example projects, emphasizing the value of advanced computer skills in c++ for real-world product development.', 'duration': 49.814, 'highlights': ['The course is a follow-up to a highly successful OpenCV course with Python that has over a million views and 98.8% positive feedback.', 'It will cover processing images, videos, webcams, finding shapes, colors, humans, and vehicle number plates.', 'The course will include three example projects to reinforce the basics learned.', 'Emphasizes the value of advanced computer skills in C++ for real-world product development and CV enhancement.']}, {'end': 217.899, 'start': 51.443, 'title': 'Introduction to images and pixels', 'summary': 'Introduces the concept of images and pixels, explaining how images are made of pixels, with examples of binary and greyscale images and resolutions such as vga, hd, full hd, and 4k.', 'duration': 166.456, 'highlights': ['The chapter emphasizes practical implementation and skips theoretical content. The course focuses on practical implementation and skips theoretical content to engage beginners.', 'The chapter explains the concept of images as arrays of boxes, where each box represents a pixel, and the use of black and white colors to denote 0 and 1. The concept of images as arrays of boxes, with black and white colors denoted as 0 and 1, is explained.', 'The chapter elaborates on the resolutions of different image qualities, such as VGA, HD, Full HD, and 4K, in terms of the number of pixels. Explanation of various image resolutions like VGA, HD, Full HD, and 4K in terms of pixel numbers is provided.']}], 'duration': 217.23, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk669.jpg', 'highlights': ['The course will cover processing images, videos, webcams, finding shapes, colors, humans, and vehicle number plates.', 'The course includes three example projects to reinforce the basics learned.', 'The chapter emphasizes practical implementation and skips theoretical content to engage beginners.', 'The concept of images as arrays of boxes, with black and white colors denoted as 0 and 1, is explained.', 'Explanation of various image resolutions like VGA, HD, Full HD, and 4K in terms of pixel numbers is provided.', 'Emphasizes the value of advanced computer skills in C++ for real-world product development and CV enhancement.', 'The course is a follow-up to a highly successful OpenCV course with Python that has over a million views and 98.8% positive feedback.']}, {'end': 1254.211, 'segs': [{'end': 720.929, 'src': 'embed', 'start': 683.52, 'weight': 0, 'content': [{'end': 693.546, 'text': "now, if you don't see the files here, you can click on this button show all files and then it will show you resources and the test.cpp.", 'start': 683.52, 'duration': 10.026}, {'end': 701.33, 'text': "so let's run this and there you go.", 'start': 693.546, 'duration': 7.784}, {'end': 710.256, 'text': 'so now you can see we have successfully imported our image and we have successfully imported the opencv library.', 'start': 701.33, 'duration': 8.926}, {'end': 720.929, 'text': 'Now for Mac, we are going to use Xcode to write all of our code.', 'start': 717.185, 'duration': 3.744}], 'summary': 'Successfully imported image and opencv library, using xcode for mac', 'duration': 37.409, 'max_score': 683.52, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk683520.jpg'}, {'end': 849.102, 'src': 'embed', 'start': 757.776, 'weight': 2, 'content': [{'end': 762.078, 'text': 'So here you will copy this link and you will go to your terminal.', 'start': 757.776, 'duration': 4.302}, {'end': 766.355, 'text': 'And you will paste it here.', 'start': 765.134, 'duration': 1.221}, {'end': 773.178, 'text': 'Now I have already done this, so I will not repeat.', 'start': 770.496, 'duration': 2.682}, {'end': 778.78, 'text': 'Once this is done, you will go to step two, which is to install OpenCV.', 'start': 774.518, 'duration': 4.262}, {'end': 782.182, 'text': 'So you will write brew install OpenCV.', 'start': 779.52, 'duration': 2.662}, {'end': 792.226, 'text': 'Again, I have done this already, so I will not run it again.', 'start': 789.225, 'duration': 3.001}, {'end': 797.78, 'text': 'Then you are going to create a new Xcode project.', 'start': 794.938, 'duration': 2.842}, {'end': 799.561, 'text': "So let's go to Xcode.", 'start': 798.12, 'duration': 1.441}, {'end': 804.604, 'text': 'Here we will create a new Xcode project.', 'start': 802.463, 'duration': 2.141}, {'end': 811.168, 'text': 'We will choose Mac OS and then command line tool.', 'start': 807.606, 'duration': 3.562}, {'end': 815.471, 'text': 'And here we are going to use C++.', 'start': 813.089, 'duration': 2.382}, {'end': 818.833, 'text': 'Here we can write the name.', 'start': 817.332, 'duration': 1.501}, {'end': 838.699, 'text': 'so once that is done now, we will add our dynamic libraries.', 'start': 832.697, 'duration': 6.002}, {'end': 844.401, 'text': 'now, to add this, we are going to go back.', 'start': 838.699, 'duration': 5.702}, {'end': 849.102, 'text': 'we are going to right click here and we will click on add files.', 'start': 844.401, 'duration': 4.701}], 'summary': 'Instructions for setting up opencv in xcode, including commands and steps for installation and project creation.', 'duration': 91.326, 'max_score': 757.776, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk757776.jpg'}], 'start': 218.64, 'title': 'Setting up opencv on visual studio and xcode', 'summary': 'Provides a detailed guide for setting up opencv in visual studio, covering steps such as downloading, configuring, testing, and also explains the process of setting up opencv on mac using xcode, including installation, project creation, and resource access.', 'chapters': [{'end': 683.52, 'start': 218.64, 'title': 'Setting up opencv in visual studio', 'summary': 'Outlines the steps to set up opencv in visual studio, including downloading opencv, configuring environment variables, creating a new visual studio c++ project, setting platform target to x64, adding directories and library directories, and testing the code with sample image files.', 'duration': 464.88, 'highlights': ['The chapter outlines the steps to set up OpenCV in Visual Studio, including downloading OpenCV, configuring environment variables, creating a new Visual Studio C++ project, setting platform target to x64, adding directories and library directories, and testing the code with sample image files.', 'The colored VGA image is 640x480x3.', 'The process involves downloading OpenCV, adding environment variable paths, and setting platform target to x64 in Visual Studio C++ project.', 'The chapter provides detailed guidance on adding directories and library directories in Visual Studio for OpenCV setup.', 'The testing process involves creating a test file, pasting testing code, and downloading resources folder for sample image files.']}, {'end': 931.964, 'start': 683.52, 'title': 'Setting up opencv on mac using xcode', 'summary': 'Explains the process of setting up opencv on mac using xcode, including installing xcode, homebrew, and opencv, creating a new xcode project, and adding dynamic libraries, with a demonstration of the step-by-step process.', 'duration': 248.444, 'highlights': ['Setting up OpenCV on Mac using Xcode includes installing Xcode, Homebrew, and OpenCV, creating a new Xcode project, and adding dynamic libraries.', 'The step-by-step process involves installing Homebrew, then OpenCV, and creating a new Xcode project, followed by adding dynamic libraries.', 'Adding dynamic libraries in Xcode involves navigating to the OpenCV folder, selecting all dynamic libraries, and adding them to the project.']}, {'end': 1254.211, 'start': 931.964, 'title': 'Opencv setup and resource access', 'summary': 'Covers setting up the header search path, adding resources to the xcode project, and enabling camera access, allowing successful import of opencv and resource access.', 'duration': 322.247, 'highlights': ["We search for the header search path and add the link 'user/local/seller/OpenCV', ensuring it is recursive.", 'After downloading and extracting the resources folder, it is dragged into the Xcode project for access.', "A new property list file is created to enable camera access by adding the 'ns camera usage description' item with the appropriate string value."]}], 'duration': 1035.571, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk218640.jpg', 'highlights': ['The chapter outlines the steps to set up OpenCV in Visual Studio, including downloading OpenCV, configuring environment variables, creating a new Visual Studio C++ project, setting platform target to x64, adding directories and library directories, and testing the code with sample image files.', 'Setting up OpenCV on Mac using Xcode includes installing Xcode, Homebrew, and OpenCV, creating a new Xcode project, and adding dynamic libraries.', 'The testing process involves creating a test file, pasting testing code, and downloading resources folder for sample image files.', 'The step-by-step process involves installing Homebrew, then OpenCV, and creating a new Xcode project, followed by adding dynamic libraries.', 'The chapter provides detailed guidance on adding directories and library directories in Visual Studio for OpenCV setup.', 'Adding dynamic libraries in Xcode involves navigating to the OpenCV folder, selecting all dynamic libraries, and adding them to the project.']}, {'end': 2202.983, 'segs': [{'end': 1586.865, 'src': 'embed', 'start': 1478.426, 'weight': 0, 'content': [{'end': 1482.888, 'text': 'Now, the same thing we have to do with OpenCV functions as well.', 'start': 1478.426, 'duration': 4.462}, {'end': 1488.765, 'text': "So for example, if I'm using IamRead, to read images, I cannot directly use it.", 'start': 1483.268, 'duration': 5.497}, {'end': 1492.328, 'text': 'I have to write CV and then I have to write two columns.', 'start': 1488.905, 'duration': 3.423}, {'end': 1495.431, 'text': 'So then it will recognize this function.', 'start': 1493.229, 'duration': 2.202}, {'end': 1512.667, 'text': 'So to avoid these two things, what we can do is we can write, we can write using name space CV, and we can write using name space standard.', 'start': 1496.192, 'duration': 16.475}, {'end': 1522.697, 'text': 'So if we just remove these two now, then it should work without any issues.', 'start': 1515.231, 'duration': 7.466}, {'end': 1523.858, 'text': 'There you go.', 'start': 1523.458, 'duration': 0.4}, {'end': 1529.623, 'text': 'So as I was saying, we are going to first define our path.', 'start': 1524.659, 'duration': 4.964}, {'end': 1536.149, 'text': 'So we will write string path is equals to, and now we need to import our image.', 'start': 1529.663, 'duration': 6.486}, {'end': 1545.262, 'text': "So actually, let's write down here that this parts is for images.", 'start': 1537.35, 'duration': 7.912}, {'end': 1554.367, 'text': "so let's write importing images like that, okay.", 'start': 1545.262, 'duration': 9.105}, {'end': 1558.089, 'text': 'so here we are going to define our path.', 'start': 1554.367, 'duration': 3.722}, {'end': 1563.553, 'text': 'now to import the image, we will first load it into our project.', 'start': 1558.089, 'duration': 5.464}, {'end': 1568.716, 'text': 'so we are going to right click on our project name and we will open up the folder.', 'start': 1563.553, 'duration': 5.163}, {'end': 1574.78, 'text': 'And once that opens up, we are going to paste our resources folder.', 'start': 1569.958, 'duration': 4.822}, {'end': 1578.422, 'text': 'Now this folder is available on my website.', 'start': 1575.72, 'duration': 2.702}, {'end': 1579.802, 'text': 'You can download it from there.', 'start': 1578.482, 'duration': 1.32}, {'end': 1586.865, 'text': 'So it will have all the images that are required or all the files that are required for this course.', 'start': 1580.282, 'duration': 6.583}], 'summary': 'Using opencv functions, namespaces to import images and resources for the course.', 'duration': 108.439, 'max_score': 1478.426, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk1478426.jpg'}, {'end': 1972.885, 'src': 'embed', 'start': 1945.572, 'weight': 4, 'content': [{'end': 1952.837, 'text': "but this time we don't want to pause for infinity, we want to give it a delay, but for a few milliseconds.", 'start': 1945.572, 'duration': 7.265}, {'end': 1959.621, 'text': "so in this case we will go with one millisecond and let's see how that works out.", 'start': 1952.837, 'duration': 6.784}, {'end': 1966.723, 'text': "so let's run that and there we have it.", 'start': 1959.621, 'duration': 7.102}, {'end': 1972.885, 'text': 'so now you can see this is one of my project videos and you can see it went really fast.', 'start': 1966.723, 'duration': 6.162}], 'summary': 'Testing delay of one millisecond for project video, resulting in fast playback.', 'duration': 27.313, 'max_score': 1945.572, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk1945572.jpg'}], 'start': 1256.556, 'title': 'Importing media in opencv and python', 'summary': "Covers importing images, videos, and webcams in opencv using c++ and python, including necessary header files, setting up the project, and displaying images, with a focus on 'wait key' and 'video capture' object, giving a delay of one millisecond, and changing the camera id for webcams.", 'chapters': [{'end': 1686.868, 'start': 1256.556, 'title': 'Importing images and webcams in opencv', 'summary': 'Covers importing images, videos, and webcams in opencv, including importing images, including necessary header files, and using the webcam to display images, with a focus on setting up the project and including the required header files.', 'duration': 430.312, 'highlights': ['The chapter covers how to import images, videos, and webcams in OpenCV, emphasizing the process of importing images and including the necessary header files for OpenCV.', 'The tutorial provides step-by-step instructions on setting up the project, including creating a new item, and adding the required header files for OpenCV.', 'The detailed instructions include the process of importing images into the project, using the imread function and the mat data type introduced by OpenCV to handle images.']}, {'end': 1945.572, 'start': 1687.008, 'title': 'Importing images and videos in python', 'summary': "Covers the process of importing an image and video in python using opencv, including the steps for displaying the image and iterating through the frames of a video, emphasizing the use of 'wait key' and 'video capture' object.", 'duration': 258.564, 'highlights': ['The chapter covers the process of importing an image and video in Python using OpenCV It includes the steps for displaying the image and iterating through the frames of a video', "Emphasizes the use of 'wait key' and 'video capture' object Mentions the importance of adding a delay using 'wait key' and introduces the 'video capture' object for iterating through video frames", 'Explains the use of a while loop for iterating through video frames Describes the process of using a while loop to iterate through the frames of a video']}, {'end': 2202.983, 'start': 1945.572, 'title': 'Importing images, videos, and webcams using c++ and opencv', 'summary': 'Covers importing images, videos, and webcams using c++ and opencv, with a focus on giving a delay of one millisecond, changing the camera id for webcams, and excluding files from the project.', 'duration': 257.411, 'highlights': ['The chapter covers importing images, videos, and webcams using C++ and OpenCV, with a focus on giving a delay of one millisecond, changing the camera ID for webcams, and excluding files from the project.', 'Importing videos with a delay of 20 milliseconds results in a much slower playback, providing a way to control the speed of the video.', 'When using a webcam, the path is replaced by an ID number, with the option to change the ID for different cameras, and the process is similar to importing videos.', 'Excluding files from the project and dealing with limitations in running multiple files with the main function in C++ are also discussed.']}], 'duration': 946.427, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk1256556.jpg', 'highlights': ['Covers importing images, videos, and webcams in OpenCV, emphasizing the process of importing images and including the necessary header files for OpenCV.', 'The tutorial provides step-by-step instructions on setting up the project, including creating a new item, and adding the required header files for OpenCV.', 'The detailed instructions include the process of importing images into the project, using the imread function and the mat data type introduced by OpenCV to handle images.', 'The chapter covers the process of importing an image and video in Python using OpenCV. It includes the steps for displaying the image and iterating through the frames of a video.', "Emphasizes the use of 'wait key' and 'video capture' object. Mentions the importance of adding a delay using 'wait key' and introduces the 'video capture' object for iterating through video frames.", 'The chapter covers importing images, videos, and webcams using C++ and OpenCV, with a focus on giving a delay of one millisecond, changing the camera ID for webcams, and excluding files from the project.', 'Importing videos with a delay of 20 milliseconds results in a much slower playback, providing a way to control the speed of the video.', 'When using a webcam, the path is replaced by an ID number, with the option to change the ID for different cameras, and the process is similar to importing videos.', 'Excluding files from the project and dealing with limitations in running multiple files with the main function in C++ are also discussed.']}, {'end': 4339.895, 'segs': [{'end': 2331.264, 'src': 'embed', 'start': 2295.296, 'weight': 0, 'content': [{'end': 2300.722, 'text': 'okay, now, this is giving error because it does not recognize image gray.', 'start': 2295.296, 'duration': 5.426}, {'end': 2311.673, 'text': 'so what we can do is we can define here matte and we can write here image gray.', 'start': 2300.722, 'duration': 10.951}, {'end': 2313.215, 'text': 'so now it should be fine.', 'start': 2311.673, 'duration': 1.542}, {'end': 2320.336, 'text': 'so if we write it again, color underscore BGR.', 'start': 2313.215, 'duration': 7.121}, {'end': 2325.72, 'text': 'so OpenCV has the convention of BGR instead of RGB.', 'start': 2320.336, 'duration': 5.384}, {'end': 2328.322, 'text': "so it's blue, green and red.", 'start': 2325.72, 'duration': 2.602}, {'end': 2331.264, 'text': 'so we will convert BGR to grey.', 'start': 2328.322, 'duration': 2.942}], 'summary': "The opencv code is being modified to fix the image recognition error by defining 'matte' and writing 'image gray', and converting bgr to grey.", 'duration': 35.968, 'max_score': 2295.296, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk2295296.jpg'}, {'end': 2468.144, 'src': 'embed', 'start': 2394.559, 'weight': 2, 'content': [{'end': 2397.401, 'text': 'You could, but most of the time we write it outside.', 'start': 2394.559, 'duration': 2.842}, {'end': 2400.923, 'text': 'For example, let me comment this.', 'start': 2397.821, 'duration': 3.102}, {'end': 2413.146, 'text': 'For example, this, we normally write it like this, image gray is equals to CVT color and all of that.', 'start': 2402.844, 'duration': 10.302}, {'end': 2419.448, 'text': 'And we write it like that.', 'start': 2414.206, 'duration': 5.242}, {'end': 2423.288, 'text': 'So this is how you normally write it in Python.', 'start': 2420.928, 'duration': 2.36}, {'end': 2430.17, 'text': 'Now, most of the times in C++, we are going to write the destination image inside the function.', 'start': 2423.829, 'duration': 6.341}, {'end': 2433.803, 'text': 'so just keep a note of that.', 'start': 2431.562, 'duration': 2.241}, {'end': 2439.164, 'text': 'so here in the gaussian blur we are going to write image and then we will write the destination image.', 'start': 2433.803, 'duration': 5.361}, {'end': 2442.225, 'text': 'now we will need an image blur.', 'start': 2439.164, 'duration': 3.061}, {'end': 2454.408, 'text': 'so we will define here image blur and then we want to define the size of the kernel.', 'start': 2442.225, 'duration': 12.183}, {'end': 2461.355, 'text': "so we will write here size And we will define, let's say, 7 by 7..", 'start': 2454.408, 'duration': 6.947}, {'end': 2464.819, 'text': "I'm giving it a little bit more so that you can see the effect.", 'start': 2461.355, 'duration': 3.464}, {'end': 2468.144, 'text': 'And then you have the sigma x and sigma y.', 'start': 2465.42, 'duration': 2.724}], 'summary': 'In python, destination image is written outside, while in c++ it is written inside the function. gaussian blur requires defining image blur and size of kernel, for example 7 by 7.', 'duration': 73.585, 'max_score': 2394.559, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk2394559.jpg'}, {'end': 2553.336, 'src': 'embed', 'start': 2526.178, 'weight': 3, 'content': [{'end': 2535.041, 'text': "So if I make this three by three and let's say I make this three as well, then you will see that the blurriness has reduced.", 'start': 2526.178, 'duration': 8.863}, {'end': 2537.341, 'text': 'There you go.', 'start': 2536.921, 'duration': 0.42}, {'end': 2543.023, 'text': "So now it's very subtle and you can't really tell that if it has been blurred or not.", 'start': 2537.681, 'duration': 5.342}, {'end': 2548.354, 'text': 'So now that we are done with blur, we will learn how to perform edge detection.', 'start': 2544.232, 'duration': 4.122}, {'end': 2553.336, 'text': 'And one of the most commonly used edge detector is the canny edge detector.', 'start': 2548.814, 'duration': 4.522}], 'summary': 'Reduced blurriness by making the image 3x3, leading to subtle and imperceptible blur. moving on to learning edge detection with canny edge detector.', 'duration': 27.158, 'max_score': 2526.178, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk2526178.jpg'}, {'end': 2612.572, 'src': 'embed', 'start': 2583.728, 'weight': 1, 'content': [{'end': 2586.77, 'text': 'So you can see here threshold one and threshold two.', 'start': 2583.728, 'duration': 3.042}, {'end': 2592.154, 'text': 'So we are going to write the threshold values over here.', 'start': 2587.431, 'duration': 4.723}, {'end': 2598.883, 'text': "So here we will write, let's say 50 and here we will write one 50.", 'start': 2593.14, 'duration': 5.743}, {'end': 2603.506, 'text': 'Again, these values you can play around with to find the optimum results.', 'start': 2598.883, 'duration': 4.623}, {'end': 2610.75, 'text': 'So I can write here image canny because we have not declared it and then we can run it.', 'start': 2603.946, 'duration': 6.804}, {'end': 2612.572, 'text': "Uh, actually we didn't.", 'start': 2611.451, 'duration': 1.121}], 'summary': 'Setting threshold values at 50 and 150, exploring for optimal results.', 'duration': 28.844, 'max_score': 2583.728, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk2583728.jpg'}, {'end': 3274.357, 'src': 'heatmap', 'start': 3128.621, 'weight': 0.765, 'content': [{'end': 3132.524, 'text': 'And then we are going to write the size we want to change.', 'start': 3128.621, 'duration': 3.903}, {'end': 3135.106, 'text': "So let's say we will write size.", 'start': 3132.944, 'duration': 2.162}, {'end': 3144.153, 'text': 'And what is the size of our image at this point? How can we find that? Okay, let me show you how we can do that.', 'start': 3136.267, 'duration': 7.886}, {'end': 3146.094, 'text': "So let's comment this for now.", 'start': 3144.613, 'duration': 1.481}, {'end': 3149.196, 'text': 'And here we are going to write cout.', 'start': 3147.015, 'duration': 2.181}, {'end': 3153.259, 'text': 'And we will print out the size.', 'start': 3150.798, 'duration': 2.461}, {'end': 3155.101, 'text': 'So we will write here image.size.', 'start': 3153.439, 'duration': 1.662}, {'end': 3169.924, 'text': "and let's print that out and we will add and we will end our line.", 'start': 3160.058, 'duration': 9.866}, {'end': 3175.727, 'text': "so let's run this and there you go.", 'start': 3169.924, 'duration': 5.803}, {'end': 3177.108, 'text': 'so our image size is 768 by 559.', 'start': 3175.727, 'duration': 1.381}, {'end': 3187.361, 'text': 'so we have a width of 768 and a height of 559.', 'start': 3177.108, 'duration': 10.253}, {'end': 3193.146, 'text': "so what we can do is, let's say we want a very specific number to resize.", 'start': 3187.361, 'duration': 5.785}, {'end': 3204.434, 'text': "so what we can do is we can resize it, let's remove that, we can resize it, let's say to 640 by 480..", 'start': 3193.146, 'duration': 11.288}, {'end': 3219.61, 'text': "so let's run that okay we need to define a new window so we will call it resize and here we will write image resize So let's run that.", 'start': 3204.434, 'duration': 15.176}, {'end': 3224.572, 'text': 'And there you go.', 'start': 3224.032, 'duration': 0.54}, {'end': 3226.974, 'text': 'So now our image has resized.', 'start': 3225.073, 'duration': 1.901}, {'end': 3230.096, 'text': 'And you can see that the aspect ratio has changed.', 'start': 3227.334, 'duration': 2.762}, {'end': 3232.537, 'text': 'It is not the same aspect ratio.', 'start': 3231.016, 'duration': 1.521}, {'end': 3235.559, 'text': "It's squeezed a little bit on the width.", 'start': 3232.597, 'duration': 2.962}, {'end': 3245.845, 'text': "So if you don't want to do that, if you don't have a particular number, you just want to scale it down then instead of using the size,", 'start': 3236.76, 'duration': 9.085}, {'end': 3246.686, 'text': 'you can remove this.', 'start': 3245.845, 'duration': 0.841}, {'end': 3250.225, 'text': 'And you can define how much you want to scale.', 'start': 3247.782, 'duration': 2.443}, {'end': 3254.49, 'text': 'So here you have double FX and double FY.', 'start': 3250.725, 'duration': 3.765}, {'end': 3261.577, 'text': 'So you can define here, for example, 0.5 and 0.5.', 'start': 3255.23, 'duration': 6.347}, {'end': 3265.722, 'text': 'So this will scale instead of exact pixels.', 'start': 3261.577, 'duration': 4.145}, {'end': 3266.743, 'text': "So let's have a look.", 'start': 3265.982, 'duration': 0.761}, {'end': 3270.574, 'text': 'And there you go.', 'start': 3270.074, 'duration': 0.5}, {'end': 3274.357, 'text': 'So now it has decreased it 50%.', 'start': 3270.935, 'duration': 3.422}], 'summary': 'Resized image from 768x559 to 640x480, maintaining aspect ratio.', 'duration': 145.736, 'max_score': 3128.621, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk3128621.jpg'}], 'start': 2202.983, 'title': 'Image processing with opencv', 'summary': 'Covers image processing basics with opencv, including grayscale conversion, gaussian blur with a 7x7 kernel and sigma 5, gaussian blur and canny edge detection techniques, image dilation and erosion, image resizing, cropping, and manipulation techniques like creating shapes and warping images for object detection.', 'chapters': [{'end': 2493.986, 'start': 2202.983, 'title': 'Image processing basics with opencv', 'summary': 'Demonstrates how to process images using opencv, including converting an image to grayscale and applying gaussian blur with a kernel size of 7x7 and a sigma of 5, to enhance the understanding of image processing functions.', 'duration': 291.003, 'highlights': ["Demonstrating conversion of image to grayscale The chapter explains the process of converting an image to grayscale using the cvtColor function, showcasing the use of OpenCV's image processing capabilities.", 'Applying Gaussian blur with a kernel size of 7x7 and a sigma of 5 It demonstrates the application of Gaussian blur with a specific kernel size and sigma values, providing practical insights into image blurring techniques.', 'Explanation of the OpenCV function conventions in Python and C++ The chapter highlights the differences in function conventions between Python and C++ in OpenCV, providing valuable insights into programming practices for image processing.']}, {'end': 2670.663, 'start': 2496.232, 'title': 'Image processing techniques', 'summary': 'Demonstrates the implementation of gaussian blur to reduce blurriness in an image, followed by the use of canny edge detector with adjustable threshold values to detect prominent edges.', 'duration': 174.431, 'highlights': ['The chapter demonstrates the implementation of Gaussian blur with adjustable parameters to reduce blurriness in an image, resulting in a subtle and imperceptible blur. Implementation of Gaussian blur, reduction of blurriness, use of adjustable parameters', 'The chapter explains the use of Canny edge detector with adjustable threshold values, enabling the detection of prominent edges in an image. Explanation of Canny edge detector, use of adjustable threshold values, detection of prominent edges', 'The chapter mentions the potential adjustment of threshold values and the use of track bars for controlling edge detection in upcoming chapters. Potential adjustment of threshold values, use of track bars for controlling edge detection']}, {'end': 3092.514, 'start': 2670.663, 'title': 'Image dilation and erosion', 'summary': 'Demonstrates the techniques of image dilation and erosion using kernels to increase and decrease the thickness of edges, with examples of the effects of different kernel sizes on the images.', 'duration': 421.851, 'highlights': ["The chapter covers the concepts of image dilation and erosion, showcasing the use of kernels to increase and decrease edge thickness, with examples of different kernel sizes' effects on the images.", 'The demonstration includes the process of defining a kernel using a structuring element, emphasizing the impact of kernel size on the degree of dilation and erosion.', 'It also highlights the practical application of these functions in detecting the shapes of different objects, with a mention of their relevance in upcoming chapters.', 'The chapter concludes by emphasizing the importance of the covered functions, stating that they are fundamental for beginners learning OpenCV.']}, {'end': 3637.654, 'start': 3093.516, 'title': 'Image resizing and cropping', 'summary': 'Covers the process of resizing an image using opencv, demonstrating how to change the size both by specific dimensions and by scaling, as well as how to crop an image based on a defined region of interest (roi), with a demonstration of resizing and cropping a sample image.', 'duration': 544.138, 'highlights': ["The process of resizing an image using OpenCV involves using the 'resize' function to change the size by specific dimensions or scaling, demonstrated by resizing an image from 768x559 to 640x480 and then scaling it down by 50%. Image size before resizing: 768x559, after resizing: 640x480", "Demonstration of cropping an image using the 'rectangle' data type to define the ROI and then applying it to the image, with a practical example of cropping a specific region (face) from the image. Cropping a specific region (e.g., face) from the image using the 'rectangle' data type", 'Introduction to the next chapter on drawing shapes and writing text on images, indicating the shift in focus and previewing the upcoming content. Transition to the next chapter focusing on drawing shapes and writing text on images']}, {'end': 4339.895, 'start': 3637.654, 'title': 'Image manipulation with opencv', 'summary': "Demonstrates creating a blank image, adding shapes and text, and illustrates the concept of warping images to achieve a bird's eye view perspective, which is essential for object detection in projects. notably, it covers how to define image properties, create shapes like circles, rectangles, lines, and add text using opencv.", 'duration': 702.241, 'highlights': ['Creating a blank image of any color and adding shapes and text comes in handy for object detection projects. The tutorial explains how to create a blank image, add a circle, rectangle, line, and text using OpenCV, which is essential for defining and displaying objects in projects.', "Illustrating the concept of warping images to achieve a bird's eye view perspective, crucial for object detection. The chapter provides a practical demonstration of warping an image to achieve a bird's eye view perspective, which is important for object detection tasks.", 'Defining image properties, such as size, type, and channels, is explained in detail, providing a fundamental understanding of image representation. The tutorial covers the detailed explanation of defining image properties, including size, type (8 bits), and channels (BGR), which provides a fundamental understanding of image representation.']}], 'duration': 2136.912, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk2202983.jpg', 'highlights': ['The tutorial covers the detailed explanation of defining image properties, including size, type (8 bits), and channels (BGR), which provides a fundamental understanding of image representation.', 'The chapter concludes by emphasizing the importance of the covered functions, stating that they are fundamental for beginners learning OpenCV.', 'The chapter explains the use of Canny edge detector with adjustable threshold values, enabling the detection of prominent edges in an image.', 'The chapter demonstrates the implementation of Gaussian blur with adjustable parameters to reduce blurriness in an image, resulting in a subtle and imperceptible blur.', "The chapter explains the process of converting an image to grayscale using the cvtColor function, showcasing the use of OpenCV's image processing capabilities."]}, {'end': 5447.826, 'segs': [{'end': 4383.987, 'src': 'embed', 'start': 4339.955, 'weight': 1, 'content': [{'end': 4355.321, 'text': "We will write verb images, let's say, and then we will import our, was it called cards? Cards.png or JPG? I think PNG.", 'start': 4339.955, 'duration': 15.366}, {'end': 4358.002, 'text': "Let's run that.", 'start': 4357.042, 'duration': 0.96}, {'end': 4360.163, 'text': "No, it's JPG.", 'start': 4358.983, 'duration': 1.18}, {'end': 4370.096, 'text': 'JPG There you go.', 'start': 4361.484, 'duration': 8.612}, {'end': 4375.26, 'text': 'So this is our image and we are going to so you can select any of these cards.', 'start': 4370.256, 'duration': 5.004}, {'end': 4378.243, 'text': "Now I'm going to do this king card.", 'start': 4375.901, 'duration': 2.342}, {'end': 4383.987, 'text': 'I recommend you to do after that try out to get the jack, the nine and the queen.', 'start': 4378.803, 'duration': 5.184}], 'summary': 'Import and select card images in png and jpg format for use in the project.', 'duration': 44.032, 'max_score': 4339.955, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk4339955.jpg'}, {'end': 4458.686, 'src': 'embed', 'start': 4419.113, 'weight': 5, 'content': [{'end': 4422.996, 'text': 'what are the coordinates of this point, of this pixel?', 'start': 4419.113, 'duration': 3.883}, {'end': 4427.959, 'text': 'So here you can see it is 529 and 144 pixel.', 'start': 4423.376, 'duration': 4.583}, {'end': 4433.342, 'text': 'Then over here you can see it is 405, 392.', 'start': 4428.699, 'duration': 4.643}, {'end': 4439.547, 'text': 'So I have noted all these values down and we will write them here.', 'start': 4433.343, 'duration': 6.204}, {'end': 4447.878, 'text': 'So here we are going to write points.', 'start': 4445.256, 'duration': 2.622}, {'end': 4453.282, 'text': 'But the function that we are going to use actually requires floating points.', 'start': 4448.619, 'duration': 4.663}, {'end': 4458.686, 'text': 'So we are going to use 2f instead of just point.', 'start': 4453.983, 'duration': 4.703}], 'summary': 'Coordinates of the points are 529, 144 and 405, 392 pixels. using 2f for floating points.', 'duration': 39.573, 'max_score': 4419.113, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk4419113.jpg'}, {'end': 5048.484, 'src': 'embed', 'start': 5014.54, 'weight': 0, 'content': [{'end': 5018.282, 'text': 'Here we can write color detection.', 'start': 5014.54, 'duration': 3.742}, {'end': 5023.025, 'text': 'so we are not going to use the test image.', 'start': 5020.504, 'duration': 2.521}, {'end': 5031.869, 'text': 'instead we are going to use lambo, which is the image of a mini lamborghini.', 'start': 5023.025, 'duration': 8.844}, {'end': 5039.373, 'text': "so let's exclude this from our project, chapter number five, and now we have only chapter six running.", 'start': 5031.869, 'duration': 7.504}, {'end': 5042.434, 'text': "so let's run this and see if it works properly.", 'start': 5039.373, 'duration': 3.061}, {'end': 5046.382, 'text': 'There you go.', 'start': 5045.902, 'duration': 0.48}, {'end': 5048.484, 'text': 'So we have our image, the orange image.', 'start': 5046.482, 'duration': 2.002}], 'summary': 'Color detection using an image of a mini lamborghini was successful.', 'duration': 33.944, 'max_score': 5014.54, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk5014540.jpg'}, {'end': 5164.136, 'src': 'embed', 'start': 5110.048, 'weight': 2, 'content': [{'end': 5121.219, 'text': 'So CVT image, and then we can write here image HSV, and then we convert this BGR to HSV.', 'start': 5110.048, 'duration': 11.171}, {'end': 5126.639, 'text': "now let's create this image.", 'start': 5123.157, 'duration': 3.482}, {'end': 5138.388, 'text': "so we will write here mat, and let's write our image hsv.", 'start': 5126.639, 'duration': 11.749}, {'end': 5141.49, 'text': 'then we are going to print it out.', 'start': 5138.388, 'duration': 3.102}, {'end': 5155.33, 'text': "so let's write im show and then image hsv and then we will write image hsv.", 'start': 5141.49, 'duration': 13.84}, {'end': 5156.851, 'text': 'there you go.', 'start': 5155.33, 'duration': 1.521}, {'end': 5164.136, 'text': "so let's see how it looks like.", 'start': 5156.851, 'duration': 7.285}], 'summary': 'Converting bgr image to hsv and displaying it.', 'duration': 54.088, 'max_score': 5110.048, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk5110048.jpg'}], 'start': 4339.955, 'title': 'Image processing techniques', 'summary': 'Covers image transformation, perspective, and color detection, including details on pixel coordinates, hsv space conversion, and real-time color detection, paving the way for upcoming projects.', 'chapters': [{'end': 4894.836, 'start': 4339.955, 'title': 'Image transformation and perspective', 'summary': 'Demonstrates the process of importing and transforming images using perspective transformation and creating circles around selected points to achieve a top-view effect, with specific details on pixel coordinates, source and destination points, aspect ratio, and transformation matrix.', 'duration': 554.881, 'highlights': ['The chapter demonstrates the process of importing and transforming images using perspective transformation. The chapter explains the process of importing and transforming images using perspective transformation to achieve a top-view effect.', 'Creating circles around selected points to achieve a top-view effect. The tutorial details the creation of circles around selected points to achieve a top-view effect, enhancing the understanding of the image transformation process.', 'Specific details on pixel coordinates, source and destination points, aspect ratio, and transformation matrix. The tutorial provides specific details on pixel coordinates, source and destination points, aspect ratio, and the transformation matrix used in the image transformation process.']}, {'end': 5074.182, 'start': 4894.836, 'title': 'Color detection in images', 'summary': 'Demonstrates a technique for detecting colors in images, and also hints at upcoming projects involving scanning documents and creating an object detector for a specific color.', 'duration': 179.346, 'highlights': ["The upcoming projects will involve learning how to scan documents using the demonstrated technique for creating a bird's eye view and scaling images, as well as processing them to resemble scanned documents.", 'The chapter focuses on detecting colors in images, with the potential to create an object detector for a specific color.', "The technique for detecting colors in images is demonstrated using the example of detecting the color orange in an image of a mini Lamborghini, termed 'lambo.'", "The process involves adding a new item called 'chapter six' in the project and using an image of a mini Lamborghini for color detection.", 'The demonstration includes running the code to detect the orange color in the image of the mini Lamborghini, showing the practical application of the color detection technique.']}, {'end': 5447.826, 'start': 5076.235, 'title': 'Converting image to hsv space and using inrange function', 'summary': 'Demonstrates the process of converting an image to hsv space to make color detection easier, using the inrange function with a specified range of values to detect a specific color, and creating track bars to adjust the color detection values in real time, resulting in accurate color detection.', 'duration': 371.591, 'highlights': ['The chapter demonstrates the process of converting an image to HSV space to make color detection easier, using the inRange function with a specified range of values to detect a specific color, and creating track bars to adjust the color detection values in real time, resulting in accurate color detection.', 'The inRange function is used to define a lower and upper limit for the HSV image, allowing for the detection of a range of color values to accommodate variations due to lighting and shadows, resulting in more accurate color detection.', 'The process of creating track bars is explained as a method for adjusting color detection values in real time, eliminating the need to manually change values and significantly reducing the time and effort required for accurate color detection.']}], 'duration': 1107.871, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk4339955.jpg', 'highlights': ['The chapter demonstrates the process of converting an image to HSV space for easier color detection.', 'The tutorial provides specific details on pixel coordinates, source and destination points, aspect ratio, and the transformation matrix used in the image transformation process.', 'The chapter focuses on detecting colors in images, with the potential to create an object detector for a specific color.', "The process involves adding a new item called 'chapter six' in the project and using an image of a mini Lamborghini for color detection.", 'The demonstration includes running the code to detect the orange color in the image of the mini Lamborghini, showing the practical application of the color detection technique.', "The upcoming projects will involve learning how to scan documents using the demonstrated technique for creating a bird's eye view and scaling images, as well as processing them to resemble scanned documents."]}, {'end': 7047.185, 'segs': [{'end': 5591.204, 'src': 'embed', 'start': 5555.73, 'weight': 0, 'content': [{'end': 5558.691, 'text': 'so if i change this, it should change.', 'start': 5555.73, 'duration': 2.961}, {'end': 5564.272, 'text': 'yeah. so you can see, now it has an effect in real time, because it is already linked,', 'start': 5558.691, 'duration': 5.581}, {'end': 5571.493, 'text': 'because we are using the h minimum here and then we are using that in our lower.', 'start': 5564.272, 'duration': 7.221}, {'end': 5578.334, 'text': 'so what we can do is we can copy this and we can paste it six times.', 'start': 5571.493, 'duration': 6.841}, {'end': 5591.204, 'text': "and here we will do, let's say, max, let's copy max and we will paste it here and then we can do hue saturation.", 'start': 5578.334, 'duration': 12.87}], 'summary': 'Real-time effect seen by changing h minimum, copied and pasted six times, and applied hue saturation.', 'duration': 35.474, 'max_score': 5555.73, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk5555730.jpg'}, {'end': 5704.948, 'src': 'embed', 'start': 5679.021, 'weight': 1, 'content': [{'end': 5685.23, 'text': 'you can see, it becomes more clear, can reduce now, then we can check the value.', 'start': 5679.021, 'duration': 6.209}, {'end': 5688.035, 'text': 'yeah, getting a little bit better.', 'start': 5685.23, 'duration': 2.805}, {'end': 5689.337, 'text': 'and there you go.', 'start': 5688.035, 'duration': 1.302}, {'end': 5690.719, 'text': 'so these are the values.', 'start': 5689.337, 'duration': 1.382}, {'end': 5698.805, 'text': 'once we have these values, we can go back and we can enter these values as our starting points.', 'start': 5690.719, 'duration': 8.086}, {'end': 5703.267, 'text': 'So here we can write four, then here we can write 24, then 145, 255, 117, and 255.', 'start': 5699.205, 'duration': 4.062}, {'end': 5704.948, 'text': "So that's how you can change.", 'start': 5703.267, 'duration': 1.681}], 'summary': 'The values can be reduced, starting points are 4, 24, 145, 255, 117.', 'duration': 25.927, 'max_score': 5679.021, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk5679021.jpg'}, {'end': 6258.345, 'src': 'embed', 'start': 6154.631, 'weight': 3, 'content': [{'end': 6159.335, 'text': 'Now, once the image is pre-processed, then we are going to find the contours in it.', 'start': 6154.631, 'duration': 4.704}, {'end': 6167.086, 'text': 'now, what we will do in this chapter will be a little bit different than what we have done before.', 'start': 6160.458, 'duration': 6.628}, {'end': 6172.873, 'text': 'so we are going to introduce a new function to find the contours.', 'start': 6167.086, 'duration': 5.787}, {'end': 6177.939, 'text': 'instead of writing everything in the main function, we are going to introduce a new one.', 'start': 6172.873, 'duration': 5.066}, {'end': 6185.173, 'text': 'so over here we are going to define new function.', 'start': 6177.939, 'duration': 7.234}, {'end': 6188.593, 'text': 'we do not need anything coming out of it.', 'start': 6185.173, 'duration': 3.42}, {'end': 6190.894, 'text': 'there will be no returning value.', 'start': 6188.593, 'duration': 2.301}, {'end': 6201.716, 'text': 'so we will write void, then get contours and then later on we are going to decide what are the things that we need.', 'start': 6190.894, 'duration': 10.822}, {'end': 6209.558, 'text': 'but for now we are going to write here gets contours and we will write it like this.', 'start': 6201.716, 'duration': 7.842}, {'end': 6216.102, 'text': 'So first of all, we need to send in our image.', 'start': 6212.239, 'duration': 3.863}, {'end': 6218.465, 'text': 'So this is the last image that we have.', 'start': 6216.303, 'duration': 2.162}, {'end': 6220.006, 'text': 'So we need to send this.', 'start': 6218.945, 'duration': 1.061}, {'end': 6227.292, 'text': 'So we will write here that we are sending image dilation and over here, we need to receive it.', 'start': 6220.707, 'duration': 6.585}, {'end': 6232.137, 'text': 'And we have to define the data type first.', 'start': 6227.973, 'duration': 4.164}, {'end': 6238.262, 'text': 'So we define it as Matt, and then we will write that this is our image that we are receiving.', 'start': 6232.317, 'duration': 5.945}, {'end': 6245.718, 'text': 'so this is the receiving image.', 'start': 6243.337, 'duration': 2.381}, {'end': 6258.345, 'text': "let's call it image dilation, and then we will also receive another image, matte image, on which we want to draw.", 'start': 6245.718, 'duration': 12.627}], 'summary': 'Introducing a new function to find contours in pre-processed image.', 'duration': 103.714, 'max_score': 6154.631, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk6154631.jpg'}, {'end': 6431.118, 'src': 'heatmap', 'start': 6258.345, 'weight': 2, 'content': [{'end': 6268.051, 'text': 'so we can write here that this is the image that we want to draw on and this is the image that we want to find the contours on.', 'start': 6258.345, 'duration': 9.706}, {'end': 6277.362, 'text': 'so then we can write here first of all, we can write the function find contours.', 'start': 6270.24, 'duration': 7.122}, {'end': 6283.803, 'text': "so we will write here find contours, and let's see what is required.", 'start': 6277.362, 'duration': 6.441}, {'end': 6286.384, 'text': 'so the first thing is the input image.', 'start': 6283.803, 'duration': 2.581}, {'end': 6301.912, 'text': 'so we will write here image dilation, and then we have our contours And then we have our hierarchy.', 'start': 6286.384, 'duration': 15.528}, {'end': 6311.599, 'text': 'and then we have our type, our method.', 'start': 6307.478, 'duration': 4.121}, {'end': 6314.54, 'text': 'so we are going to use the external method.', 'start': 6311.599, 'duration': 2.941}, {'end': 6319.682, 'text': 'you have a lot of different methods that you can use.', 'start': 6314.54, 'duration': 5.142}, {'end': 6323.583, 'text': 'so external flood fill list tree.', 'start': 6319.682, 'duration': 3.901}, {'end': 6326.464, 'text': 'so you can use any of these methods.', 'start': 6323.583, 'duration': 2.881}, {'end': 6331.665, 'text': 'we are going to use external and then we have the chain approximation.', 'start': 6326.464, 'duration': 5.201}, {'end': 6336.73, 'text': 'we can use the simple chain approximation.', 'start': 6331.665, 'duration': 5.065}, {'end': 6342.777, 'text': "now you can read all about this in the documentation and you can, if you don't want to read about it,", 'start': 6336.73, 'duration': 6.047}, {'end': 6346.581, 'text': 'you can play around with these values and see what the effect is.', 'start': 6342.777, 'duration': 3.804}, {'end': 6351.207, 'text': 'but we are not going to go into the detail of the theory for these parameters.', 'start': 6346.581, 'duration': 4.626}, {'end': 6356.171, 'text': 'so we are getting these errors because we did not define them.', 'start': 6352.168, 'duration': 4.003}, {'end': 6359.453, 'text': 'so we have to define our contours now.', 'start': 6356.171, 'duration': 3.282}, {'end': 6365.358, 'text': 'unlike python, we need to define the data type over here before we can define it.', 'start': 6359.453, 'duration': 5.905}, {'end': 6368.18, 'text': 'so what will it be like?', 'start': 6365.358, 'duration': 2.822}, {'end': 6382.53, 'text': "so these contours will be a vector and inside that vector it's like a list and inside that list there will be another list of different points.", 'start': 6368.18, 'duration': 14.35}, {'end': 6385.612, 'text': 'so let me show you how that will look like.', 'start': 6382.53, 'duration': 3.082}, {'end': 6391.156, 'text': 'so this is a vector and inside that vector we will have more vectors.', 'start': 6385.612, 'duration': 5.544}, {'end': 6407.048, 'text': 'so these are more vectors and for each vector each vector will be a contour and each contour will have some points.', 'start': 6391.156, 'duration': 15.892}, {'end': 6410.863, 'text': "So this will be, let's say, 0.1..", 'start': 6407.941, 'duration': 2.922}, {'end': 6414.166, 'text': "Let's say it's 20, 30.", 'start': 6410.863, 'duration': 3.303}, {'end': 6417.288, 'text': 'And then we will have 0.2.', 'start': 6414.166, 'duration': 3.122}, {'end': 6423.191, 'text': "Let's say that is 50, 60.", 'start': 6417.288, 'duration': 5.903}, {'end': 6424.853, 'text': 'So this will be one contour.', 'start': 6423.192, 'duration': 1.661}, {'end': 6428.276, 'text': 'And then there will be another contour, then another contour.', 'start': 6425.574, 'duration': 2.702}, {'end': 6431.118, 'text': 'So this structure is basically.', 'start': 6429.096, 'duration': 2.022}], 'summary': 'Using opencv to find contours on an input image, specifying parameters and defining contours as vectors.', 'duration': 39.962, 'max_score': 6258.345, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk6258345.jpg'}], 'start': 5447.826, 'title': 'Opencv contour detection', 'summary': 'Covers creating track bars to adjust color values, color detection for object detection and tracking, detecting shapes like rectangles, squares, triangles, and circles, pre-processing images using gaussian blur, canny edge detection, and dilation, and finding contours with the focus on filtering contours by area above 1000, enhancing detection accuracy and clarity.', 'chapters': [{'end': 5893.103, 'start': 5447.826, 'title': 'Detecting shapes and contours', 'summary': 'Covers creating track bars to adjust color values, using color detection for object detection and tracking, and learning to detect shapes like rectangles, squares, triangles, and circles in images.', 'duration': 445.277, 'highlights': ['The chapter covers creating track bars to adjust color values, enabling real-time color effect adjustment, and demonstrating color detection for object detection and tracking.', 'The process involves defining track bar values for hue, saturation, and value, with hue having a maximum value of 179 and saturation and value having a maximum value of 255.', 'The method allows for adjusting track bars to find specific colors in different images, enabling the detection of various objects based on color detection, providing a fast method for object detection and tracking.', 'The chapter also covers the process for detecting shapes and contours in images, including rectangles, squares, triangles, and circles, utilizing color detection for object detection and tracking.']}, {'end': 6506.417, 'start': 5895.324, 'title': 'Image pre-processing and contour detection', 'summary': 'Covers pre-processing the image using gaussian blur, canny edge detection, and dilation, and introduces a new function for finding contours, enhancing detection accuracy, and clarity.', 'duration': 611.093, 'highlights': ['Introducing a new function for finding contours to enhance detection accuracy and clarity. The chapter introduces a new function for finding contours to enhance detection accuracy and clarity.', 'Explaining the process of pre-processing the image using Gaussian blur, canny edge detection, and dilation. The chapter explains the process of pre-processing the image using Gaussian blur, canny edge detection, and dilation.', 'Demonstrating the impact of dilation on enhancing detection accuracy by removing small gaps in the contours. The chapter demonstrates the impact of dilation on enhancing detection accuracy by removing small gaps in the contours.']}, {'end': 7047.185, 'start': 6507.658, 'title': 'Opencv contour detection', 'summary': 'Explains how to draw contours, filter them based on area, and find the bounding box around the objects using opencv, with a highlight on filtering contours by area above 1000.', 'duration': 539.527, 'highlights': ['The function to draw contours is demonstrated, with an example of drawing all contours on an image with a specified color and thickness.', 'The process of finding the area of contours is explained, including the use of a filter to retain only those with an area greater than 1000.', 'The method for finding the bounding box and the number of curves of a contour is detailed, with the criteria for determining shapes like rectangles, triangles, and circles.']}], 'duration': 1599.359, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk5447826.jpg', 'highlights': ['Covers creating track bars to adjust color values, enabling real-time color effect adjustment, and demonstrating color detection for object detection and tracking.', 'The process involves defining track bar values for hue, saturation, and value, with hue having a maximum value of 179 and saturation and value having a maximum value of 255.', 'The chapter covers the process for detecting shapes and contours in images, including rectangles, squares, triangles, and circles, utilizing color detection for object detection and tracking.', 'Introducing a new function for finding contours to enhance detection accuracy and clarity.', 'Explaining the process of pre-processing the image using Gaussian blur, canny edge detection, and dilation.', 'The function to draw contours is demonstrated, with an example of drawing all contours on an image with a specified color and thickness.', 'The process of finding the area of contours is explained, including the use of a filter to retain only those with an area greater than 1000.', 'The method for finding the bounding box and the number of curves of a contour is detailed, with the criteria for determining shapes like rectangles, triangles, and circles.', 'Demonstrating the impact of dilation on enhancing detection accuracy by removing small gaps in the contours.']}, {'end': 8341.124, 'segs': [{'end': 7522.107, 'src': 'embed', 'start': 7480.994, 'weight': 3, 'content': [{'end': 7490.02, 'text': 'And then the the purple one is the actual contour of your rectangle or triangle or circle.', 'start': 7480.994, 'duration': 9.026}, {'end': 7494.322, 'text': 'So this is the idea.', 'start': 7492.541, 'duration': 1.781}, {'end': 7496.284, 'text': 'So we can comment it out.', 'start': 7494.763, 'duration': 1.521}, {'end': 7508.481, 'text': 'and then what we are going to do is we are going to find out which object is which, or which shape is which.', 'start': 7500.217, 'duration': 8.264}, {'end': 7522.107, 'text': "so what we will do is we will create a new variable called, let's say, integer objects, corner.", 'start': 7508.481, 'duration': 13.626}], 'summary': 'Identifying shapes and creating integer objects for corners.', 'duration': 41.113, 'max_score': 7480.994, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk7480994.jpg'}, {'end': 7734.081, 'src': 'embed', 'start': 7650.989, 'weight': 0, 'content': [{'end': 7669.068, 'text': 'now the text will be basically our object type and the points will be the starting point, the top left or, instead of writing, the top left.', 'start': 7650.989, 'duration': 18.079}, {'end': 7675.83, 'text': "what we can do is because if it's exactly on the top left, it will be on the contour shape.", 'start': 7669.068, 'duration': 6.762}, {'end': 7679.952, 'text': 'so we want to draw or we want to put the text a little bit above.', 'start': 7675.83, 'duration': 4.122}, {'end': 7686.674, 'text': 'so what we will do is we will say bounding rect.', 'start': 7679.952, 'duration': 6.722}, {'end': 7692.574, 'text': 'actually, we should use this bounding rect.', 'start': 7686.674, 'duration': 5.9}, {'end': 7705.44, 'text': "let's use this bounding rect and we will put i and then we will put dot x.", 'start': 7692.574, 'duration': 12.866}, {'end': 7717.746, 'text': 'so this is our first point, and then the second one will be sorry, not the point, the value, bounding rect, and we will put i, dot y,', 'start': 7705.44, 'duration': 12.306}, {'end': 7721.971, 'text': 'And here we are going to decrease the value.', 'start': 7719.068, 'duration': 2.903}, {'end': 7726.236, 'text': 'So we will reduce it by five so that it goes a little bit above.', 'start': 7722.131, 'duration': 4.105}, {'end': 7729.84, 'text': 'And we can remove this.', 'start': 7728.779, 'duration': 1.061}, {'end': 7730.921, 'text': "We don't want to draw it.", 'start': 7730, 'duration': 0.921}, {'end': 7734.081, 'text': 'so we can remove that.', 'start': 7732.901, 'duration': 1.18}], 'summary': 'Using bounding rect to position text slightly above, reducing y value by five.', 'duration': 83.092, 'max_score': 7650.989, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk7650989.jpg'}, {'end': 7832.939, 'src': 'embed', 'start': 7782.119, 'weight': 1, 'content': [{'end': 7782.479, 'text': 'And this here is 2.', 'start': 7782.119, 'duration': 0.36}, {'end': 7784.521, 'text': "Let's change this to plain.", 'start': 7782.479, 'duration': 2.042}, {'end': 7798.359, 'text': "Let's try it again.", 'start': 7797.739, 'duration': 0.62}, {'end': 7806.205, 'text': "Yeah, now it's much smaller, but it looks weird.", 'start': 7798.379, 'duration': 7.826}, {'end': 7807.626, 'text': "Let's make this one.", 'start': 7806.445, 'duration': 1.181}, {'end': 7813.11, 'text': "And let's make this one as well.", 'start': 7810.728, 'duration': 2.382}, {'end': 7819.314, 'text': 'There you go.', 'start': 7818.934, 'duration': 0.38}, {'end': 7825.776, 'text': "so now it's clear to read so you have rectangle triangle circle.", 'start': 7820.293, 'duration': 5.483}, {'end': 7832.939, 'text': 'so, but here the problem is that this is also rectangle and this is also rectangle, but this is in fact a square.', 'start': 7825.776, 'duration': 7.163}], 'summary': 'Adjustments made to 2 shapes, resulting in smaller size but distorted appearance. identified issue with shapes and corrected it.', 'duration': 50.82, 'max_score': 7782.119, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk7782119.jpg'}], 'start': 7047.525, 'title': 'Shape detection with opencv', 'summary': 'Delves into using opencv to identify contours, corner points, and shapes such as rectangles, circles, and triangles, as well as detecting faces in images using the viola jones method, providing a comprehensive understanding and practical application of shape detection techniques.', 'chapters': [{'end': 7255.111, 'start': 7047.525, 'title': 'Opencv contours and corners', 'summary': 'Discusses using opencv to identify contours and corner points, drawing shapes based on the points found, and approximating the type of shape based on the number of corner points, with examples of rectangles, circles, and triangles.', 'duration': 207.586, 'highlights': ['The chapter explains identifying contours and corner points using OpenCV, with examples of rectangles, circles, and triangles. It describes the process of identifying contours and corner points using OpenCV, and provides examples of rectangles, circles, and triangles.', 'Demonstrates drawing shapes based on the identified corner points and approximating the type of shape based on the number of corner points found. It demonstrates drawing shapes based on the identified corner points and approximating the type of shape based on the number of corner points found, with examples of rectangles, circles, and triangles.', 'Explains the process of finding the number of corner points and approximating the type of shape using the size of the corner points array. It explains the process of finding the number of corner points and approximating the type of shape using the size of the corner points array, providing specific examples of corner point counts for different shapes.']}, {'end': 7556.464, 'start': 7255.111, 'title': 'Finding shapes and bounding boxes', 'summary': 'Explains how to find the number of corner points to identify shapes such as triangles, squares, and rectangles, and then demonstrates how to draw bounding boxes around the identified shapes using the opencv library.', 'duration': 301.353, 'highlights': ['The chapter explains how to find the number of corner points to identify shapes such as triangles, squares, and rectangles. It mentions that if the algorithm finds three corner points, it identifies a triangle, and if it finds four corner points, it identifies a square or a rectangle.', "The chapter demonstrates how to draw bounding boxes around the identified shapes using the OpenCV library. It details the process of using the 'bounding rectangle' function to draw a bounding box around the contour and explains the distinction between 'bound rect' (a variable to store rectangle values) and 'bounding rect' (a function to find the bounding rectangle)."]}, {'end': 8078.121, 'start': 7557.225, 'title': 'Detecting shapes in an object', 'summary': 'Explains how to detect shapes such as rectangle, triangle, and circle within an object by analyzing the number of corners and aspect ratio, resulting in accurate classification and visual representation.', 'duration': 520.896, 'highlights': ['Explanation of how to classify shapes based on the number of corners, with three corners indicating a triangle, four corners indicating a rectangle, and more than four corners indicating a circle. The number of corners is used to determine the object type, with three corners representing a triangle, four corners representing a rectangle, and more than four corners representing a circle.', 'Demonstration of adjusting the position of text, using the bounding rectangle to place text slightly above the object, improving visual representation. The bounding rectangle is utilized to position the text slightly above the object, enhancing the visual representation and clarity.', 'Method for distinguishing between squares and rectangles by calculating the aspect ratio and setting a range to determine the object type. The aspect ratio is calculated by dividing the width by the height, with a range of 0.9 to 1.1 used to classify the object as a square if the aspect ratio falls within this range, otherwise, it is classified as a rectangle.']}, {'end': 8341.124, 'start': 8078.521, 'title': 'Detecting faces in an image', 'summary': 'Presents the process of detecting faces in an image using viola jones method of hard cascades and demonstrates the use of a pre-trained xml model to successfully load and detect faces with a sample image.', 'duration': 262.603, 'highlights': ['The chapter presents the process of detecting faces in an image using Viola Jones method of hard cascades The method of hard cascades, specifically Viola Jones method, is introduced as the technique for detecting faces in an image.', 'Demonstrates the use of a pre-trained XML model to successfully load and detect faces with a sample image The use of a pre-trained XML model, specifically the frontal face default dot XML, to load the hard cascade and successfully detect faces in the sample image is demonstrated.', 'Emphasizes the ease of the face detection process compared to detecting colors or contours The process of face detection is highlighted as easier compared to detecting colors or contours, emphasizing the simplicity of the technique.']}], 'duration': 1293.599, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk7047525.jpg', 'highlights': ['The chapter explains identifying contours and corner points using OpenCV, with examples of rectangles, circles, and triangles.', 'The chapter presents the process of detecting faces in an image using Viola Jones method of hard cascades.', 'Demonstrates drawing shapes based on the identified corner points and approximating the type of shape based on the number of corner points found.', 'Demonstrates the use of a pre-trained XML model to successfully load and detect faces with a sample image.', 'Method for distinguishing between squares and rectangles by calculating the aspect ratio and setting a range to determine the object type.']}, {'end': 10076.679, 'segs': [{'end': 8464.227, 'src': 'embed', 'start': 8426.099, 'weight': 0, 'content': [{'end': 8432.782, 'text': 'So what we can do is we can iterate through all the faces that we have detected, and then we can draw them one by one.', 'start': 8426.099, 'duration': 6.683}, {'end': 8439.245, 'text': 'So we will write here for integer i is equals to zero.', 'start': 8433.342, 'duration': 5.903}, {'end': 8444.908, 'text': 'Then i is less than faces dot size.', 'start': 8440.086, 'duration': 4.822}, {'end': 8457.641, 'text': 'and then we will write i plus, plus, and here we are going to write the code for rectangle.', 'start': 8446.952, 'duration': 10.689}, {'end': 8462.406, 'text': "so, if you remember, let's go to chapter number four.", 'start': 8457.641, 'duration': 4.765}, {'end': 8464.227, 'text': 'we have the rectangle example.', 'start': 8462.406, 'duration': 1.821}], 'summary': 'Iterate through detected faces to draw rectangles.', 'duration': 38.128, 'max_score': 8426.099, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk8426099.jpg'}, {'end': 8712.502, 'src': 'embed', 'start': 8678.926, 'weight': 2, 'content': [{'end': 8681.349, 'text': "so that's why we are going to use it.", 'start': 8678.926, 'duration': 2.423}, {'end': 8685.553, 'text': "so i'm going to have this is full intensity.", 'start': 8681.349, 'duration': 4.204}, {'end': 8688.537, 'text': 'let me decrease that a little bit.', 'start': 8685.553, 'duration': 2.984}, {'end': 8689.698, 'text': 'i think that is good enough.', 'start': 8688.537, 'duration': 1.161}, {'end': 8694.21, 'text': 'Okay, so we are going to have these different colors.', 'start': 8691.468, 'duration': 2.742}, {'end': 8697.492, 'text': 'So we have these markers, green, red, purple.', 'start': 8694.95, 'duration': 2.542}, {'end': 8699.293, 'text': 'So we are going to detect those.', 'start': 8698.072, 'duration': 1.221}, {'end': 8704.677, 'text': 'So the concept here is that we will first detect the colors using the HSV space.', 'start': 8700.074, 'duration': 4.603}, {'end': 8712.502, 'text': 'And once we have the color image, we are going to pass it to the contour method to find the contours where they are.', 'start': 8705.357, 'duration': 7.145}], 'summary': 'Using hsv space to detect colors and find contours in color images.', 'duration': 33.576, 'max_score': 8678.926, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk8678926.jpg'}, {'end': 10047.992, 'src': 'embed', 'start': 10019.603, 'weight': 1, 'content': [{'end': 10027.826, 'text': 'so this will be the bounding box at the top and using this value, we are going to get the tip of our.', 'start': 10019.603, 'duration': 8.223}, {'end': 10030.347, 'text': 'what do you call the marker?', 'start': 10027.826, 'duration': 2.521}, {'end': 10034.428, 'text': 'okay, instead of getting it from the contour, we are going to get it from the bounding box.', 'start': 10030.347, 'duration': 4.081}, {'end': 10037.269, 'text': 'it will be much easier that way.', 'start': 10034.428, 'duration': 2.841}, {'end': 10038.649, 'text': 'so how can we do that?', 'start': 10037.269, 'duration': 1.38}, {'end': 10040.67, 'text': 'we have the bounding box value.', 'start': 10038.649, 'duration': 2.021}, {'end': 10046.431, 'text': 'By the way, I made a mistake in.', 'start': 10042.767, 'duration': 3.664}, {'end': 10047.992, 'text': 'I checked it when I was recording.', 'start': 10046.431, 'duration': 1.561}], 'summary': 'Using the bounding box instead of the contour for marker positioning, making it much easier.', 'duration': 28.389, 'max_score': 10019.603, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk10019603.jpg'}], 'start': 8341.124, 'title': 'Image processing techniques', 'summary': 'Covers face detection, color detection, and mask contouring techniques, emphasizing the use of bounding boxes, hsv space for color detection, and dynamic color detection algorithms, enabling efficient image processing and object localization.', 'chapters': [{'end': 8425.599, 'start': 8341.124, 'title': 'Face detection and bounding boxes', 'summary': 'Explains the process of detecting faces and storing them using bounding boxes, along with parameters such as scale factor and minimum neighbors, while emphasizing the need for printing or displaying the detected faces.', 'duration': 84.475, 'highlights': ['Detecting faces using bounding boxes and storing them in a vector of rectangles The process involves creating a vector of rectangles to store the detected faces, utilizing the face cascade dot detect multi-scale method with specified parameters.', 'Explanation of parameters like scale factor and minimum neighbors for face detection The chapter explains the significance of parameters such as scale factor (1.1) and minimum neighbors (10) for face detection, with emphasis on customizability based on individual needs.', 'Importance of printing or displaying the detected faces Emphasizes the necessity of printing or displaying the detected faces to confirm their detection, highlighting the current absence of such feedback in the process.']}, {'end': 8825.234, 'start': 8426.099, 'title': 'Implementing color detection and drawing rectangles', 'summary': 'Discusses implementing color detection using the hsv space, finding contours, and drawing rectangles around detected faces, with a focus on developing a virtual painter project and webcam-based color detection.', 'duration': 399.135, 'highlights': ['The project involves developing a virtual painter, combining fundamental techniques learned in the course, such as color detection, contours, and shapes.', "The implementation includes using the HSV space to detect colors, finding contours to locate markers' positions, and drawing circles at those points.", 'Instructions are provided for iterating through detected faces and drawing rectangles around them, with a demonstration of the results.']}, {'end': 9646.849, 'start': 8826.624, 'title': 'Color detection algorithm', 'summary': 'Explains how to create a dynamic color detection algorithm using arrays and vectors, enabling the detection of multiple colors and the display of corresponding masks, resulting in efficient color picking and processing.', 'duration': 820.225, 'highlights': ['The algorithm allows for the detection of multiple colors by dynamically creating masks based on the values stored in arrays or vectors, providing flexibility in the number of colors detected. The algorithm uses a vector to store color values, allowing for the detection of multiple colors, with each color having its own mask. This provides flexibility in the number of colors detected, enabling efficient color picking.', "The chapter demonstrates the use of a color picker script with a webcam to detect and pick colors, enhancing the practical application and usage of the algorithm. The chapter introduces a color picker script, utilizing a webcam to detect and select colors, providing a practical demonstration of the algorithm's application and usage.", 'The algorithm allows for the display of masks corresponding to the detected colors, facilitating visual confirmation of the color detection process and potential noise removal. The algorithm displays masks for each detected color, enabling visual confirmation of the color detection process and identification of any potential noise, facilitating further refinement of the color detection.']}, {'end': 10076.679, 'start': 9647.93, 'title': 'Chapter 7: mask contour and bounding box', 'summary': 'Demonstrates the process of creating and manipulating masks, detecting contours, and drawing bounding boxes to achieve object localization in an image, aiming to improve the color detection functionality.', 'duration': 428.749, 'highlights': ['The chapter showcases the creation and manipulation of masks to detect different colors in an image, with the orange mask requiring further tuning. ', 'The process of adding and removing masks to detect specific colors in the image is explained, emphasizing the need for proper tuning for optimal results. ', 'The chapter details the requirement of finding points from the color masks to draw contours and the subsequent need to identify the contours for further processing. ', "The functionality of the 'get contours' function is discussed, including the need for tweaking and adjustments to optimize its performance in detecting contours within the masks. ", 'The process of drawing bounding boxes around the detected contours is elaborated as a method for object localization, with an emphasis on the importance of accurately identifying the bounding box for efficient marker localization. ']}], 'duration': 1735.555, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk8341124.jpg', 'highlights': ['The algorithm allows for the detection of multiple colors by dynamically creating masks based on the values stored in arrays or vectors, providing flexibility in the number of colors detected.', 'The chapter demonstrates the use of a color picker script with a webcam to detect and pick colors, enhancing the practical application and usage of the algorithm.', 'The process of drawing bounding boxes around the detected contours is elaborated as a method for object localization, with an emphasis on the importance of accurately identifying the bounding box for efficient marker localization.', 'The project involves developing a virtual painter, combining fundamental techniques learned in the course, such as color detection, contours, and shapes.', 'Detecting faces using bounding boxes and storing them in a vector of rectangles The process involves creating a vector of rectangles to store the detected faces, utilizing the face cascade dot detect multi-scale method with specified parameters.', 'The algorithm allows for the display of masks corresponding to the detected colors, facilitating visual confirmation of the color detection process and potential noise removal.']}, {'end': 10950.227, 'segs': [{'end': 10408, 'src': 'embed', 'start': 10328.365, 'weight': 0, 'content': [{'end': 10330.746, 'text': 'If the value is 1, it will draw green.', 'start': 10328.365, 'duration': 2.381}, {'end': 10333.407, 'text': 'Okay, so this is the idea.', 'start': 10332.006, 'duration': 1.401}, {'end': 10339.95, 'text': 'So, for each one of these, they will have the corresponding x and y and the color value.', 'start': 10333.747, 'duration': 6.203}, {'end': 10344.773, 'text': 'So that is the main idea.', 'start': 10342.632, 'duration': 2.141}, {'end': 10349.135, 'text': "and let's go to, let's go.", 'start': 10344.773, 'duration': 4.362}, {'end': 10349.575, 'text': 'where is it??', 'start': 10349.135, 'duration': 0.44}, {'end': 10352.06, 'text': 'yeah, in fine curves.', 'start': 10350.799, 'duration': 1.261}, {'end': 10359.225, 'text': 'so then we are going to append this or we are going to add it to our vector.', 'start': 10352.06, 'duration': 7.165}, {'end': 10361.307, 'text': "so let's write it here.", 'start': 10359.225, 'duration': 2.082}, {'end': 10373.836, 'text': 'so we will call it new points dot push back, push underscore back, and we will say that we want to push my points.', 'start': 10361.307, 'duration': 12.529}, {'end': 10386.455, 'text': 'oh, my points dot x, then my points points dot y.', 'start': 10373.836, 'duration': 12.619}, {'end': 10387.656, 'text': 'is it point or point?', 'start': 10386.455, 'duration': 1.201}, {'end': 10395.019, 'text': 'it is point, okay, and then we will write i.', 'start': 10387.656, 'duration': 7.363}, {'end': 10398.358, 'text': 'So I is basically the color.', 'start': 10396.758, 'duration': 1.6}, {'end': 10404.08, 'text': 'So because we are already getting one color one by one from my colors.', 'start': 10398.838, 'duration': 5.242}, {'end': 10408, 'text': 'So whatever color we are at, it will send it here.', 'start': 10404.74, 'duration': 3.26}], 'summary': 'Code processes data points and assigns corresponding colors based on values.', 'duration': 79.635, 'max_score': 10328.365, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk10328365.jpg'}, {'end': 10846.8, 'src': 'embed', 'start': 10805.872, 'weight': 4, 'content': [{'end': 10820.878, 'text': 'but okay, so we have pasted it here and then we are returning this new points, and then we can send these new points over here and there you go.', 'start': 10805.872, 'duration': 15.006}, {'end': 10824.291, 'text': 'So now it should work fine.', 'start': 10822.509, 'duration': 1.782}, {'end': 10832.018, 'text': 'What is the error here? Does it accept anything? It has new points and it needs the color values as well.', 'start': 10825.412, 'duration': 6.606}, {'end': 10837.984, 'text': 'So we need to send in the color values as well.', 'start': 10832.939, 'duration': 5.045}, {'end': 10840.306, 'text': "So let's run this.", 'start': 10839.205, 'duration': 1.101}, {'end': 10846.8, 'text': 'There you go.', 'start': 10846.38, 'duration': 0.42}], 'summary': 'Code pasted, new points returned, color values sent, and code run successfully.', 'duration': 40.928, 'max_score': 10805.872, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk10805872.jpg'}, {'end': 10927.236, 'src': 'embed', 'start': 10885.108, 'weight': 7, 'content': [{'end': 10887.449, 'text': 'so that is my bad.', 'start': 10885.108, 'duration': 2.341}, {'end': 10895.031, 'text': "so let's run it.", 'start': 10887.449, 'duration': 7.582}, {'end': 10898.932, 'text': 'and if I bring purple, there you go, I can draw with purple.', 'start': 10895.031, 'duration': 3.901}, {'end': 10904.117, 'text': 'if I bring green, can draw with green, perfect.', 'start': 10898.932, 'duration': 5.185}, {'end': 10909.182, 'text': 'now, if I wanted to add another color, I have already mentioned how you can do that.', 'start': 10904.117, 'duration': 5.065}, {'end': 10910.703, 'text': "let's stop this and run again.", 'start': 10909.182, 'duration': 1.521}, {'end': 10914.466, 'text': 'I want to show you how it works with two at the same time.', 'start': 10910.703, 'duration': 3.763}, {'end': 10918.549, 'text': 'so there you go like that.', 'start': 10914.466, 'duration': 4.083}, {'end': 10927.236, 'text': 'yeah, that looks beautiful.', 'start': 10918.549, 'duration': 8.687}], 'summary': 'Demonstrating drawing with different colors, including purple and green, and showcasing using two colors at the same time.', 'duration': 42.128, 'max_score': 10885.108, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk10885108.jpg'}], 'start': 10077.16, 'title': 'Drawing circles and virtual painter', 'summary': 'Explains how to draw accurate circles from bounding rectangles and create a virtual painter with purple and green colors using vectors, ensuring precise placement and color assignments.', 'chapters': [{'end': 10254.846, 'start': 10077.16, 'title': 'Drawing circle from bounding rect', 'summary': 'Explains how to derive the center point of a bounding rectangle to draw a circle from the center instead of the edge, ensuring accurate placement.', 'duration': 177.686, 'highlights': ['Explaining the process of finding the center point by dividing the width by 2, ensuring accurate placement of the circle. The process involves dividing the width by half to find the center point for accurate circle placement.', "Declaring a point and setting its x and y coordinates based on the bounding rectangle's dimensions to obtain the center point for drawing the circle. The x and y coordinates of the point are determined based on the bounding rectangle's dimensions to obtain the center point for drawing the circle.", 'Emphasizing the importance of returning the derived point as it signifies the location for drawing the circle. Highlighting the significance of returning the derived point as it represents the location for drawing the circle.']}, {'end': 10950.227, 'start': 10256.809, 'title': 'Drawing virtual painter', 'summary': 'Explains the process of storing points in a vector, assigning colors, and drawing them on an image using the new points and color values, illustrating how to create a virtual painter with purple and green colors.', 'duration': 693.418, 'highlights': ['The process of storing points in a vector and assigning colors to draw on an image is explained, along with the structure of the new points vector containing x, y, and color values. The new points vector is used to store x, y, and color values for drawing, with the color value determining whether it will be purple (0) or green (1).', "The method for drawing the stored points on the canvas is outlined, involving looping through the points and coloring them based on the color values. A function called 'drawOnCanvas' accepts the new points and color values as parameters, and a for loop is used to iterate through the points and color them accordingly before drawing them on the canvas.", 'A demonstration of drawing with different colors, specifically purple and green, is carried out, showing the successful implementation of the process. The successful drawing of points in purple and green colors is demonstrated, indicating the correct implementation of the process for drawing with different colors.']}], 'duration': 873.067, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk10077160.jpg', 'highlights': ['Explaining the process of finding the center point by dividing the width by 2, ensuring accurate placement of the circle.', 'The process involves dividing the width by half to find the center point for accurate circle placement.', "Declaring a point and setting its x and y coordinates based on the bounding rectangle's dimensions to obtain the center point for drawing the circle.", "The x and y coordinates of the point are determined based on the bounding rectangle's dimensions to obtain the center point for drawing the circle.", 'The process of storing points in a vector and assigning colors to draw on an image is explained, along with the structure of the new points vector containing x, y, and color values.', 'The new points vector is used to store x, y, and color values for drawing, with the color value determining whether it will be purple (0) or green (1).', 'The method for drawing the stored points on the canvas is outlined, involving looping through the points and coloring them based on the color values.', 'A demonstration of drawing with different colors, specifically purple and green, is carried out, showing the successful implementation of the process.']}, {'end': 11795.486, 'segs': [{'end': 11016.29, 'src': 'embed', 'start': 10950.687, 'weight': 1, 'content': [{'end': 10956.17, 'text': 'But the concept is very simple and, as you have seen, it is quite easy to implement,', 'start': 10950.687, 'duration': 5.483}, {'end': 10964.415, 'text': 'and all you have to do is you have to add another one in these two arrays or vectors, and then it will display you that color as well.', 'start': 10956.17, 'duration': 8.245}, {'end': 10970.399, 'text': 'So it is quite generic so you can keep adding more colors to it.', 'start': 10965.836, 'duration': 4.563}, {'end': 10990.433, 'text': 'In this project, we are going to create a document scanner.', 'start': 10987.611, 'duration': 2.822}, {'end': 10998.698, 'text': 'Now, if you have used any of the apps on your mobile phone that scan your documents, the idea behind this project will be the same.', 'start': 10991.013, 'duration': 7.685}, {'end': 11003.281, 'text': 'So the methodology will be pretty much same as to those apps.', 'start': 10999.059, 'duration': 4.222}, {'end': 11008.805, 'text': 'So it will be a very good project to practice real world applications.', 'start': 11004.062, 'duration': 4.743}, {'end': 11016.29, 'text': 'And it will include all the things that we have studied before so we can practice our skills.', 'start': 11010.026, 'duration': 6.264}], 'summary': 'Simple implementation to add more colors to document scanner project, following methodology of mobile scanning apps.', 'duration': 65.603, 'max_score': 10950.687, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk10950687.jpg'}, {'end': 11420.209, 'src': 'embed', 'start': 11375.051, 'weight': 0, 'content': [{'end': 11381.716, 'text': "So let's copy this and we will copy this and paste it here.", 'start': 11375.051, 'duration': 6.665}, {'end': 11385.398, 'text': "So let's run that.", 'start': 11384.597, 'duration': 0.801}, {'end': 11390.021, 'text': 'There you go.', 'start': 11389.54, 'duration': 0.481}, {'end': 11394.203, 'text': "So, okay, we need to change the name because it's overwriting it.", 'start': 11390.561, 'duration': 3.642}, {'end': 11397.866, 'text': "So let's say this is the dilation image.", 'start': 11394.664, 'duration': 3.202}, {'end': 11408.355, 'text': 'dilation. there we go.', 'start': 11398.991, 'duration': 9.364}, {'end': 11413.097, 'text': 'so this is our original image and this is the image dilation.', 'start': 11408.355, 'duration': 4.742}, {'end': 11414.217, 'text': 'so it looks really good.', 'start': 11413.097, 'duration': 1.12}, {'end': 11420.209, 'text': 'we can see that we have all the edges properly detected.', 'start': 11415.468, 'duration': 4.741}], 'summary': 'Image processing: successful edge detection and dilation.', 'duration': 45.158, 'max_score': 11375.051, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk11375051.jpg'}], 'start': 10950.687, 'title': 'Document scanner project creation', 'summary': 'Covers the creation of a document scanner project, including the addition of multiple colors to the display, and image processing techniques such as pre-processing, grayscale conversion, edge detection, and contour detection for image warping.', 'chapters': [{'end': 11016.29, 'start': 10950.687, 'title': 'Creating a document scanner project', 'summary': 'Discusses the process of creating a document scanner project, which is a real-world application and allows for the addition of multiple colors to the display.', 'duration': 65.603, 'highlights': ['The project involves creating a document scanner similar to the apps on mobile phones, providing a practical application for real-world practice and integration of previously studied skills.', 'The concept of adding more colors to the project for a generic and easily implementable feature, making it versatile and adaptable to various requirements.']}, {'end': 11795.486, 'start': 11017.222, 'title': 'Project image processing: pre-processing and contour detection', 'summary': 'Covers the process of creating a new project, copying from the previous one, scaling down an image, and implementing pre-processing steps including grayscale conversion, edge detection, and contour detection for image warping.', 'duration': 778.264, 'highlights': ['The chapter begins by creating a new project and copying from the previous one to work with an image and implement pre-processing steps, including grayscale conversion, edge detection, and contour detection for image warping. creating new project, copying from previous project, pre-processing steps, grayscale conversion, edge detection, contour detection, image warping', 'The process involves scaling down the image to half its size temporarily for easier management and later reverting to the original size for a good quality image. scaling down image, reverting to original size, image quality', 'The chapter details the steps of pre-processing the image, including grayscale conversion, adding blur, and using the Canny Edge Detector to find all the edges. pre-processing steps, grayscale conversion, blur addition, Canny Edge Detector', 'The contour detection involves finding the biggest contour assumed to be the A4 paper rectangle and warping the image based on these contours to achieve a top view. contour detection, finding biggest contour, image warping, achieving top view']}], 'duration': 844.799, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk10950687.jpg', 'highlights': ['The project involves creating a document scanner similar to the apps on mobile phones, providing a practical application for real-world practice and integration of previously studied skills.', 'The concept of adding more colors to the project for a generic and easily implementable feature, making it versatile and adaptable to various requirements.', 'The chapter details the steps of pre-processing the image, including grayscale conversion, adding blur, and using the Canny Edge Detector to find all the edges.', 'The contour detection involves finding the biggest contour assumed to be the A4 paper rectangle and warping the image based on these contours to achieve a top view.', 'The process involves scaling down the image to half its size temporarily for easier management and later reverting to the original size for a good quality image.']}, {'end': 14221.765, 'segs': [{'end': 12216.194, 'src': 'embed', 'start': 12188.645, 'weight': 2, 'content': [{'end': 12193.386, 'text': 'So we will add x plus y and that should give us the least value.', 'start': 12188.645, 'duration': 4.741}, {'end': 12200.04, 'text': 'and if we add x and y of this, it should give us the maximum value.', 'start': 12194.776, 'duration': 5.264}, {'end': 12201.942, 'text': 'so it will be the highest value.', 'start': 12200.04, 'duration': 1.902}, {'end': 12208.608, 'text': 'and these two, how we can find these two is by subtracting these values.', 'start': 12201.942, 'duration': 6.666}, {'end': 12216.194, 'text': 'so if we subtract, this, one should give us the highest value and this one should give us the lowest value.', 'start': 12208.608, 'duration': 7.586}], 'summary': 'Finding the highest and lowest values by adding and subtracting x and y.', 'duration': 27.549, 'max_score': 12188.645, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk12188645.jpg'}, {'end': 12747.382, 'src': 'embed', 'start': 12718.584, 'weight': 5, 'content': [{'end': 12729.231, 'text': 'so what we can do is we can push this to our new points, but we do not need to push the index, we do not need to push this.', 'start': 12718.584, 'duration': 10.647}, {'end': 12733.433, 'text': 'what we need to push are the actual points.', 'start': 12729.231, 'duration': 4.202}, {'end': 12742.439, 'text': 'so what we can do is we can get our original points from this index.', 'start': 12733.433, 'duration': 9.006}, {'end': 12747.382, 'text': 'okay, once we get these points now, we can push it to our new points.', 'start': 12742.439, 'duration': 4.943}], 'summary': 'Push actual points to new points, based on original index.', 'duration': 28.798, 'max_score': 12718.584, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk12718584.jpg'}, {'end': 14120.539, 'src': 'embed', 'start': 14050.392, 'weight': 3, 'content': [{'end': 14059.234, 'text': 'so we can write here i am right, and then we are going to give it a name.', 'start': 14050.392, 'duration': 8.842}, {'end': 14063.895, 'text': 'so the name will be our resources.', 'start': 14059.234, 'duration': 4.661}, {'end': 14068.057, 'text': 'resources slash,', 'start': 14063.895, 'duration': 4.162}, {'end': 14080.326, 'text': 'plates slash and then we will add a name so you can write a timestamp if you want a very unique name and if you want to write all the number plates.', 'start': 14068.057, 'duration': 12.269}, {'end': 14087.731, 'text': 'but for the sake of it, for simplicity, we are just going to write this zero and one as the name.', 'start': 14080.326, 'duration': 7.405}, {'end': 14092.474, 'text': 'so we will write this and then we will also write.', 'start': 14087.731, 'duration': 4.743}, {'end': 14100.471, 'text': 'at the end we will write dot png, so this will be the name, and then we need to give in our image.', 'start': 14092.474, 'duration': 7.997}, {'end': 14103.733, 'text': 'so we will write image crop.', 'start': 14100.471, 'duration': 3.262}, {'end': 14107.094, 'text': 'so we need to store that image.', 'start': 14103.733, 'duration': 3.361}, {'end': 14117.458, 'text': "so let's run this and we will open up our resources folder and in the plates.", 'start': 14107.094, 'duration': 10.364}, {'end': 14120.539, 'text': "right now we don't have anything because no number plates are detected.", 'start': 14117.458, 'duration': 3.081}], 'summary': 'Program writes unique names for images and saves in resources folder.', 'duration': 70.147, 'max_score': 14050.392, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk14050392.jpg'}, {'end': 14221.765, 'src': 'embed', 'start': 14199.781, 'weight': 0, 'content': [{'end': 14202.044, 'text': 'So this brings us to the end of our course.', 'start': 14199.781, 'duration': 2.263}, {'end': 14203.705, 'text': 'I hope you have learned something new.', 'start': 14202.164, 'duration': 1.541}, {'end': 14208.931, 'text': 'If you like the video, if you like the course, give it a thumbs up and leave some comments below.', 'start': 14204.146, 'duration': 4.785}, {'end': 14217.54, 'text': "And if you haven't subscribed yet, do subscribe, because I upload videos on a weekly basis and do turn on that notification as well,", 'start': 14209.451, 'duration': 8.089}, {'end': 14218.621, 'text': 'so you keep updated.', 'start': 14217.54, 'duration': 1.081}, {'end': 14221.765, 'text': "So that's it for today and I will see you in the next one.", 'start': 14218.982, 'duration': 2.783}], 'summary': 'End of course, encourage likes, comments, and subscriptions for weekly updates.', 'duration': 21.984, 'max_score': 14199.781, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk14199781.jpg'}], 'start': 11795.486, 'title': 'Image processing techniques', 'summary': 'Covers processing and drawing initial points, reordering points for rectangle detection, image warping for a4 paper, image cropping for sharper results, viola jones method for webcam plate detection, and vehicle number plate detection using hard cascade files.', 'chapters': [{'end': 12133.983, 'start': 11795.486, 'title': 'Processing and drawing initial points', 'summary': 'Covers the process of processing and drawing initial points, including creating a function to draw the points, using a for loop to iterate through the points, and modifying the size and color of the drawn objects.', 'duration': 338.497, 'highlights': ["Creating a function to draw the points The speaker discusses creating a new function called 'draw points' to visually represent the initial points on an image.", 'Using a for loop to iterate through the points The chapter demonstrates the use of a for loop to iterate through the points and draw circles based on their coordinates on the image.', 'Modifying the size and color of the drawn objects The speaker adjusts the size and color of the drawn circles and text to improve their visual representation on the image.']}, {'end': 12950.486, 'start': 12133.983, 'title': 'Reordering points for rectangle detection', 'summary': 'Discusses the process of reordering points for rectangle detection, ensuring that they are in the correct order (0, 1, 2, and 3) and explains the logic behind using summation and differentiation to achieve this.', 'duration': 816.503, 'highlights': ['Explaining the logic behind reordering points using summation and differentiation The speaker explains the process of reordering points using the summation of x and y coordinates to find the least and maximum values, as well as using subtraction to determine the highest and lowest values, ensuring that the points are in the correct order (0, 1, 2, and 3).', "Implementing the 'reorder' function to ensure correct point order The speaker discusses the creation of a new function called 'reorder,' which takes initial points and document points as input, ensuring that the final points are in the correct order (0, 1, 2, and 3) for rectangle detection.", 'Demonstrating the successful reordering of points for rectangle detection The speaker demonstrates the successful reordering of points, ensuring that they are in the correct order (0, 1, 2, and 3) for rectangle detection, as evidenced by the visual output.']}, {'end': 13278.786, 'start': 12950.626, 'title': 'Image warping for a4 paper', 'summary': 'Illustrates the process of warping an image to fit the dimensions of an a4 paper by using specified points and dimensions, and debugging the code for successful execution.', 'duration': 328.16, 'highlights': ['The process involves warping an image to fit A4 paper dimensions by defining specific points and dimensions, such as width and height, and debugging the code for successful execution. The chapter demonstrates the process of warping an image to fit the dimensions of an A4 paper by defining specific points and dimensions, such as width and height, and debugging the code for successful execution.', 'The A4 paper dimensions are adjusted by multiplying the width and height by 2, resulting in 420 pixels for width and 596 pixels for height. The A4 paper dimensions are adjusted by multiplying the width and height by 2, resulting in 420 pixels for width and 596 pixels for height.', 'Debugging the code involves correcting the points for the image warping, specifically changing the values from three and four to two and three. Debugging the code involves correcting the points for the image warping, specifically changing the values from three and four to two and three.']}, {'end': 13597.871, 'start': 13279.594, 'title': 'Image cropping for sharper results', 'summary': 'Demonstrates how to crop an image to achieve sharper results by defining the exact value to crop, ultimately resulting in a much cleaner and sharper final image.', 'duration': 318.277, 'highlights': ["By defining the exact value to crop using a rectangle, such as 5 pixels from each side, and then replacing it with a variable like 'crop value', the image can be cropped further, resulting in a much cleaner and sharper final image.", 'Replacing the crop value with a larger number like hundreds results in an image that is significantly cropped, demonstrating the flexibility of the cropping process.', 'The demonstration encourages trying the process with a video in real time, with the intention to later add the code on the website and provide sample footage for reference.', 'The project aims to teach how to detect vehicle number plates, crop these regions, and save them in an external file, offering real-world application of the cropping technique.']}, {'end': 13804.686, 'start': 13598.956, 'title': 'Viola jones method for webcam plate detection', 'summary': 'Outlines the process of modifying code from previous chapters to implement the viola jones method for webcam plate detection, including adding a new project, integrating webcam code, and replacing face detection with plate detection.', 'duration': 205.73, 'highlights': ['The method is based on the Viola Jones method used in chapter eight, involving modifying existing code for webcam plate detection.', 'The process includes adding a new project, integrating webcam code from chapter one, and replacing face detection with plate detection.', 'Specific changes involve replacing image with video capture, declaring matte image, adding a while loop, and modifying cascade file for plate detection.']}, {'end': 14221.765, 'start': 13804.686, 'title': 'Vehicle number plate detection', 'summary': 'Demonstrates implementing vehicle number plate detection using hard cascade files, including detecting and cropping number plates, saving the images, and discussing the possibility of creating custom hard cascade files.', 'duration': 417.079, 'highlights': ['The chapter demonstrates implementing vehicle number plate detection using hard cascade files, including detecting and cropping number plates, saving the images, and discussing the possibility of creating custom hard cascade files.', 'The process involves running the program to detect and crop number plates, adjusting parameters to optimize detection, and saving the cropped images with unique names for each plate.', 'The tutorial suggests the option of adding a timestamp to the saved images for uniqueness and mentions the availability of a complete video guide for creating custom hard cascade files.', 'The presenter encourages viewers to give a thumbs up, leave comments, subscribe, and turn on notifications for future updates on their weekly video uploads.']}], 'duration': 2426.279, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/2FYm3GOonhk/pics/2FYm3GOonhk11795486.jpg', 'highlights': ["Creating a function to draw the points The speaker discusses creating a new function called 'draw points' to visually represent the initial points on an image.", 'The chapter demonstrates the process of warping an image to fit the dimensions of an A4 paper by defining specific points and dimensions, such as width and height, and debugging the code for successful execution.', 'The process involves running the program to detect and crop number plates, adjusting parameters to optimize detection, and saving the cropped images with unique names for each plate.', 'The speaker explains the process of reordering points using the summation of x and y coordinates to find the least and maximum values, as well as using subtraction to determine the highest and lowest values, ensuring that the points are in the correct order (0, 1, 2, and 3).', "By defining the exact value to crop using a rectangle, such as 5 pixels from each side, and then replacing it with a variable like 'crop value', the image can be cropped further, resulting in a much cleaner and sharper final image.", 'The method is based on the Viola Jones method used in chapter eight, involving modifying existing code for webcam plate detection.']}], 'highlights': ['Learn opencv c++ in 4 hours with 3 projects, covering image basics, setting up opencv on visual studio and xcode, importing media, image processing, contour detection, shape detection, color detection, virtual painter, and document scanner creation.', 'The course is a follow-up to a highly successful OpenCV course with Python that has over a million views and 98.8% positive feedback.', 'The chapter outlines the steps to set up OpenCV in Visual Studio, including downloading OpenCV, configuring environment variables, creating a new Visual Studio C++ project, setting platform target to x64, adding directories and library directories, and testing the code with sample image files.', 'The chapter provides detailed guidance on adding directories and library directories in Visual Studio for OpenCV setup.', 'The chapter covers importing images, videos, and webcams in OpenCV, emphasizing the process of importing images and including the necessary header files for OpenCV.', 'The chapter covers the process of importing an image and video in Python using OpenCV. It includes the steps for displaying the image and iterating through the frames of a video.', 'The chapter covers importing images, videos, and webcams using C++ and OpenCV, with a focus on giving a delay of one millisecond, changing the camera ID for webcams, and excluding files from the project.', 'The tutorial covers the detailed explanation of defining image properties, including size, type (8 bits), and channels (BGR), which provides a fundamental understanding of image representation.', 'The chapter explains the use of Canny edge detector with adjustable threshold values, enabling the detection of prominent edges in an image.', 'The chapter demonstrates the process of converting an image to HSV space for easier color detection.', 'Covers creating track bars to adjust color values, enabling real-time color effect adjustment, and demonstrating color detection for object detection and tracking.', 'The chapter explains identifying contours and corner points using OpenCV, with examples of rectangles, circles, and triangles.', 'The algorithm allows for the detection of multiple colors by dynamically creating masks based on the values stored in arrays or vectors, providing flexibility in the number of colors detected.', 'Explaining the process of finding the center point by dividing the width by 2, ensuring accurate placement of the circle.', 'The project involves creating a document scanner similar to the apps on mobile phones, providing a practical application for real-world practice and integration of previously studied skills.', 'The process involves running the program to detect and crop number plates, adjusting parameters to optimize detection, and saving the cropped images with unique names for each plate.']}