当前位置:   article > 正文

OpenMV自动采集颜色阈值方法设置_openmv颜色阈值怎么调

openmv颜色阈值怎么调

方法一:定义函数,将收集到的lab颜色阈值放在同一个列表里

1.定义一个名为 collect_threshold 的函数,该函数用于收集一系列颜色阈值。以下是代码的详细分析:

def collect_threshold(num_iterations):

定义了一个名为 collect_threshold 的函数,它接受一个参数 num_iterations,表示要采集的阈值的次数。
2. 初始化阈值列表:

apple_thresholds = []

初始化一个空列表 apple_thresholds,用于存储每次迭代中收集的阈值。
3. 循环采集:

for i in range(num_iterations):

使用循环进行 num_iterations 次迭代,每次迭代中执行以下操作:
4. 开启和关闭LED指示灯:

LED_Collect.on()              #采集指示灯
time.sleep_ms(100)
LED_Collect.off()
time.sleep_ms(100)

首先开启 LED_Collect(可能是一个用于指示正在采集的指示灯)。然后等待100毫秒。接着关闭指示灯,再等待100毫秒。这可能是为了给用户或系统一个明确的指示,表明正在进行数据采集
5. 获取图像:

img = sensor.snapshot()

使用 sensor.snapshot() 获取一张图像的快照。
6. 绘制矩形:

img.draw_rectangle((160,160,120,120),color = (255,0,0),thickness = 2)

在图像上绘制一个矩形。矩形的位置和颜色已指定。
7. 获取矩形区域的统计信息:

Statistics = img.get_statistics(roi = (160,160,120,120))

使用 img.get_statistics() 方法获取矩形区域的统计信息。这里的 roi 参数指定了感兴趣的区域,即之前绘制的矩形区域。
8. 收集阈值:

thresholds = (Statistics.l_min(),Statistics.l_max(),
                      Statistics.a_min(),Statistics.a_max(),
                        Statistics.b_min(),Statistics.b_max())

从统计信息中提取最小和最大的亮度、饱和度和色调值,并将它们存储在 thresholds 变量中。这些阈值可以用于后续的颜色识别或分析。
9. 添加阈值到列表并打印:

apple_thresholds.append(thresholds)
print(apple_thresholds)

将当前迭代中收集的阈值添加到 apple_thresholds 列表中,并打印该列表。这有助于监视进程或调试。但请注意,这里有一个问题:每次迭代都打印整个列表可能不是最高效的方法,特别是当 num_iterations 很大时。更好的做法可能是仅在每个迭代结束时打印当前的阈值。
10. 返回阈值列表:

return apple_thresholds

函数返回收集的阈值列表。在调用此函数的代码中,你可以这样使用它:
11. 调用函数并打印结果:

apple_thresholds = collect_threshold(5)  # 例如,收集5次阈值的情况。你可以根据需要更改这个数字。

调用 collect_threshold 函数并传入一个数字(例如5),然后将其返回的阈值列表存储在 apple_thresholds 变量中。根据需要,可以进一步处理或分析这些阈值。

这种方法,可以统计出多个阈值,但是由于添加的阈值较多,单片机处理可能变慢发热。

完整函数代码如下:

  1. def collect_threshold(num_iterations):
  2. apple_thresholds = []
  3. for i in range(num_iterations):
  4. LED_Collect.on() #采集指示灯
  5. time.sleep_ms(100)
  6. LED_Collect.off()
  7. time.sleep_ms(100)
  8. img = sensor.snapshot()
  9. img.draw_rectangle((160,160,120,120),color = (255,0,0),thickness = 2)
  10. Statistics = img.get_statistics(roi = (160,160,120,120))
  11. thresholds = (Statistics.l_min(),Statistics.l_max(),
  12. Statistics.a_min(),Statistics.a_max(),
  13. Statistics.b_min(),Statistics.b_max())
  14. apple_thresholds.append(thresholds)
  15. print(apple_thresholds)
  16. return apple_thresholds
  17. apple_thresholds = collect_threshold(5)

方法二:采用for循环将阈值采集列表刷新

此处参考B站大佬视频

主要目的是通过循环200次,采集图像,然后在图像上绘制一个矩形,并获取该矩形区域的统计信息。以下是代码的详细分析:

1.循环:

for i in range(200):

这是一个for循环,它将执行200次。这意味着整个循环体将被执行200次。
2. 获取图像:

img = sensor.snapshot()

使用sensor.snapshot()方法获取一张图像的快照,并将其存储在img变量中。
3. 绘制矩形:

img.draw_rectangle((160,160,120,120),color = (255,0,0),thickness = 2)

在img图像上绘制一个矩形。矩形的位置和颜色已指定。其中,位置为(160, 160, 120, 120),颜色为红色(RGB值为(255, 0, 0))。
4. 获取矩形区域的统计信息:

Statistics = img.get_statistics(roi = (160,160,120,120))

使用img.get_statistics()方法获取矩形区域的统计信息。这里的roi参数指定了感兴趣的区域,即之前绘制的矩形区域。
5. 收集阈值:

apple_thresholds = [(Statistics.l_min(),Statistics.l_max(),
                        Statistics.a_min(),Statistics.a_max(),
                        Statistics.b_min(),Statistics.b_max())]

从统计信息中提取最小和最大的亮度、饱和度和色调值,并将它们存储在apple_thresholds列表中。注意,每次迭代都会覆盖上一次的阈值列表,因此最终apple_thresholds将只包含最后一次迭代的阈值。为了收集所有的阈值,你可能希望将阈值添加到列表中,而不是每次都创建一个新的列表。
6. 打印阈值:

print(apple_thresholds)

打印apple_thresholds列表的内容。这将有助于监视或调试过程。但是,与上面相同的问题,每次迭代都打印整个列表可能不是最高效的方法,特别是当num_iterations很大时。更好的做法可能是仅在每个迭代结束时打印当前的阈值。

这种方法,实时显示采集的阈值列表。

完整函数代码如下:

  1. for i in range(200):
  2. img = sensor.snapshot()
  3. img.draw_rectangle((160,160,120,120),color = (255,0,0),thickness = 2)
  4. Statistics = img.get_statistics(roi = (160,160,120,120))
  5. apple_thresholds = [(Statistics.l_min(),Statistics.l_max(),
  6. Statistics.a_min(),Statistics.a_max(),
  7. Statistics.b_min(),Statistics.b_max())]
  8. print(apple_thresholds)

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号