be63ce723f
updated links in cheatsheet renamed directory for Mat tutorial changed links from willow docs to opencv.itseez.com, from Trac to current Redmine
72 linhas
2.0 KiB
Python
Arquivo Executável
72 linhas
2.0 KiB
Python
Arquivo Executável
#!/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)
|