# Basic Frame Differencing Example # # Note: You will need an SD card to run this example. # # This example demonstrates using frame differencing with your OpenMV Cam. It's # called basic frame differencing because there's no background image update. # So, as time passes the background image may change resulting in issues. import sensor, image, pyb, os, time sensor.reset() # Initialize the camera sensor. sensor.set_pixformat(sensor.RGB565) # or sensor.GRAYSCALE sensor.set_framesize(sensor.QVGA) # or sensor.QQVGA (or others) sensor.skip_frames(time = 2000) # Let new settings take affect. sensor.set_auto_whitebal(False) # Turn off white balance. clock = time.clock() # Tracks FPS. if not "temp" in os.listdir(): os.mkdir("temp") # Make a temp directory print("About to save background image...") sensor.skip_frames(time = 2000) # Give the user time to get ready. sensor.snapshot().save("temp/bg.bmp") print("Saved background image - Now frame differencing!") while(True): clock.tick() # Track elapsed milliseconds between snapshots(). img = sensor.snapshot() # Take a picture and return the image. # Replace the image with the "abs(NEW-OLD)" frame difference. img.difference("temp/bg.bmp")
# only track colored objects which have both the colors below in them. import sensor, image, time, math # 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 = [(30, 100, 15, 127, 15, 127), # generic_red_thresholds -> index is 0 so code == (1 << 0) (30, 100, -64, -8, -32, 32)] # generic_green_thresholds -> index is 1 so code == (1 << 1) # Codes are or'ed together when "merge=True" for "find_blobs". 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. "merge=True" must be set to merge overlapping color blobs for color codes. while(True): clock.tick() img = sensor.snapshot() for blob in img.find_blobs(thresholds, pixels_threshold=100, area_threshold=100, merge=True): if blob.code() == 3: # r/g code == (1 << 1) | (1 << 0) # These values depend on the blob not being circular - otherwise they will be shaky. if blob.elongation() > 0.5: img.draw_edges(blob.min_corners(), color=(255,0,0)) img.draw_line(blob.major_axis_line(), color=(0,255,0))
for i in range(len(lab_color_thresholds)): if lab_color_thresholds[i][7]: e_lab_color_thresholds.append(lab_color_thresholds[i][0:6]) e_lab_color_code.append(lab_color_thresholds[i][6]) e_lab_color_signatures.append(i + 1) import image, math, pyb, sensor, struct, time # Camera Setup sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time = 2000) sensor.set_auto_gain(False) sensor.set_auto_whitebal(False) # LED Setup red_led = pyb.LED(1) green_led = pyb.LED(2) blue_led = pyb.LED(3) red_led.off() green_led.off() blue_led.off() # DAC Setup dac = pyb.DAC("P6") if analog_out_enable else None
# Find Data Matrices Example # # This example shows off how easy it is to detect data matrices using the # OpenMV Cam M7. Data matrices detection does not work on the M4 Camera. import sensor, image, time, math sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time = 2000) sensor.set_auto_gain(False) # must turn this off to prevent image washout... sensor.set_auto_whitebal(False) # must turn this off to prevent image washout... clock = time.clock() while(True): clock.tick() img = sensor.snapshot() img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens. matrices = img.find_datamatrices() for matrix in matrices: img.draw_rectangle(matrix.rect(), color = (255, 0, 0)) print_args = (matrix.rows(), matrix.columns(), matrix.payload(), (180 * matrix.rotation()) / math.pi, clock.fps()) print("Matrix [%d:%d], Payload \"%s\", rotation %f (degrees), FPS %f" % print_args) if not matrices: print("FPS %f" % clock.fps())
device.position(1, us=steering) # # Camera Control Code # sensor.reset() sensor.set_pixformat(sensor.RGB565 if COLOR_LINE_FOLLOWING else sensor.GRAYSCALE) sensor.set_framesize(FRAME_SIZE) sensor.set_vflip(True) sensor.set_hmirror(True) sensor.set_windowing((int((sensor.width() / 2) - ((sensor.width() / 2) * FRAME_WIDE)), int(sensor.height() * (1.0 - FRAME_REGION)), \ int((sensor.width() / 2) + ((sensor.width() / 2) * FRAME_WIDE)), int(sensor.height() * FRAME_REGION))) sensor.skip_frames(time = 200) if COLOR_LINE_FOLLOWING: sensor.set_auto_gain(False) if COLOR_LINE_FOLLOWING: sensor.set_auto_whitebal(False) clock = time.clock() #sensor.set_auto_exposure(False, \ # exposure_us = 300) ########### # Loop ########### old_time = pyb.millis() throttle_old_result = None throttle_i_output = 0 throttle_output = THROTTLE_OFFSET
import sensor, image, time sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) 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() while(True): clock.tick() img = sensor.snapshot().lens_corr(1.8) red_blobs = img.find_blobs([(65, 95, 10, 45, -20, 12)]) for blob in red_blobs: img.draw_rectangle(blob[0:4], color=(0,255,0), thickness=4) img.draw_cross(blob[5], blob[6]) # center_x, center_y print("FPS %f" % clock.fps())
import sensor, image, time, pyb from pyb import UART uart = UART(3, 57600)#timeout_char =10 from pyb import Pin p8_pin = pyb.Pin.board.P8 p8_pin.init(Pin.IN,Pin.PULL_UP) sensor.reset() # 初始化摄像头 sensor.set_pixformat(sensor.GRAYSCALE) # 格式为 RGB565. sensor.set_framesize(sensor.QQVGA) # 使用 QQVGA 速度快一些 sensor.set_auto_whitebal(False) clock = time.clock() # 追踪帧率 a=1 position_X=80 position_Y=60 new_point_ready = 0 detect_mode = 1# 1黑色 0彩色 def led_blink(x): led = pyb.LED(x) led.on() time.sleep(5) led.off() def send_position(): if (new_point_ready == 1): uart.writechar(0xFF) uart.writechar(position_X) uart.writechar(position_Y) if (detect_mode == 0):
# recording a Mjpeg file you can use VLC to play it. If you are on Ubuntu then # the built-in video player will work too. # # This example demonstrates using frame differencing with your OpenMV Cam to do # motion detection. After motion is detected your OpenMV Cam will take video. import sensor, image, time, mjpeg, pyb, os RED_LED_PIN = 1 BLUE_LED_PIN = 3 sensor.reset() # Initialize the camera sensor. sensor.set_pixformat(sensor.RGB565) # or sensor.GRAYSCALE sensor.set_framesize(sensor.QVGA) # or sensor.QQVGA (or others) sensor.skip_frames(time=2000) # Let new settings take affect. sensor.set_auto_whitebal(False) # Turn off white balance. if not "temp" in os.listdir(): os.mkdir("temp") # Make a temp directory while (True): pyb.LED(RED_LED_PIN).on() print("About to save background image...") sensor.skip_frames(time=2000) # Give the user time to get ready. pyb.LED(RED_LED_PIN).off() sensor.snapshot().save("temp/bg.bmp") print("Saved background image - Now detecting motion!") pyb.LED(BLUE_LED_PIN).on() diff = 10 # We'll say we detected motion after 10 frames of motion.
# Find Data Matrices w/ Lens Zoom Example # # This example shows off how easy it is to detect data matrices using the # OpenMV Cam M7. Data matrices detection does not work on the M4 Camera. import sensor, image, time, math sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.VGA) sensor.set_windowing((320, 240)) # 2x Zoom sensor.skip_frames(30) sensor.set_auto_gain(False) # must turn this off to prevent image washout... sensor.set_auto_whitebal( False) # must turn this off to prevent image washout... clock = time.clock() while (True): clock.tick() img = sensor.snapshot() matrices = img.find_datamatrices() for matrix in matrices: img.draw_rectangle(matrix.rect(), color=(255, 0, 0)) print_args = (matrix.rows(), matrix.columns(), matrix.payload(), (180 * matrix.rotation()) / math.pi, clock.fps()) print("Matrix [%d:%d], Payload \"%s\", rotation %f (degrees), FPS %f" % print_args) if not matrices: print("FPS %f" % clock.fps())
if blob[2] * blob[3] > max_size: max_blob = blob max_size = blob[2] * blob[3] return max_blob sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.set_framerate(0 << 9 | 1 << 12) sensor.set_auto_exposure(False, 500) sensor.set_contrast(0) sensor.set_brightness(-3) sensor.set_saturation(1) sensor.set_auto_gain(False, 10) sensor.set_auto_whitebal(False, RGB_gain) sensor.skip_frames(time=2000) while (True): clock.tick() img = sensor.snapshot() blobs = img.find_blobs([red_threshold], x_stride=2, y_stride=2, invert=False, area_threshold=6, pixels_threshold=6, merge=True, margin=5, roi=[0, 60, 320, 195]) if blobs: for b in blobs:
import utime # For color tracking to work really well you should ideally be in a very, very, # very, controlled enviroment where the lighting is constant... pingpang = (70, 90, 10, 35, 10, 50) pingpang_night = (65, 80, 0, 45, 0, 60) tennis = (60, 75, -30, -15, 30, 50) black = (15, 75, -5, 5, -5, 20) # 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, 115200) flag = 0 timeNumber = 0 x = 0 y = 0 Kp_x = 0.08 Td_x = 0.02 Kp_y = 0.08 Td_y = 0.02 ''' Kp_x=0.09 Td_x=0.02 Kp_y=0.09
uart_B = UART(UART.UART2, 115200, 8, None, 1, timeout=10) import sensor, image, time, lcd, math import KPU as kpu #task = kpu.load("/sd/paste_mnist.kmodel") task = kpu.load("/sd/mnist.kmodel") info = kpu.netinfo(task) lcd.init(freq=15000000) sensor.reset() # Reset and initialize the sensor. It will # run automatically, call sensor.run(0) to stop sensor.set_pixformat( sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE) sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240) sensor.set_vflip(True) sensor.set_auto_gain(True) sensor.set_auto_whitebal(True) sensor.set_gainceiling(8) sensor.skip_frames(time=2000) # Wait for settings take effect. clock = time.clock() # Create a clock object to track the FPS. def mnist_run(img, dx, dy, dis, x00=0, y00=80, nnn=2): if nnn == 4: x00 = x00 dy = dy img0 = img.copy((x00 + dis * nnn, y00 + nnn * 0, dx, dy)) #img0.mean(2, threshold=True, offset=1, invert=True) #A img0.median(2, percentile=0.3, threshold=True, offset=-3, invert=True) #img0.midpoint(2, bias=0.3, threshold=True, offset=0, invert=True) #img0.mode(2, threshold=True, offset=0, invert=True) #B
calThresh = [(50, 100, -128, 127, -128, 127)] calTimeOut = 3000 calibrate = False #SETUP sensor.reset() sensor.set_hmirror(True) sensor.set_vflip(True) sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.set_windowing((windowX, windowY)) # 240x240 center pixels of VGA sensor.set_auto_gain(False, gain_db=20) # must be turned off for color tracking sensor.set_gainceiling(128) sensor.set_auto_whitebal( False, rgb_gain_db=(-6.0, -3.0, 2)) # must be turned off for color tracking #sensor.set_brightness(-1) sensor.set_saturation(3) #sensor.set_quality(100) #sensor.set_auto_exposure(False, 1000) #sensor.set_contrast(3) sensor.skip_frames(time=2000) clock = time.clock() #kernel_size = 1 # 3x3==1, 5x5==2, 7x7==3, etc. #kernel = [-2, -1, 0, \ #-1, 6, -1, \ #0, -1, -2] while (True):