
updated links in cheatsheet renamed directory for Mat tutorial changed links from willow docs to opencv.itseez.com, from Trac to current Redmine
72 lines
2.0 KiB
Python
Executable File
72 lines
2.0 KiB
Python
Executable File
#!/usr/bin/python
|
|
import sys
|
|
import cv2.cv as cv
|
|
import urllib2
|
|
|
|
wndname = "Distance transform"
|
|
tbarname = "Threshold"
|
|
|
|
# The output images
|
|
dist = 0
|
|
dist8u1 = 0
|
|
dist8u2 = 0
|
|
dist8u = 0
|
|
dist32s = 0
|
|
|
|
gray = 0
|
|
edge = 0
|
|
|
|
# define a trackbar callback
|
|
def on_trackbar(edge_thresh):
|
|
|
|
cv.Threshold(gray, edge, float(edge_thresh), float(edge_thresh), cv.CV_THRESH_BINARY)
|
|
#Distance transform
|
|
cv.DistTransform(edge, dist, cv.CV_DIST_L2, cv.CV_DIST_MASK_5)
|
|
|
|
cv.ConvertScale(dist, dist, 5000.0, 0)
|
|
cv.Pow(dist, dist, 0.5)
|
|
|
|
cv.ConvertScale(dist, dist32s, 1.0, 0.5)
|
|
cv.AndS(dist32s, cv.ScalarAll(255), dist32s, None)
|
|
cv.ConvertScale(dist32s, dist8u1, 1, 0)
|
|
cv.ConvertScale(dist32s, dist32s, -1, 0)
|
|
cv.AddS(dist32s, cv.ScalarAll(255), dist32s, None)
|
|
cv.ConvertScale(dist32s, dist8u2, 1, 0)
|
|
cv.Merge(dist8u1, dist8u2, dist8u2, None, dist8u)
|
|
cv.ShowImage(wndname, dist8u)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
edge_thresh = 100
|
|
|
|
if len(sys.argv) > 1:
|
|
gray = cv.LoadImage(sys.argv[1], cv.CV_LOAD_IMAGE_GRAYSCALE)
|
|
else:
|
|
url = 'http://code.opencv.org/svn/opencv/trunk/opencv/samples/c/stuff.jpg'
|
|
filedata = urllib2.urlopen(url).read()
|
|
imagefiledata = cv.CreateMatHeader(1, len(filedata), cv.CV_8UC1)
|
|
cv.SetData(imagefiledata, filedata, len(filedata))
|
|
gray = cv.DecodeImage(imagefiledata, cv.CV_LOAD_IMAGE_GRAYSCALE)
|
|
|
|
# Create the output image
|
|
dist = cv.CreateImage((gray.width, gray.height), cv.IPL_DEPTH_32F, 1)
|
|
dist8u1 = cv.CloneImage(gray)
|
|
dist8u2 = cv.CloneImage(gray)
|
|
dist8u = cv.CreateImage((gray.width, gray.height), cv.IPL_DEPTH_8U, 3)
|
|
dist32s = cv.CreateImage((gray.width, gray.height), cv.IPL_DEPTH_32S, 1)
|
|
|
|
# Convert to grayscale
|
|
edge = cv.CloneImage(gray)
|
|
|
|
# Create a window
|
|
cv.NamedWindow(wndname, 1)
|
|
|
|
# create a toolbar
|
|
cv.CreateTrackbar(tbarname, wndname, edge_thresh, 255, on_trackbar)
|
|
|
|
# Show the image
|
|
on_trackbar(edge_thresh)
|
|
|
|
# Wait for a key stroke; the same function arranges events processing
|
|
cv.WaitKey(0)
|