mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
# Find Line Segments Example
|
|
#
|
|
# This example shows off how to find line segments in the image. For each line object
|
|
# found in the image a line object is returned which includes the line's rotation.
|
|
|
|
# find_line_segments() finds finite length lines (but is slow).
|
|
# Use find_line_segments() to find non-infinite lines (and is fast).
|
|
|
|
enable_lens_corr = False # turn on for straighter lines...
|
|
|
|
import sensor, image, time
|
|
|
|
sensor.reset()
|
|
sensor.set_pixformat(sensor.GRAYSCALE) # grayscale is faster
|
|
sensor.set_framesize(sensor.QQVGA)
|
|
sensor.skip_frames(time = 2000)
|
|
clock = time.clock()
|
|
|
|
# All lines also have `x1()`, `y1()`, `x2()`, and `y2()` methods to get their end-points
|
|
# and a `line()` method to get all the above as one 4 value tuple for `draw_line()`.
|
|
|
|
while(True):
|
|
clock.tick()
|
|
img = sensor.snapshot()
|
|
if enable_lens_corr: img.lens_corr(1.8) # for 2.8mm lens...
|
|
|
|
# `merge_distance` controls the merging of nearby lines. At 0 (the default), no
|
|
# merging is done. At 1, any line 1 pixel away from another is merged... and so
|
|
# on as you increase this value. You may wish to merge lines as line segment
|
|
# detection produces a lot of line segment results.
|
|
|
|
# `max_theta_diff` controls the maximum amount of rotation difference between
|
|
# any two lines about to be merged. The default setting allows for 15 degrees.
|
|
|
|
for l in img.find_line_segments(merge_distance = 0, max_theta_diff = 5):
|
|
img.draw_line(l.line(), color = (255, 0, 0))
|
|
# print(l)
|
|
|
|
print("FPS %f" % clock.fps())
|