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.
76 lines
1.9 KiB
76 lines
1.9 KiB
#! /usr/bin/env octave |
|
cv; |
|
highgui; |
|
|
|
global g; |
|
|
|
g.wndname = "Distance transform"; |
|
g.tbarname = "Threshold"; |
|
|
|
## The output images |
|
g.dist = 0; |
|
g.dist8u1 = 0; |
|
g.dist8u2 = 0; |
|
g.dist8u = 0; |
|
g.dist32s = 0; |
|
|
|
g.gray = 0; |
|
g.edge = 0; |
|
|
|
## define a trackbar callback |
|
function on_trackbar( edge_thresh ) |
|
global g; |
|
global cv; |
|
|
|
cvThreshold( g.gray, g.edge, double(edge_thresh), double(edge_thresh), cv.CV_THRESH_BINARY ); |
|
## Distance transform |
|
cvDistTransform( g.edge, g.dist, cv.CV_DIST_L2, cv.CV_DIST_MASK_5, [], [] ); |
|
|
|
cvConvertScale( g.dist, g.dist, 5000.0, 0 ); |
|
cvPow( g.dist, g.dist, 0.5 ); |
|
|
|
cvConvertScale( g.dist, g.dist32s, 1.0, 0.5 ); |
|
cvAndS( g.dist32s, cvScalarAll(255), g.dist32s, [] ); |
|
cvConvertScale( g.dist32s, g.dist8u1, 1, 0 ); |
|
cvConvertScale( g.dist32s, g.dist32s, -1, 0 ); |
|
cvAddS( g.dist32s, cvScalarAll(255), g.dist32s, [] ); |
|
cvConvertScale( g.dist32s, g.dist8u2, 1, 0 ); |
|
cvMerge( g.dist8u1, g.dist8u2, g.dist8u2, [], g.dist8u ); |
|
cvShowImage( g.wndname, g.dist8u ); |
|
endfunction |
|
|
|
|
|
edge_thresh = 100; |
|
|
|
filename = "../c/stuff.jpg"; |
|
if (size(argv, 1) > 1) |
|
filename = argv(){1}; |
|
endif |
|
|
|
g.gray = cvLoadImage( filename, 0 ); |
|
if (!swig_this(g.gray)) |
|
printf("Failed to load %s\n",filename); |
|
exit(-1); |
|
endif |
|
|
|
## Create the output image |
|
g.dist = cvCreateImage( cvSize(g.gray.width,g.gray.height), IPL_DEPTH_32F, 1 ); |
|
g.dist8u1 = cvCloneImage( g.gray ); |
|
g.dist8u2 = cvCloneImage( g.gray ); |
|
g.dist8u = cvCreateImage( cvSize(g.gray.width,g.gray.height), IPL_DEPTH_8U, 3 ); |
|
g.dist32s = cvCreateImage( cvSize(g.gray.width,g.gray.height), IPL_DEPTH_32S, 1 ); |
|
|
|
## Convert to grayscale |
|
g.edge = cvCloneImage( g.gray ); |
|
|
|
## Create a window |
|
cvNamedWindow( g.wndname, 1 ); |
|
|
|
## create a toolbar |
|
cvCreateTrackbar( g.tbarname, g.wndname, edge_thresh, 255, @on_trackbar ); |
|
|
|
## Show the image |
|
on_trackbar(edge_thresh); |
|
|
|
## Wait for a key stroke; the same function arranges events processing |
|
cvWaitKey(0);
|
|
|