int main(void) { uint32_t init_time, current_time; uint32_t grab_period; char filename[16]; FILE *f; grab_period = INIT_PHASE_GRAB_PERIOD; // At first grab every second cc3_uart_init (0, CC3_UART_RATE_115200, CC3_UART_MODE_8N1, CC3_UART_BINMODE_TEXT); cc3_camera_init (); // use MMC cc3_filesystem_init(); cc3_camera_set_resolution(CC3_CAMERA_RESOLUTION_HIGH); cc3_pixbuf_frame_set_subsample (CC3_SUBSAMPLE_NEAREST, 2, 2); init_time = cc3_timer_get_current_ms(); uint32_t i = 0; while(true) { i++; printf("%d\n", i); current_time = cc3_timer_get_current_ms() - init_time; snprintf(filename, 16, "c:/%.5d.ppm", current_time); f = fopen(filename, "w"); capture_ppm(f); fclose(f); if (current_time > INIT_PHASE_DURATION) grab_period = NORMAL_PHASE_GRAB_PERIOD; cc3_timer_wait_ms(grab_period); } return 0; }
int main(void) { char last_action = SPINLEFT; cc3_track_pkt_t t_pkt; uint32_t x0, y0, x1, y1; cc3_frame_diff_pkt_t fd_pkt; cc3_uart_init (0, CC3_UART_RATE_9600, CC3_UART_MODE_8N1, CC3_UART_BINMODE_BINARY); #ifdef VIRTUAL_CAM cc3_uart_init (0, CC3_UART_RATE_115200, CC3_UART_MODE_8N1, CC3_UART_BINMODE_TEXT); #endif setbuf(stdout, NULL); setbuf(stdin, NULL); cc3_camera_init (); //cc3_camera_set_colorspace(CC3_COLORSPACE_YCRCB); cc3_camera_set_resolution(CC3_CAMERA_RESOLUTION_LOW); cc3_pixbuf_frame_set_subsample(CC3_SUBSAMPLE_NEAREST, 2, 2); // init pixbuf with width and height #ifndef VIRTUAL_CAM //cc3_pixbuf_load(); #endif x0 = 0; y0 = 0; x1 = cc3_g_pixbuf_frame.raw_width; y1 = cc3_g_pixbuf_frame.raw_height; fd_pkt.coi = 1; fd_pkt.template_width = 8; fd_pkt.template_height = 8; t_pkt.track_invert = false; // Load in your tracking parameters t_pkt.lower_bound.channel[CC3_CHANNEL_RED] = 100; t_pkt.upper_bound.channel[CC3_CHANNEL_RED] = 150; t_pkt.lower_bound.channel[CC3_CHANNEL_GREEN] = 25; t_pkt.upper_bound.channel[CC3_CHANNEL_GREEN] = 50; t_pkt.lower_bound.channel[CC3_CHANNEL_BLUE] = 0; t_pkt.upper_bound.channel[CC3_CHANNEL_BLUE] = 30; t_pkt.noise_filter = 0; cc3_pixbuf_frame_set_roi (x0, y0, x1, y1); int i = 0; while(true) { simple_track_color(&t_pkt); #ifdef VIRTUAL_CAM printf( "Scanning IMG%05d.PPM: \n", i++); printf( "centroid = %d,%d bounding box = %d,%d,%d,%d num pix= %d density = %d\n", t_pkt.centroid_x, t_pkt.centroid_y, t_pkt.x0, t_pkt.y0, t_pkt.x1, t_pkt.y1, t_pkt.num_pixels, t_pkt.int_density ); #endif #ifndef VIRTUAL_CAM if(t_pkt.num_pixels > MIN_PIX) { if(t_pkt.centroid_x < CENT_X_LEFT) { printf("%c", SPINLEFT); last_action = SPINLEFT; } else if(t_pkt.centroid_x > CENT_X_RIGHT) { printf("%c", SPINRIGHT); last_action = SPINRIGHT; } else if(t_pkt.num_pixels < NUM_PIX) { printf("%c", FORWARD); last_action = BACKWARDS; } else { printf("%c", STOP); last_action = SPINLEFT; } } else { printf("%c", last_action); } cc3_timer_wait_ms(100); #endif } }