噢噢噢噢,蟹蟹哈,一下考虑的太多,这么简单的反而忘掉了
W
wyfg 发布的帖子
-
色块识别不同颜色最大的模块
现在只能要么识别三个颜色所有的色块,要么只识别第一种颜色的最大模块,如何实现识别三个颜色最大的色块啊
# Multi Color Blob Tracking Example # # This example shows off multi color blob tracking using the OpenMV Cam. import sensor, image, time,math from pyb import UART import json # Color Tracking Thresholds (L Min, L Max, A Min, A Max, B Min, B Max) # The below thresholds track in general red/green things. You may wish to tune them... thresholds = [(0, 31, -53, 50, -91, 107), # generic_red_thresholds (30, 100, -64, -8, -32, 32), # generic_green_thresholds (0, 15, 0, 40, -80, -20)] # generic_blue_thresholds # You may pass up to 16 thresholds above. However, it's not really possible to segment any # scene with 16 thresholds before color thresholds start to overlap heavily. X_relative_displacement=0 Y_relative_displacement=0 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time = 2000) sensor.set_auto_gain(False) # must be turned off for color tracking sensor.set_auto_whitebal(False) # must be turned off for color tracking clock = time.clock() # Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are # returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the # camera resolution. Don't set "merge=True" becuase that will merge blobs which we don't want here. uart = UART(3,9600) def find_max(blobs): max_size=0 for blob in blobs: if blob.pixels() > max_size: max_blob=blob max_size = blob.pixels() return max_blob while(True): clock.tick() img = sensor.snapshot() blobs = img.find_blobs(thresholds, pixels_threshold=10, area_threshold=10) if blobs: max_blob = find_max(blobs) img.draw_rectangle(max_blob.rect()) img.draw_cross(max_blob.cx(), max_blob.cy()) X_data = max_blob.cx()-img.width()/2 Y_data = img.height()/2-max_blob.cy() if X_data >= 0: X_Sign = 0 if X_data <= 0: X_Sign = 1 if Y_data >= 0: Y_Sign = 0 if Y_data <= 0: Y_Sign = 1 # X_data = max_blob.cx()-40 # Y_data = img.height()-max_blob.cy() # if X_data<0: # X_data=0 # if X_data>255 # X_data=255 X_data=abs(X_data) Y_data=abs(Y_data) X_relative_displacement=int(X_data) Y_relative_displacement=int(Y_data) img_data = bytearray([0x2C,7,X_Sign,Y_Sign,X_relative_displacement,Y_relative_displacement,0x5B]) uart.write(img_data) print(X_relative_displacement,Y_relative_displacement)