162 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
#! /usr/bin/env octave
 | 
						|
 | 
						|
printf("OpenCV Octave version of drawing\n");
 | 
						|
 | 
						|
## import the necessary things for OpenCV
 | 
						|
cv;
 | 
						|
highgui;
 | 
						|
 | 
						|
function ret=random_color ()
 | 
						|
  ret = CV_RGB(int32(rand()*255), int32(rand()*255), int32(rand()*255));
 | 
						|
endfunction
 | 
						|
 | 
						|
 | 
						|
## 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);
 | 
						|
 | 
						|
## draw some lines
 | 
						|
for i=0:number-1,
 | 
						|
  pt1 = cv.cvPoint (int32(rand() * 2 * width - width),
 | 
						|
                    int32(rand() * 2 * height - height));
 | 
						|
  pt2 = cv.cvPoint (int32(rand() * 2 * width - width),
 | 
						|
                    int32(rand() * 2 * height - height));
 | 
						|
  cv.cvLine (image, pt1, pt2,
 | 
						|
             random_color (),
 | 
						|
             int32(rand() * 10),
 | 
						|
             line_type, 0);
 | 
						|
  
 | 
						|
  highgui.cvShowImage (window_name, image);
 | 
						|
  highgui.cvWaitKey (delay);
 | 
						|
endfor
 | 
						|
 | 
						|
## draw some rectangles
 | 
						|
for i=0:number-1,
 | 
						|
  pt1 = cv.cvPoint (int32(rand() * 2 * width - width),
 | 
						|
                    int32(rand() * 2 * height - height));
 | 
						|
  pt2 = cv.cvPoint (int32(rand() * 2 * width - width),
 | 
						|
                    int32(rand() * 2 * height - height));
 | 
						|
  cv.cvRectangle (image, pt1, pt2,
 | 
						|
                  random_color (),
 | 
						|
                  int32(rand() * 10 - 1),
 | 
						|
                  line_type, 0);
 | 
						|
  
 | 
						|
  highgui.cvShowImage (window_name, image);
 | 
						|
  highgui.cvWaitKey (delay);
 | 
						|
endfor
 | 
						|
 | 
						|
## draw some ellipes
 | 
						|
for i=0:number-1,
 | 
						|
  pt1 = cv.cvPoint (int32(rand() * 2 * width - width),
 | 
						|
                    int32(rand() * 2 * height - height));
 | 
						|
  sz = cv.cvSize (int32(rand() * 200),
 | 
						|
                  int32(rand() * 200));
 | 
						|
  angle = rand() * 1000 * 0.180;
 | 
						|
  cv.cvEllipse (image, pt1, sz, angle, angle - 100, angle + 200,
 | 
						|
                random_color (),
 | 
						|
                int32(rand() * 10 - 1),
 | 
						|
                line_type, 0);
 | 
						|
  
 | 
						|
  highgui.cvShowImage (window_name, image);
 | 
						|
  highgui.cvWaitKey (delay);
 | 
						|
endfor
 | 
						|
 | 
						|
## init the list of polylines
 | 
						|
nb_polylines = 2;
 | 
						|
polylines_size = 3;
 | 
						|
pt = cell(1, nb_polylines);
 | 
						|
for a=1:nb_polylines,
 | 
						|
  pt{a} = cell(1,polylines_size);
 | 
						|
endfor
 | 
						|
 | 
						|
## draw some polylines
 | 
						|
for i=0:number-1,
 | 
						|
  for a=1:nb_polylines,
 | 
						|
    for b=1:polylines_size,
 | 
						|
      pt {a}{b} = cv.cvPoint (int32(rand() * 2 * width - width), \
 | 
						|
                              int32(rand() * 2 * height - height));
 | 
						|
    endfor
 | 
						|
  endfor
 | 
						|
  cv.cvPolyLine (image, pt, 1, random_color(), int32(rand() * 8 + 1), line_type, 0);
 | 
						|
 | 
						|
  highgui.cvShowImage (window_name, image);
 | 
						|
  highgui.cvWaitKey (delay);
 | 
						|
endfor
 | 
						|
 | 
						|
## draw some filled polylines
 | 
						|
for i=0:number-1,
 | 
						|
  for a=1:nb_polylines,
 | 
						|
    for b=1:polylines_size,
 | 
						|
      pt {a}{b} = cv.cvPoint (int32(rand() * 2 * width - width),
 | 
						|
                              int32(rand() * 2 * height - height));
 | 
						|
    endfor
 | 
						|
  endfor
 | 
						|
  cv.cvFillPoly (image, pt, random_color (), line_type, 0);
 | 
						|
 | 
						|
  highgui.cvShowImage (window_name, image);
 | 
						|
  highgui.cvWaitKey (delay);
 | 
						|
endfor
 | 
						|
 | 
						|
## draw some circles
 | 
						|
for i=0:number-1,
 | 
						|
  pt1 = cv.cvPoint (int32(rand() * 2 * width - width),
 | 
						|
                    int32(rand() * 2 * height - height));
 | 
						|
  cv.cvCircle (image, pt1, int32(rand() * 300), random_color (), \
 | 
						|
	       int32(rand() * 10 - 1), line_type, 0);
 | 
						|
  
 | 
						|
  highgui.cvShowImage (window_name, image);
 | 
						|
  highgui.cvWaitKey (delay);
 | 
						|
endfor
 | 
						|
 | 
						|
## draw some text
 | 
						|
for i=0:number-1,
 | 
						|
  pt1 = cv.cvPoint (int32(rand() * 2 * width - width), \
 | 
						|
                    int32(rand() * 2 * height - height));
 | 
						|
  font = cv.cvInitFont (int32(rand() * 8), \
 | 
						|
                        rand() * 100 * 0.05 + 0.01, \
 | 
						|
                        rand() * 100 * 0.05 + 0.01, \
 | 
						|
                        rand() * 5 * 0.1, \
 | 
						|
                        int32(rand() * 10), \
 | 
						|
                        line_type);
 | 
						|
 | 
						|
  cv.cvPutText (image, "Testing text rendering!", \
 | 
						|
                pt1, font, \
 | 
						|
                random_color ());
 | 
						|
  
 | 
						|
  highgui.cvShowImage (window_name, image);
 | 
						|
  highgui.cvWaitKey (delay);
 | 
						|
endfor
 | 
						|
 | 
						|
## 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 = int32((width - text_size.width) / 2);
 | 
						|
pt1.y = int32((height + text_size.height) / 2);
 | 
						|
image2 = cv.cvCloneImage(image);
 | 
						|
 | 
						|
## now, draw some OpenCV pub ;-)
 | 
						|
for i=0:255-1,
 | 
						|
  cv.cvSubS (image2, cv.cvScalarAll (i), image, []);
 | 
						|
  cv.cvPutText (image, "OpenCV forever!",
 | 
						|
                pt1, font, cv.cvScalar (255, i, i));
 | 
						|
  highgui.cvShowImage (window_name, image);
 | 
						|
  highgui.cvWaitKey (delay);
 | 
						|
endfor
 | 
						|
 | 
						|
## wait some key to end
 | 
						|
highgui.cvWaitKey (0);
 | 
						|
 |