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.