AI_DL_Assignment / 5. OpenCV Tutorial - Learn Classic Computer Vision & Face Detection (OPTIONAL) /24. Mini Project 1 - Live Sketch App - Turn your Webcam Feed Into A Pencil Drawing.srt
Prince-1's picture
Add files using upload-large-folder tool
17e2002 verified
1
00:00:00,660 --> 00:00:01,060
High.
2
00:00:01,110 --> 00:00:03,450
OK so you've made it to a first mini project.
3
00:00:03,570 --> 00:00:07,060
This is using a webcam to create a Live sketch of yourself.
4
00:00:07,110 --> 00:00:10,190
So let's quickly run this app and see what it does.
5
00:00:10,200 --> 00:00:12,860
So this is me here talking in my bedroom here.
6
00:00:13,570 --> 00:00:20,400
This is me weaving around and this is me here with my cell phone being charged at the moments you can
7
00:00:20,400 --> 00:00:21,290
actually see the corner.
8
00:00:21,300 --> 00:00:22,850
It's quite cool.
9
00:00:22,910 --> 00:00:24,200
This is a sketch.
10
00:00:24,840 --> 00:00:26,490
It works pretty well generally.
11
00:00:26,520 --> 00:00:31,550
I mean you can play with the problem is in a app to get it better coding or better to do with this.
12
00:00:31,560 --> 00:00:34,260
So let's see exactly how this is implemented.
13
00:00:34,920 --> 00:00:35,280
OK.
14
00:00:35,310 --> 00:00:36,390
So here's a code.
15
00:00:36,480 --> 00:00:37,970
Well let's get you up.
16
00:00:38,040 --> 00:00:43,140
It's fairly basic although we do introduce some new concepts here and the first thing we introduce is
17
00:00:43,140 --> 00:00:48,220
creating a function that will open C-v all image processing function called sketchier.
18
00:00:48,660 --> 00:00:54,720
If you're unfamiliar with functions imagine a function being basically a group of commands here that
19
00:00:54,720 --> 00:00:58,410
we call we and we run the sketch commander over here.
20
00:00:58,440 --> 00:01:03,270
So a sketch actually does a bunch of processes here and returns an image for us.
21
00:01:03,270 --> 00:01:07,660
So it actually combines multiple layers of image processing and this Rutins a final output.
22
00:01:07,660 --> 00:01:08,570
So it's pretty cool.
23
00:01:11,210 --> 00:01:15,680
The second thing I want to introduce you to is actually using the webcam now using a webcam and you
24
00:01:15,680 --> 00:01:17,590
can see these is actually quite simple.
25
00:01:17,840 --> 00:01:24,230
What we do here we actually run this initialising video capture function here and it basically creates
26
00:01:24,230 --> 00:01:30,800
an object called a cap cap here can be read now which is a cap that read here and what it does it pulls
27
00:01:30,800 --> 00:01:32,710
an image from the webcam.
28
00:01:32,720 --> 00:01:38,210
However if you run it out of a loop it just pulls the image at a time and nothing else.
29
00:01:38,210 --> 00:01:43,880
So what you want to do is have cap dot reader running in a loop and this loop runs continuously pulling
30
00:01:43,880 --> 00:01:45,480
images from the webcam.
31
00:01:45,500 --> 00:01:52,760
It should be pulling a film right off your webcam which is usually Tuti freedoms a second sometimes
32
00:01:52,760 --> 00:01:54,400
it's more than VMS's it's less.
33
00:01:54,420 --> 00:02:02,510
But generally it's either between 24 and 60 and kept it read it was written Regt read is basically just
34
00:02:02,510 --> 00:02:04,370
a boolean that defines true or false.
35
00:02:04,370 --> 00:02:06,440
What it does was run successfully.
36
00:02:06,440 --> 00:02:12,530
However the real meat of this captain read function is frame Freemans the actual image captured from
37
00:02:12,530 --> 00:02:20,450
the webcam and Freemans what we pass to a sketch function here and lastly just two lines of code here
38
00:02:21,020 --> 00:02:27,500
basically tells us that it would be loop only breaks when we pressed Enter key so CB2 that we had previously
39
00:02:27,500 --> 00:02:33,950
was a zero before took any key in I'm just introducing No we can actually define we'll wait for special
40
00:02:33,950 --> 00:02:35,040
commands.
41
00:02:35,060 --> 00:02:40,560
So in this case when you press the Enter key a routine key it breaks this loop.
42
00:02:40,610 --> 00:02:45,710
One important thing to remember when using a webcam is that we need to do captive release Ottaway is
43
00:02:45,720 --> 00:02:51,740
again what happens in open Sivy is that it hangs and actually locks up your terminal and you have to
44
00:02:51,740 --> 00:02:53,990
go to Kunaal restart Suranne it again.
45
00:02:55,760 --> 00:02:56,010
OK.
46
00:02:56,020 --> 00:02:59,240
So let's take a look at a function here we'd find a sketch.
47
00:02:59,320 --> 00:03:04,330
This is actually doing to both have to work and where we keep all the image processing open CV stuff
48
00:03:04,330 --> 00:03:05,220
here.
49
00:03:05,230 --> 00:03:06,910
And it's actually a very simple function.
50
00:03:06,910 --> 00:03:08,150
So let's take a look here.
51
00:03:08,440 --> 00:03:12,560
So what it does we tear the frame from a webcam here.
52
00:03:12,640 --> 00:03:19,100
It's a sketch we didn't convert it into grayscale image and then we apply a glossy and blue to that
53
00:03:19,150 --> 00:03:20,260
image here.
54
00:03:20,260 --> 00:03:27,250
The gospel is basically to just smooth and clean up any noise in the image because webcams aren't very
55
00:03:27,700 --> 00:03:29,500
high quality in most cases.
56
00:03:29,500 --> 00:03:31,430
So they do produce a lot of noise.
57
00:03:31,510 --> 00:03:37,920
So once that image is blurred we passed that to a county as your member canny edge direction algorithm
58
00:03:38,720 --> 00:03:40,690
and is it a Tressel's we set here.
59
00:03:40,890 --> 00:03:41,760
These truffles.
60
00:03:41,850 --> 00:03:45,320
Please feel free to edit and play with them as you as you see fit.
61
00:03:45,450 --> 00:03:49,150
They can they can give you different results in different lighting conditions.
62
00:03:49,230 --> 00:03:52,560
These are what I found optimal to my TS and my lighting conditions.
63
00:03:52,560 --> 00:03:55,380
But you may find something different.
64
00:03:55,380 --> 00:04:01,290
And once we have county you remember County was a black background with white edges.
65
00:04:01,590 --> 00:04:05,500
However I was trying to illustrate more like a pencil and people type thing.
66
00:04:05,780 --> 00:04:12,230
So which is why I use fresh binary invis to invert and Threshold the county edges.
67
00:04:12,360 --> 00:04:16,240
Now we could have to use some other inverse functions here.
68
00:04:16,260 --> 00:04:20,970
And you will remember we could have used a bitwise NOT doing it.
69
00:04:20,970 --> 00:04:25,940
However the reason I use the Trishul function here is that we can actually play with this here.
70
00:04:25,980 --> 00:04:27,760
This was a Trishul parameter.
71
00:04:28,080 --> 00:04:30,220
So it gives you some more flexibility here.
72
00:04:30,600 --> 00:04:37,190
And what this does here this creates a mask and then this function returns mass back to back here.
73
00:04:37,500 --> 00:04:44,230
So it does actually block of code here actually is a variable itself that's true to and from and from
74
00:04:44,230 --> 00:04:48,790
the sketch function which is how it's we can show it to him Show function.
75
00:04:49,590 --> 00:04:55,980
So that's basically our lives sketching up something very simple and so you can actually play with it
76
00:04:55,980 --> 00:04:56,760
on your own.
77
00:04:56,970 --> 00:05:02,050
Feel free to actually add more effects as you see fit.
78
00:05:02,060 --> 00:05:02,510
Thanks.