X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=samples%2Fswig_python%2Fhoughlines.py;fp=samples%2Fswig_python%2Fhoughlines.py;h=385e7e6a78e18038a3301d506405bf22188f060b;hb=e4c14cdbdf2fe805e79cd96ded236f57e7b89060;hp=0000000000000000000000000000000000000000;hpb=454138ff8a20f6edb9b65a910101403d8b520643;p=opencv diff --git a/samples/swig_python/houghlines.py b/samples/swig_python/houghlines.py new file mode 100755 index 0000000..385e7e6 --- /dev/null +++ b/samples/swig_python/houghlines.py @@ -0,0 +1,59 @@ +#!/usr/bin/python +# This is a standalone program. Pass an image name as a first parameter of the program. + +import sys +from math import sin,cos,sqrt +from opencv.cv import * +from opencv.highgui import * + +# toggle between CV_HOUGH_STANDARD and CV_HOUGH_PROBILISTIC +USE_STANDARD=0 + +if __name__ == "__main__": + filename = "../../docs/ref/pics/building.jpg" + if len(sys.argv)>1: + filename = sys.argv[1] + + src=cvLoadImage(filename, 0); + if not src: + print "Error opening image %s" % filename + sys.exit(-1) + + dst = cvCreateImage( cvGetSize(src), 8, 1 ); + color_dst = cvCreateImage( cvGetSize(src), 8, 3 ); + storage = cvCreateMemStorage(0); + lines = 0; + cvCanny( src, dst, 50, 200, 3 ); + cvCvtColor( dst, color_dst, CV_GRAY2BGR ); + + if USE_STANDARD: + lines = cvHoughLines2( dst, storage, CV_HOUGH_STANDARD, 1, CV_PI/180, 100, 0, 0 ); + + for i in range(min(lines.total, 100)): + line = lines[i] + rho = line[0]; + theta = line[1]; + pt1 = CvPoint(); + pt2 = CvPoint(); + a = cos(theta); + b = sin(theta); + x0 = a*rho + y0 = b*rho + pt1.x = cvRound(x0 + 1000*(-b)); + pt1.y = cvRound(y0 + 1000*(a)); + pt2.x = cvRound(x0 - 1000*(-b)); + pt2.y = cvRound(y0 - 1000*(a)); + cvLine( color_dst, pt1, pt2, CV_RGB(255,0,0), 3, 8 ); + + else: + lines = cvHoughLines2( dst, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/180, 50, 50, 10 ); + for line in lines: + cvLine( color_dst, line[0], line[1], CV_RGB(255,0,0), 3, 8 ); + + cvNamedWindow( "Source", 1 ); + cvShowImage( "Source", src ); + + cvNamedWindow( "Hough", 1 ); + cvShowImage( "Hough", color_dst ); + + cvWaitKey(0);