Exemple #1
0
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;
}
Exemple #2
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
   }
  
}