+++ /dev/null
-#! /usr/bin/env python
-
-print "OpenCV Python version of drawing"
-
-# import the necessary things for OpenCV
-from opencv import cv
-from opencv import highgui
-
-# for making random numbers
-from random import Random
-
-def random_color (random):
- """
- Return a random color
- """
- icolor = random.randint (0, 0xFFFFFF)
- return cv.cvScalar (icolor & 0xff, (icolor >> 8) & 0xff, (icolor >> 16) & 0xff)
-
-if __name__ == '__main__':
-
- # some "constants"
- width = 1000
- height = 700
- window_name = "Drawing Demo"
- number = 100
- delay = 5
- line_type = cv.CV_AA # change it to 8 to see non-antialiased graphics
-
- # create the source image
- image = cv.cvCreateImage (cv.cvSize (width, height), 8, 3)
-
- # create window and display the original picture in it
- highgui.cvNamedWindow (window_name, 1)
- cv.cvSetZero (image)
- highgui.cvShowImage (window_name, image)
-
- # create the random number
- random = Random ()
-
- # draw some lines
- for i in range (number):
- pt1 = cv.cvPoint (random.randrange (-width, 2 * width),
- random.randrange (-height, 2 * height))
- pt2 = cv.cvPoint (random.randrange (-width, 2 * width),
- random.randrange (-height, 2 * height))
- cv.cvLine (image, pt1, pt2,
- random_color (random),
- random.randrange (0, 10),
- line_type, 0)
-
- highgui.cvShowImage (window_name, image)
- highgui.cvWaitKey (delay)
-
- # draw some rectangles
- for i in range (number):
- pt1 = cv.cvPoint (random.randrange (-width, 2 * width),
- random.randrange (-height, 2 * height))
- pt2 = cv.cvPoint (random.randrange (-width, 2 * width),
- random.randrange (-height, 2 * height))
- cv.cvRectangle (image, pt1, pt2,
- random_color (random),
- random.randrange (-1, 9),
- line_type, 0)
-
- highgui.cvShowImage (window_name, image)
- highgui.cvWaitKey (delay)
-
- # draw some ellipes
- for i in range (number):
- pt1 = cv.cvPoint (random.randrange (-width, 2 * width),
- random.randrange (-height, 2 * height))
- sz = cv.cvSize (random.randrange (0, 200),
- random.randrange (0, 200))
- angle = random.randrange (0, 1000) * 0.180
- cv.cvEllipse (image, pt1, sz, angle, angle - 100, angle + 200,
- random_color (random),
- random.randrange (-1, 9),
- line_type, 0)
-
- highgui.cvShowImage (window_name, image)
- highgui.cvWaitKey (delay)
-
- # init the list of polylines
- nb_polylines = 2
- polylines_size = 3
- pt = [0,] * nb_polylines
- for a in range (nb_polylines):
- pt [a] = [0,] * polylines_size
-
- # draw some polylines
- for i in range (number):
- for a in range (nb_polylines):
- for b in range (polylines_size):
- pt [a][b] = cv.cvPoint (random.randrange (-width, 2 * width),
- random.randrange (-height, 2 * height))
- cv.cvPolyLine (image, pt, 1,
- random_color (random),
- random.randrange (1, 9),
- line_type, 0)
-
- highgui.cvShowImage (window_name, image)
- highgui.cvWaitKey (delay)
-
- # draw some filled polylines
- for i in range (number):
- for a in range (nb_polylines):
- for b in range (polylines_size):
- pt [a][b] = cv.cvPoint (random.randrange (-width, 2 * width),
- random.randrange (-height, 2 * height))
- cv.cvFillPoly (image, pt,
- random_color (random),
- line_type, 0)
-
- highgui.cvShowImage (window_name, image)
- highgui.cvWaitKey (delay)
-
- # draw some circles
- for i in range (number):
- pt1 = cv.cvPoint (random.randrange (-width, 2 * width),
- random.randrange (-height, 2 * height))
- cv.cvCircle (image, pt1, random.randrange (0, 300),
- random_color (random),
- random.randrange (-1, 9),
- line_type, 0)
-
- highgui.cvShowImage (window_name, image)
- highgui.cvWaitKey (delay)
-
- # draw some text
- for i in range (number):
- pt1 = cv.cvPoint (random.randrange (-width, 2 * width),
- random.randrange (-height, 2 * height))
- font = cv.cvInitFont (random.randrange (0, 8),
- random.randrange (0, 100) * 0.05 + 0.01,
- random.randrange (0, 100) * 0.05 + 0.01,
- random.randrange (0, 5) * 0.1,
- random.randrange (0, 10),
- line_type)
-
- cv.cvPutText (image, "Testing text rendering!",
- pt1, font,
- random_color (random))
-
- highgui.cvShowImage (window_name, image)
- highgui.cvWaitKey (delay)
-
- # prepare a text, and get it's properties
- font = cv.cvInitFont (cv.CV_FONT_HERSHEY_COMPLEX,
- 3, 3, 0.0, 5, line_type)
- text_size, ymin = cv.cvGetTextSize ("OpenCV forever!", font)
- pt1.x = (width - text_size.width) / 2
- pt1.y = (height + text_size.height) / 2
- image2 = cv.cvCloneImage(image)
-
- # now, draw some OpenCV pub ;-)
- for i in range (255):
- cv.cvSubS (image2, cv.cvScalarAll (i), image, None)
- cv.cvPutText (image, "OpenCV forever!",
- pt1, font, cv.cvScalar (255, i, i))
- highgui.cvShowImage (window_name, image)
- highgui.cvWaitKey (delay)
-
- # wait some key to end
- highgui.cvWaitKey (0)