Fix houghlines.py when no lines found
authorAleksandar Atanasov <redbaronqueen@gmail.com>
Thu, 2 Jun 2016 09:00:23 +0000 (11:00 +0200)
committerAleksandar Atanasov <redbaronqueen@gmail.com>
Thu, 2 Jun 2016 09:00:23 +0000 (11:00 +0200)
In the C++ equivalent of this example a check is made whether the vector (here in Python we have a list) actually has any lines in it that is whether the Hough lines function has managed to find any in the given image. This check is missing for the Python example and if no lines are found the application breaks.

samples/python/houghlines.py

index 120d8bb..98c3640 100755 (executable)
@@ -36,16 +36,17 @@ if __name__ == '__main__':
 
     else:    # HoughLines
         lines = cv2.HoughLines(dst, 1, math.pi/180.0, 50, np.array([]), 0, 0)
-        a,b,c = lines.shape
-        for i in range(a):
-            rho = lines[i][0][0]
-            theta = lines[i][0][1]
-            a = math.cos(theta)
-            b = math.sin(theta)
-            x0, y0 = a*rho, b*rho
-            pt1 = ( int(x0+1000*(-b)), int(y0+1000*(a)) )
-            pt2 = ( int(x0-1000*(-b)), int(y0-1000*(a)) )
-            cv2.line(cdst, pt1, pt2, (0, 0, 255), 3, cv2.LINE_AA)
+        if lines != None:
+            a,b,c = lines.shape
+            for i in range(a):
+                rho = lines[i][0][0]
+                theta = lines[i][0][1]
+                a = math.cos(theta)
+                b = math.sin(theta)
+                x0, y0 = a*rho, b*rho
+                pt1 = ( int(x0+1000*(-b)), int(y0+1000*(a)) )
+                pt2 = ( int(x0-1000*(-b)), int(y0-1000*(a)) )
+                cv2.line(cdst, pt1, pt2, (0, 0, 255), 3, cv2.LINE_AA)
 
     cv2.imshow("source", src)
     cv2.imshow("detected lines", cdst)