关于openmv多颜色识别的代码问题
-
emmmm,我根据网上的历程(颜色识别,光源识别(灰度图),和多颜色识别)。写了一段可以同时识别颜色与光源的代码。但是在实际执行中只识别出了红色。源代码如下。
import sensor, image, time, math
red_threshold =(64, 55, 61, 72, -5, 30)grayscale_threshold = [(100, 130)]
red_color_code = 1
gray_color_code = 2
sensor.reset() # 初始化摄像头
sensor.set_pixformat(sensor.RGB565) # 选择像素模式 RGB565.
sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.
sensor.skip_frames(10) # Let new settings take affect.
sensor.set_auto_whitebal(False) #关闭白平衡。白平衡是默认开启的,在颜色识别中,需要关闭白平衡。clock = time.clock() # Tracks FPS.
while(True):
clock.tick() # Track elapsed milliseconds between snapshots().
img = sensor.snapshot() # 拍照,返回图像
# 在图像中寻找满足颜色阈值约束(color_threshold, 数组格式), 像素阈值pixel_threshold, 色块面积大小阈值(area_threshold)的色块
blobs = img.find_blobs([red_threshold],[grayscale_threshold])
if blobs:
#如果找到了目标颜色
for blob in blobs:
#迭代找到的目标颜色区域
x = blob[0]
y = blob[1]
width = blob[2] # 色块矩形的宽度
height = blob[3] # 色块矩形的高度center_x = blob[5] # 色块中心点x值 center_y = blob[6] # 色块中心点y值 color_code = blob[8] # 颜色代码 # 添加颜色说明 if color_code == red_color_code: img.draw_string(x, y - 10, "red", color = (0xFF, 0x00, 0x00)) elif color_code == gray_color_code: img.draw_string(x, y - 10, "gary", color = (0x00, 0xFF, 0x00)) #用矩形标记出目标颜色区域 img.draw_rectangle([x, y, width, height]) #在目标颜色区域的中心画十字形标记 img.draw_cross(center_x, center_y) print(clock.fps()) # Note: Your OpenMV Cam runs about half as fast while # connected to your computer. The FPS should increase once disconnected.
希望高手们可以帮我看看是那一步出现了问题。
-
你要说具体的问题,我根本不知道你的问题是什么。
-
@kidswong999 emmmmm,问题就是这代码的实际运行效果是只能识别红色,但是却没有识别出光源
测试的时候,红色卡片,红色灯,白灯,它只在红色卡片和红灯有框框(识别出),白灯却没有。
-
你的阈值要改一下,都用彩色的
-
@kidswong999 就是说这个方法不能同时得到色块坐标和光源坐标吗
-
可以,但是你的光源那个阈值得改一下,用彩色的。
-
@kidswong999 emmm,不是很懂,往详解
你说的是哪个gray_threahold吗
-
@kidswong999 那,能不能详细说下改哪里
-
grayscale_threshold = [(100, 130)] 改成彩色阈值。
-
@yuan 改成彩色阈值,它还能识别光源吗?
如果能的话要怎么改?
-
识别光源,就是识别色块,二者没有任何区别
-
@kidswong999 那,我问下怎么在颜色阈值里达到识别光源(色块)的作用
-
@kidswong999 emmm,等等,刚刚我重新看了一下教程,lab中,l是不是亮度的意思(•̩̩̩̩_•̩̩̩̩)
-
你说的,很对,l就是亮度
-
@kidswong999 (•̩̩̩̩_•̩̩̩̩)(•̩̩̩̩_•̩̩̩̩)(•̩̩̩̩_•̩̩̩̩)好的,我再试试,谢谢大佬