怎么在这个代码里添加一个线段数量值然后达到线段数量比如识别5条线段后输出到一个引脚作低电平信号输出
-
# 线段检测例程 # # 这个例子展示了如何在图像中查找线段。对于在图像中找到的每个线对象, # 都会返回一个包含线条旋转的线对象。 # find_line_segments()找到有限长度的线(但是很慢)。 # Use find_line_segments()找到非无限的线(而且速度很快)。 enable_lens_corr = False # turn on for straighter lines...打开以获得更直的线条… import sensor, image, time sensor.reset() sensor.set_pixformat(sensor.RGB565) # 灰度更快 sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(time = 2000) clock = time.clock() # 所有线段都有 `x1()`, `y1()`, `x2()`, and `y2()` 方法来获得他们的终点 # 一个 `line()` 方法来获得所有上述的四个元组值,可用于 `draw_line()`. while(True): clock.tick() img = sensor.snapshot() if enable_lens_corr: img.lens_corr(1.8) # for 2.8mm lens... # `merge_distance`控制附近行的合并。 在0(默认),没有合并。 # 在1处,任何距离另一条线一个像素点的线都被合并...等等, # 因为你增加了这个值。 您可能希望合并线段,因为线段检测会产生大量 # 的线段结果。 # `max_theta_diff` 控制要合并的任何两线段之间的最大旋转差异量。 # 默认设置允许15度。 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())
-
enable_lens_corr = False import sensor, image, time sensor.reset() sensor.set_pixformat(sensor.RGB565) # 灰度更快 sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(time = 2000) clock = time.clock() pin1 = Pin('P1', Pin.OUT_PP, Pin.PULL_NONE) pin1.value(0) while(True): clock.tick() img = sensor.snapshot() if enable_lens_corr: img.lens_corr(1.8) # for 2.8mm lens... segments = img.find_line_segments(merge_distance = 0, max_theta_diff = 5) if len(segments) > 5: pin1.value(1) else: pin1.value(0) for l in segments: img.draw_line(l.line(), color = (255, 0, 0)) # print(l) print("FPS %f" % clock.fps())
-
此回复已被删除!
-
此回复已被删除!
-
@kidswong999 谢谢了!非常感谢!
-
@kidswong999 这段代码要怎么加一段 能过滤掉一些短的线 或不直的线段 要怎么过滤?
-
过滤短的线:
result_segments = [] for l in segments: if l.length() > 50: result_segments.append(l)
不直的线段,一般不会检测出来。
-
@kidswong999 非常感谢!要怎么插入到那段代码上呢,刚贴进去,报错
-
@kidswong999 哦 放进去了 就是还有很多出现很短的线 要怎么屏蔽过滤
-
@kidswong999 你好!在吗?怎么过滤掉那个比较短的线。或者说只识别边缘的线段就可以。可以这样设置吗
-
@kidswong999 在吗 在吗过滤短的线条
-
@kidswong999 在 怎么在这个代码里添加一个线段数量值然后达到线段数量比如识别5条线段后输出到一个引脚作低电平信号输出 中说:
result_segments = []
for l in segments:
if l.length() > 50:
result_segments.append(l)这段代码放上去过滤不了 短的线 没效果
-
enable_lens_corr = False import sensor, image, time sensor.reset() sensor.set_pixformat(sensor.RGB565) # 灰度更快 sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(time = 2000) clock = time.clock() pin1 = Pin('P1', Pin.OUT_PP, Pin.PULL_NONE) pin1.value(0) while(True): clock.tick() img = sensor.snapshot() if enable_lens_corr: img.lens_corr(1.8) # for 2.8mm lens... segments = img.find_line_segments(merge_distance = 0, max_theta_diff = 5) result_segments = [] for l in segments: if l.length() > 50: result_segments.append(l) if len(result_segments) > 5: pin1.value(1) else: pin1.value(0) for l in result_segments: img.draw_line(l.line(), color = (255, 0, 0)) # print(l) print("FPS %f" % clock.fps())
-
@kidswong999 在 怎么在这个代码里添加一个线段数量值然后达到线段数量比如识别5条线段后输出到一个引脚作低电平信号输出 中说:
enable_lens_corr = False
import sensor, image, time
sensor.reset()
sensor.set_pixformat(sensor.RGB565) # 灰度更快
sensor.set_framesize(sensor.QQVGA)
sensor.skip_frames(time = 2000)
clock = time.clock()pin1 = Pin('P1', Pin.OUT_PP, Pin.PULL_NONE)
pin1.value(0)while(True):
clock.tick()
img = sensor.snapshot()
if enable_lens_corr: img.lens_corr(1.8) # for 2.8mm lens...
segments = img.find_line_segments(merge_distance = 0, max_theta_diff = 5)
result_segments = []for l in segments: if l.length() > 50: result_segments.append(l) if len(result_segments) > 5: pin1.value(1) else: pin1.value(0) for l in result_segments: img.draw_line(l.line(), color = (255, 0, 0)) # print(l) print("FPS %f" % clock.fps())
现在是可以过滤掉短的了 ,然后有一个就是 这个有办法过滤掉,好的线段的跳动吗?跳动变动,输出信号不稳定,
-
@chep 这个不行,不是过滤的问题。