识别色块的时候,可以只识别最大的色块然后删除其他结果吗
-
在做识别色块的云台时候,常常因为颜色干扰出现多重结果,比如窗帘或者天空等,表现为很多细碎的小块,能不能把其他的色块删除只发送最大色块的坐标呢?因为我把舵机的值用色块坐标作为函数变量了,多个值同时输出导致舵机并不跟踪,只是偶尔 抖动
import sensor, image, time import json from pyb import UART # For color tracking to work really well you should ideally be in a very, very, # very, controlled enviroment where the lighting is constant... #yellow_threshold = ( 46, 100, -68, 72, 58, 92) yellow_threshold = ( 18, 69, 40, 86, 0, 72) # You may need to tweak the above settings for tracking green things... # Select an area in the Framebuffer to copy the color settings. sensor.reset() # Initialize the camera sensor. sensor.set_pixformat(sensor.RGB565) # use RGB565. sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed. sensor.skip_frames(10) # Let new settings take affect. sensor.set_auto_whitebal(False) # turn this off. clock = time.clock() # Tracks FPS. uart = UART(3, 9600) while(True): clock.tick() # Track elapsed milliseconds between snapshots(). img = sensor.snapshot() # Take a picture and return the image. blobs = img.find_blobs([yellow_threshold]) if blobs: #print('sum : %d'% len(blobs)) data=[] for b in blobs: # Draw a rect around the blob. img.draw_rectangle(b.rect()) # rect img.draw_cross(b.cx(), b.cy()) # cx, cy data.append((b.cx(),b.cy())) #{(1,22),(-3,33),(22222,0),(9999,12),(0,0)} data_out = json.dumps(set(data)) uart.write(data_out +'\n') print('you send:',data_out) else: print("not found!")
-
https://github.com/SingTown/OpenMV-Pan-Tilt/blob/master/pan-tilt/src/main.py#L26
这里有find_max函数,只保留最大的。
-
但在实际运行时候似乎还是能在图像监视器中看到检测出好多个,难道图像监视器中的结果并不准确,在运行中能够自动剔除么?
-
你运行的是我链接里的代码?
在画面中看到的框,都是draw_rectangle函数画的。