mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.7 KiB
74 lines
1.7 KiB
#! /usr/bin/env octave |
|
|
|
printf("OpenCV Octave version of convexhull\n"); |
|
|
|
## import the necessary things for OpenCV |
|
cv; |
|
highgui; |
|
|
|
## how many points we want at max |
|
_MAX_POINTS = 100; |
|
|
|
## create the image where we want to display results |
|
image = cv.cvCreateImage (cv.cvSize (500, 500), 8, 3); |
|
|
|
## create the window to put the image in |
|
highgui.cvNamedWindow ('hull', highgui.CV_WINDOW_AUTOSIZE); |
|
|
|
while (true) |
|
## do forever |
|
|
|
## get a random number of points |
|
count = int32(rand()*_MAX_POINTS)+1 |
|
|
|
## initialisations |
|
points = {}; |
|
|
|
for i=1:count, |
|
## generate a random point |
|
points{i} = cv.cvPoint \ |
|
(int32(rand() * (image.width / 2) + image.width / 4), \ |
|
int32(rand() * (image.height / 2) + image.height / 4)); \ |
|
endfor |
|
|
|
## compute the convex hull |
|
hull = cv.cvConvexHull2 (points, cv.CV_CLOCKWISE, 0); |
|
|
|
## start with an empty image |
|
cv.cvSetZero (image); |
|
|
|
for i=1:count, |
|
## draw all the points |
|
cv.cvCircle (image, points {i}, 2, \ |
|
cv.cvScalar (0, 0, 255, 0), \ |
|
cv.CV_FILLED, cv.CV_AA, 0); |
|
endfor |
|
|
|
## start the line from the last point |
|
pt0 = points {hull [-1]}; |
|
|
|
for point_index = 1:hull.rows, |
|
## connect the previous point to the current one |
|
|
|
## get the current one |
|
pt1 = points {point_index}; |
|
|
|
## draw |
|
cv.cvLine (image, pt0, pt1, \ |
|
cv.cvScalar (0, 255, 0, 0), \ |
|
1, cv.CV_AA, 0); |
|
|
|
## now, current one will be the previous one for the next iteration |
|
pt0 = pt1; |
|
endfor |
|
|
|
## display the final image |
|
highgui.cvShowImage ('hull', image); |
|
|
|
## handle events, and wait a key pressed |
|
k = highgui.cvWaitKey (0); |
|
if (k == '\x1b') |
|
## user has press the ESC key, so exit |
|
break |
|
endif |
|
endwhile
|
|
|