Can't find what you need? Try here:
Loading

Saturday, April 11, 2009

Opencv example

Here's a short example showing how to use openCV with Python.It reads an image from a file, displays the image, the Harris corner detector on that image and the Canny edge image:
(save this in a file named tmp.py and run with: python tmp.py )

import Image
import os
import sys
from opencv.cv import *
from opencv.highgui import *

def analyzeImage(f,name):

    im=Image.open(f)
    try:
      if(im.size[0]==1 or im.size[1]==1):
        return

      print (name+' : '+str(im.size[0])+','+ str(im.size[1]))
      le=1
      if(type(im.getpixel((0,0)))==type((1,2))):
        le=len(im.getpixel((0,0)))

      gray = cvCreateImage (cvSize (im.size[0], im.size[1]), 8, 1)
      edge1 = cvCreateImage (cvSize (im.size[0], im.size[1]), 32, 1)
      edge2 = cvCreateImage (cvSize (im.size[0], im.size[1]), 8, 1)
      edge3 = cvCreateImage (cvSize (im.size[0], im.size[1]), 32, 3)

      for h in range(im.size[1]):
        for w in range(im.size[0]):
          p=im.getpixel((w,h))
          if(type(p)==type(1)):
            gray[h][w] = im.getpixel((w,h))

          else:
            gray[h][w] = im.getpixel((w,h))[0]


      cvCornerHarris(gray,edge1,5,5,0.1)
      cvCanny(gray,edge2,20,100)

      cvNamedWindow("win")
      cvShowImage("win", gray);
      cvNamedWindow("win2")
      cvShowImage("win2", edge1);
      cvNamedWindow("win3")
      cvShowImage("win3", edge2);

      cvWaitKey()

      f.close()

    except Exception,e:
      print e
      print 'ERROR: problem handling '+ name


f = open(sys.argv[1],'r')
analyzeImage(f,sys.argv[1])

3 comments:

  1. What is the Image library import? It doesn't come with opencv 2.0 python bindings.

    ReplyDelete
  2. The Image library is part of the Python Imaging Library (PIL). see here:
    http://www.pythonware.com/products/pil/
    I use it because it is more flexible than opencv's image reading capabilities

    ReplyDelete
  3. Is it run tmp.py image_file_name> ?

    ReplyDelete