Thursday 30 June 2016

TUT4: Capture a picture with your laptop camera

This tutorial is all about how to capture an image using built in laptop camera. We will write a simple and clean code to perform this task.

NOTE: Before you go through this tutorial, please make sure you have read the previous tutorial on how to start camera using Python and OpenCV otherwise you might find this tutorial a bit difficult to understand.

  • Today, you will learn a new keyword cv2.write() that will be used to capture the image.
  • After this tutorial, you will be able to click your pictures with your own self made Python code. :)
Let's see how to do this:

1) Import necessary libraries:
    
    import cv2
    import numpy as np

2) Initialise the camera object
    
    cap = cv2.VideoCapture(0)

3) while(True):                                                      #line1  
            ret, frame = cap.read()                             #line2
            cv2.imshow('cam', frame)                          #line3
            if cv2.waitKey(1) == ord('c'):                  #line4
                    cv2.imwrite('mypic.jpg', frame)          #line5
            elif cv2.waitKey(1) == 27:                           #line6
                    break                                                  #line7

     You must be familar with #line1, #line2, #line3. If not please visit the previous tutorial.
In #line4 and #line5, we are checking for a key press 'c'. If the user presses the 'c' key on their keyboard then the current frame will be saved as a picture named "mypic.jpg" in the same folder where program is saved. The function imwrite() is used for this operation which simply takes two arguments i.e. filename and frame that you need to save.
In #line6, we see a new keyword "elif". In C or Java, we write this as "else if". Python makes it shorter by a word and makes it "elif" so its same as "else if". The condition that is checked in elif is whether "ESC" key is pressed or not(27 is ASCII for ESC key). If the "ESC" key is pressed and hold for about a second, break is encountered and we come out of loop.
One more thing worth noticing in #line6 is the use of "ord('c')". In simple words, "ord('c')" returns back the ASCII value of the character passed to it. Here 'c' is passed to it so we get 99(ASCII for 'c') as return value which is then checked with waitKey(1). If 'c' is pressed and hold for about a second, imwrite() function creates a new image file and saves the frame in that file.

4) Release the camera object and destroy all windows.

     cap.release()
     cv2.destroyAllWindows()


*************************************************
Here's the summed up code:

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while(True):
     ret, frame = cap.read()

     cv2.imshow('cam',frame)

     if(cv2.waitKey(1) == ord('c')):
           cv2.imwrite('mypic.jpg', frame)
     elif(cv2.waitKey(1) == 27):
           break

cap.release()
cv2.destroyAllWindows()

*************************************************
OUTPUT:



In the output GIF, when I hold and pressed 'c' for about a second, the picture named mypic.jpg appears in the folder where program in stored.

So that's it for this tutorial. In the next tutorial, we will see how to play a video file using your own code written in Python and OpenCV.

Any queries, please ask in comments.
Thank you




Monday 27 June 2016

TUT3: Starting laptop Camera using OpenCV and Python

Does your laptop has a Camera? Ever wondered how it starts. What's the type of code that works behind when you start your laptop camera. If not, this tutorial is for you.

We will be using some new terms today like cv2.VideoCapture(0) , cap.read() etc.

So lets see how to start the camera on laptop:

1) import cv2
    import numpy as np

2) cap = cv2.VideoCapture(0)

    Here 'cap' is a VideoCapture object. It has an argument. This argument can be either device index       or the name of a video file. Since here we are concerned with camera device so we pass device           index. I am passing '0' as the argument since the built-in webcam is mostly accessed by passing '0'.     If your system has external webcam then you can access it by typing index > '0' i.e. '1' or bigger.         Remember, this line of code will be used as it is in all the camera or video related programs.

3) Attention!! We are going to see how to use while loop in python:

    while(True):                                            #line 1
           ret, frame = cap.read()                     #line 2
           cv2.imshow('cam', frame)               #line 3
           if cv2.waitKey == 27:                     #line 4
                   break                                       #line 5
 
    cap.realease()
    cv2.destroyAllWindows()

   Remember there are no curly braces in python.  Scope is implemented using the Colon and indentation. Colon defines that following indented lines are within the while loop.
   As you can see #line 2, #line 3 and #line 4 do not start from beginning of line. There is a tab space before each of them. This indentation means they are inside of while loop and one iteration of this loop executes these lines once. Hence we need to take care of indentation. Similarly #line 5 is inside the if condition.

NOTE: When you are writing python code in IDLE(An IDE for python), the editor will automatically indent the lines once you type #line 1 and press Enter.

cap.read() will read the frame from the camera and store it in 'frame'. 'ret' will store true or false value depending on whether the frame was read or not.  cv2.imshow('cam', frame) will show the frame on to the window named 'cam'.

"if cv2.waitKey(1) == 27" holds the window for 1 millisecond and then check if the "ESC" key is pressed("27 is ASCII for ESC"). If the "ESC" key is pressed then 'break' is encountered and we are out of loop. This will also close the camera as cap.release() is executed next.

After you have written the code press CTRL+S to save the code to a desired location. Remember to save the file using .py extension. After this, press F5 to run the code while your code is open in IDLE.

**********************************************************
Here is the summed up code:

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while(1):
     ret, frame = cap.read()
     cv2.imshow('video', frame)
     if cv2.waitKey(1) == 27:
           break

cap.release()  
cv2.destroyAllWindows()
**********************************************************

OUTPUT:
 


So i hope that you have learned how to start your camera using Python and OpenCV.
That's it for this tutorial. In the next tutorial, we will see how to capture an image using in-built laptop camera. 
Any queries please ask in comments.
See you in next tutorial.


Saturday 25 June 2016

TUT2: Loading an image with Resizable Window

Hello everyone,

In the previous post we saw how to load an image. In this tutorial, we are going to see how to load an image in Resizable Window. This means that you will be able to resize the image as you want.

Let's start:

1) First import the necessary libraries:

    import cv2
    import numpy as np

2) Read the image:

    img = cv2.imread('hamster.jpg')

3) Create a window:

    cv2.namedWindow('image', cv2.WINDOW_NORMAL)

    Here the function namedWindow('window name', flag) is used to create a window. This window can be later used to show an image. The second parameter 'flag' refers to the type of window you want to create. These flags are given below:
  
           i) cv2.WINDOW_NORMAL :-  Resizable window
          ii) cv2.WINDOW_AUTOSIZE  :- Non-Resizable window. Program automatically assigns a                                                                         size.

There is one more flag that we will see later.

4) Displaying the image:

    cv2.imshow('image',img)

    Remember to use the same Window name in imshow() that you have created using                             namedWindow().

5) Hold the window : 

    cv2.waitKey(0)
    cv2.destroyAllWindows()

    cv2.waitKey(0) waits for a key press indefinitely. Once you press any key, the window closes.
    cv2.destroyAllWindows() closes any opened window.

After you have written the code press CTRL+S to save the code to a desired location. Remember to save the file using .py extension. After this, press F5 to run the code while your code is open in IDLE.
******************************************
Here's the summed up program:

Code:

import cv2
import numpy as np

img=cv2.imread('hamster.jpg')     #by default the second parameter is cv2.IMREAD_COLOR

cv2.namedWindow('image',cv2.WINDOW_NORMAL)        #allowing window to be resizable

cv2.imshow('image',img)

cv2.waitKey(0)
cv2.destroyAllWindows()

****************************************
Output:
  

As you can see I can now resize the displayed image.

That's it for this tutorial. If you have any doubt, you can ask me in the comments section.

ThankYou.

Thursday 23 June 2016

Configuring Python with OpenCV and Numpy

This post contains instuctions to install

• Python
• Numpy
• OpenCV

Please follow the steps given below:
1. Python
        • Download Python from the following link:
        • https://www.python.org/ftp/python/2.7.6/python-2.7.6.msi
        • Double-click the downloaded file to commence installation
        • In order to configure the environment variables,
        ◦ Right-click on 'My Computer'
        ◦ Click on 'Properties'
        ◦ Click on 'Advanced System Settings' to open the 'System Properties' dialog
           box
        ◦ Under 'System Properties', select the 'Advanced' tab
        ◦ Click on 'Environment Variables'
        ◦ Under 'system Variables', search for the variable 'Path'
        ◦ Add 'C:/Python27;C:/Python27/Scripts;' at the start of the textbox
        ◦ Click on 'OK'
        • In order to verify your installation,
        ◦ Open Command Prompt and type 'python' and press enter
        ◦ You should see the following prompt:

 2. Numpy
        • Download Numpy from the following link:
        • http://sourceforge.net/projects/numpy/files/NumPy/1.10.2/numpy-1.10.2-win32-superpack-                 python2.7.exe/download
        • Double-click the downloaded file to commence installation
        • In order to verify your installation,
        ◦ Open Command Prompt and type 'python' and press Enter
        ◦ At the python prompt, type 'import numpy' and press Enter
        ◦ You should see the following prompt:

3. OpenCV
        • Download OpenCV from the following link:
        • http://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.0.0/opencv-                                         3.0.0.exe/download
        • Double-click the downloaded file to commence installation
        • Navigate to the folder opencv/build/python/2.7
        • Copy the file cv2.pyd to C:/Python27/lib/site-packages
        • In order to verify your installation,
        ◦ Open Command Prompt and type 'python' and press Enter
        ◦ At the python prompt, type 'import cv2' and press Enter
        ◦ You should see the following prompt:



Thats all for this post. Any queries, please ask in comments.
Thank You.

First Tutorial : Reading an Image

Hello everyone,
       This post is all about how to get started with OpenCV and python. We will start with very basic operation i.e "READING AN IMAGE". 

NOTE : I assume you have downloaded the required software to get started. If not, please click here to download them. I strongly recommend you to go through this post [click here] before attempting this program. There is an IDE called "IDLE" for python that we will be using to write our programs.

So let's start line by line.

1)Open IDLE(IDE for Python). First you need to import OpenCV library. To do this, type:

import cv2

2) Now import numpy library. It is used for arithmetic manipulation of images. We will use it in almost all our programs so remember to add this line in every program:

import numpy as np

Note : as np means we are giving numpy a short name np so that it is easy to use in programs. It has no other relevance than that.


3) We will now read an image using imread('imagename.extension') function provided by OpenCV library :

img  =  cv2.imread("hamster.jpg")

This line reads the image named "hamster.jpg" and stores it in the variable img. The image must be in the same folder as the program or else you need to give full path of the image. There is also a second parameter that can be passed to imread method to change the mode of image(grayscale, color, true color) but we will see that later.

4) Displaying an image:

cv2.imshow('img1', img)

Here is another method imshow('window name', image variable) which is used to show an image in a window named 'img1' as specified in the line of code above.

5) Hold the window

cv2.waitKey(0)
cv2.destroyAllWindows()

This is a special function which holds the screen for the number of milliseconds mentioned as parameter. For ex. cv2.waitKey(1000) would hold a window for 1 second. cv2.waitKey(0) will hold the window indefinitely until user closes the window himself. This can be used in more interesting ways that we will see later. cv2.destroyAllWindows(), as the name suggest destroy all the windows that were opened in a particular program. These two lines of code should be added to almost all the program we are going to do.

So that's the end of our first program. I am summing up whole program together. Here it goes:
After you have written the code press CTRL+S to save the code to a desired location. Remember to save the file using .py extension. After this, press F5 to run the code while your code is open in IDLE.

*************************************** Code:

import cv2
import numpy as np
                                                                    #this is a comment 
img = cv2.imread('hamster.jpg')                 #loads an image into img

cv2.imshow('img1', img)                            #display the image

cv2.waitKey(0)                                           #waits indefinitely
cv2.destroyAllWindows()                          #closes all the open windows

***************************************
Output:Output of the above code is an image. In my case it's a  hamster's image. Here it is: 














Image Source: smallanimalchannel.com

I hope you understood this basic tutorial on reading an image using OpenCV and Python.

Any queries please ask in the comments section or mail me at kumarankit0411@gmail.com

Thankyou.


Monday 20 June 2016

Installing OpenCV, Python and Numpy

Hello pals,

You will need to download the below mentioned softwares before proceeding with learning of OpenCV with Python:

1) OpenCV 3.0 ------- Download here
2) Python 2.7 ------- Download here
3) Numpy 1.10 ------- Download here

I have checked the links and they are working. If they do not work, Please comment and I will correct them.
NOTE: I strongly recommend you to go through this post [click here] . This post contains information on how to configure these three softwares. There is an IDE called "IDLE" for python that we will be using to write our programs.

Any queries, please ask in comments.

Thank you