コード例 #1
0
ファイル: camera.c プロジェクト: Farranco/HyperopicBarcode
int main()
{
	init_window("Blurcode", 320, 80);
	CvCapture *capture = init_camera();
	IplImage *input = query_frame(capture);
	AppData data;
	CvSize size = cvSize(input->width / 2, input->height / 2);
	create_images(&data, size, 3);
	CvSize debug_size = cvSize(COLUMNS * size.width, ROWS * size.height);
	data.debug = cvCreateImage(debug_size, IPL_DEPTH_8U, 3);
	printf("camera=%dx%d zoomed=%dx%d debug=%dx%d\n",
		   input->width, input->height, size.width, size.height,
		   data.debug->width, data.debug->height);
	int delay = 100;
	while ((cvWaitKey(delay) & 255) != 27) {
		delay = 10;
		input = query_frame(capture);
		cvCvtColor(input, input, CV_BGR2RGB);
		// Horizontal flip (mirror display)
		cvFlip(input, input, 1);
		cvResize(input, data.rgb, CV_INTER_AREA);
		cvSplit(data.rgb, data.red, NULL, NULL, NULL);
		cvSmooth(data.red, data.red, CV_GAUSSIAN, 3, 3, 0, 0);
		decode(&data, ANGLE_OF_VIEW, "input trace", NULL, NULL);
		cvResetImageROI(data.debug);
		cvCvtColor(data.debug, data.debug, CV_RGB2BGR);
		cvShowImage("Blurcode", data.debug);
	}
	cvReleaseCapture(&capture);
	cvReleaseImage(&data.debug);
	release_images(&data);
	cvDestroyWindow("Blurcode");
	return 0;
}
コード例 #2
0
void GlzDecoderWindow::clear()
{
    Lock lock(_win_modifiers_mutex);
    release_images();
    init();
}
コード例 #3
0
ファイル: df_neo.c プロジェクト: geekmaster/buildroot-kindle
int
main (int    argc,
      char **argv)
{
  DFBSurfaceDescription   dsc;
  DFBSurfaceDescription   back_dsc;
  DFBRectangle            rect;
  IDirectFBImageProvider *provider;
  IDirectFBEventBuffer   *keybuffer;
  DFBInputEvent           evt;
  int                     width;
  int                     height;
  int                     quit;
  unsigned int            cycle_len;
  struct timeval          tv;
  long                    start_time;
  long                    current_time;
  long                    frame_delay;
  long                    delay;

  frame_delay = delay = FRAME_DELAY;
  cycle_len   = CYCLE_LEN;
  quit        = FALSE;

  DFBCHECK (DirectFBInit (&argc, &argv));

  if (argc > 1 && argv[1] && strcmp (argv[1], "--on-crack") == 0)
    on_crack = TRUE;

  /* create the super interface */
  DFBCHECK (DirectFBCreate (&dfb));

  dfb->SetCooperativeLevel (dfb, DFSCL_FULLSCREEN);
  DFBCHECK (dfb->CreateInputEventBuffer (dfb, DICAPS_KEYS,
                                         DFB_FALSE, &keybuffer));

  /*  create the primary surface  */
  dsc.flags = DSDESC_CAPS;
  dsc.caps  = DSCAPS_PRIMARY;

  if (!on_crack) {
       dsc.caps |= DSCAPS_TRIPLE;

       if (dfb->CreateSurface (dfb, &dsc, &primary) != DFB_OK) {
            dsc.caps = (dsc.caps & ~DSCAPS_TRIPLE) | DSCAPS_DOUBLE;
            DFBCHECK (dfb->CreateSurface (dfb, &dsc, &primary));
       }
  }
  else
       DFBCHECK (dfb->CreateSurface (dfb, &dsc, &primary));

  /* load size of background image */
  DFBCHECK (dfb->CreateImageProvider (dfb, BACKGROUND_NAME, &provider));
  DFBCHECK (provider->GetSurfaceDescription (provider, &back_dsc));
  back_width  = back_dsc.width;
  back_height = back_dsc.height;

  if (!back_width || !back_height)
    return -1;

  /*  create the background surface  */
  DFBCHECK (dfb->CreateSurface (dfb, &back_dsc, &background));
  provider->RenderTo (provider, background, NULL);
  provider->Release (provider);

  /*  create subsurface in the middle of the screen */
  primary->GetSize (primary, &width, &height);
  rect.x = (width  - back_width)  / 2;
  rect.y = (height - back_height) / 2;
  rect.w = back_width;
  rect.h = back_height;
  primary->GetSubSurface (primary, &rect, &sub);

  if (on_crack)
    {
      /* clear screen */
      primary->Clear (primary, 0, 0, 0, 0xff);
    }
  else
    {
      /*  fill screen and backbuffers with tiled background  */
      primary->TileBlit (primary, background, NULL, rect.x, rect.y);
      primary->Flip (primary, NULL, 0) ;
      primary->TileBlit (primary, background, NULL, rect.x, rect.y);
      primary->Flip (primary, NULL, 0) ;
      primary->TileBlit (primary, background, NULL, rect.x, rect.y);

      primary->SetClip (primary, NULL);
    }

  /*  load the remaining images  */
  load_images ();

  frame_num = 0;

  while (!quit)
    {
      gettimeofday (&tv, NULL);
      start_time = tv.tv_sec * 1000 + tv.tv_usec / 1000;

      timeout (cycle_len);

      while (keybuffer->GetEvent (keybuffer, DFB_EVENT(&evt)) == DFB_OK)
        {
          if (evt.type == DIET_KEYPRESS)
            {
              switch (evt.key_id)
                {
                case DIKI_LEFT:
                  frame_delay = MIN (500, frame_delay + 5);
                  break;
                case DIKI_RIGHT:
                  frame_delay = MAX (0, frame_delay - 5);
                  break;
                case DIKI_UP:
                  cycle_len = MIN (600, cycle_len + 6);
                  break;
                case DIKI_DOWN:
                  cycle_len = cycle_len > 6 ? cycle_len - 6 : 6;
                  break;
                case DIKI_SPACE:
                case DIKI_ENTER:
                  colorize = !colorize;
                  break;
                case DIKI_A:
                  alpha = !alpha;
                  break;
                case DIKI_HOME:
                  cycle_len   = CYCLE_LEN;
                  frame_delay = FRAME_DELAY;
                  colorize    = TRUE;
                  alpha       = TRUE;
                  break;
                case DIKI_ESCAPE:
                case DIKI_Q:
                  quit = TRUE;
                  break;
                default:
                  break;
                }

              switch (evt.key_symbol)
                {
                case DIKS_OK:
                  colorize = !colorize;
                  break;
                case DIKS_BACK:
                case DIKS_STOP:
                  quit = TRUE;
                  break;
                default:
                  break;
                }
            }
        }

      if (frame_delay)
        {
          gettimeofday (&tv, NULL);
          current_time = tv.tv_sec * 1000 + tv.tv_usec / 1000;

          delay = frame_delay - (current_time - start_time);
          if (delay > 0)
            usleep (1000 * delay);
        }
    }

  keybuffer->Release (keybuffer);
  release_images ();
  background->Release (background);
  sub->Release (sub);
  primary->Release (primary);
  dfb->Release (dfb);

  return 0;
}
コード例 #4
0
ファイル: main.c プロジェクト: LuckJC/pro-mk
int main(int argc,char *argv[])
{
    //struct image *norImages = NULL;
    //unsigned int num_nor_images = 0;
    struct image download_agent = { NULL, 0, 0, "", 0 };
    struct image download_agent_TCM = { NULL, 0, 0, "", 0 };
    struct image download_EPP = { NULL, 0, 0, "", 0 };
    struct image nor_flash_table = { NULL, 0, 0, "", 0 };
    struct image nand_flash_table = { NULL, 0, 0, "", 0 };
    struct image *linux_images = NULL;
    //unsigned int num_images = 0;
    unsigned int num_linux_images = 0;
    unsigned int bmt_address = 0;
    //int i = 0;

    struct image boot_loader = { NULL, 0, 0, "", 0 };
    struct image ext_boot_loader = { NULL, 0, 0, "", 0 };
    //struct image dsp_boot_loader = { NULL, 0, 0, "", 0 };
    struct image rom_image = { NULL, 0, 0, "", 0 };
    //struct image secondary_rom_image = { NULL, 0, 0, "", 0 };
    //struct image dsp_rom_image = { NULL, 0, 0, "", 0 };
    //struct image demand_paging_image = { NULL, 0, 0, "", 0 };

    //jone.wang@

    //freopen(TEMPORARY_LOG_FILE, "a", stdout); setbuf(stdout, NULL);
    //freopen(TEMPORARY_LOG_FILE, "a", stderr); setbuf(stderr, NULL);
    //fflush(stdout);
    //fflush(stderr);
    //setbuf(stdout, NULL);
    //setbuf(stderr, NULL);
    //fprintf(stdout, "Brom Ite main =================\n");
    //added by xiaohui 4-19

    if (argc < 2) {
        fprintf(stderr, "Usage: %s filepath [write_block_size] [trace_log]\n", basename(argv[0]));
        return -1;
    }

    char path[BUFSIZ] = "";
    strcpy(path, argv[1]);

    /* "/system/etc/firmware/modem" normally */
    if (access(path, R_OK) != 0) {
        fprintf(stderr, "path '%s` is invalid. %d, %s\n", path, errno, strerror(errno));
        return -1;
    }

    path[strlen(path)] = '/';
    LOG("path: %s\n", path);

    if (generate_all_image_path(path) != 0)
        return -1;

    //strcpy(dev_path,argv[2]);
    //pipe_fd = atoi(argv[3]);
    //pipe_buf = (char *)malloc(PIPE_BUF_SIZE);
    //if(!pipe_buf)
        //return 0;
    //printf("dev_path=%s\n",dev_path);
    //printf("pipe fd=%d\n",pipe_fd);

    log_feedback("begin to feedback!!!\n");
    //printf("%s\n",pipe_buf);
    //return 0;
    //added by xiaohui 4-19    

    if (argc > 2) {
        int psiz = atoi(argv[2]);
        if (psiz > 0) {
            PSIZ = psiz;
        }
    }
    LOG("PSIZ = %d\n", PSIZ);

    int trace_log = 0;
    if (argc > 3) {
        if (argv[3][0] == '0')
            trace_log = 0;
        else
            trace_log = 1;
    }
    if (trace_log)
        LOG("enable log tracing\n");
    enable_log = trace_log;

    int rc = -1;

    do {
        // Acquire pointers to DA, flash tables, and images
        if ((rc = acquire_download_agent(&download_agent,DOWNLOAD_AGENT_FILE_PATH,DOWNLOAD_AGENT_LOAD_ADDR)) != 0)
            break;
        //acquire_download_agent(&download_agent_TCM,DOWNLOAD_AGENT_TCM_FILE_PATH, DOWNLOAD_AGENT_TCM_LOAD_ADDR);
        if ((rc = acquire_download_agent(&download_EPP,DOWNLOAD_EPP_FILE_PATH, DOWNLOAD_EPP_LOAD_ADDR)) != 0)
            break;
        if ((rc = acquire_flash_table(&nor_flash_table, NOR_FLASH_TABLE_FILE_PATH)) != 0)
            break;
        if ((rc = acquire_flash_table(&nand_flash_table, NAND_FLASH_TABLE_FILE_PATH)) != 0)
            break;

        //Acquire Boot loader
        if ((rc = acquire_image(&boot_loader, BOOT_LOADER_FILE_PATH,0)) != 0)
            break;
        if ((rc = acquire_image(&ext_boot_loader, EXT_BOOT_LOADER_FILE_PATH,0)) != 0)
            break;
        //acquire_image(&dsp_boot_loader, DSP_BOOT_LOADER_FILE_PATH,0);
        //Acquire ROM images
        if ((rc = acquire_image(&rom_image, ROM_FILE_PATH,0)) != 0)
            break;
        //acquire_image(&secondary_rom_image, SECONDARY_ROM_FILE_PATH,0);
        //acquire_image(&dsp_rom_image, DSP_ROM_FILE_PATH,0);
        //acquire_image(&demand_paging_image, DEMAND_PAGING_ROM0_FILE_PATH,0);

        //Acquire linux partition images
        if ((rc = acquire_linux_images(&linux_images, &num_linux_images, &bmt_address)) != 0)
            break;
    } while (0);

    if (rc != 0)
        return rc;

    rc = download_images(&download_agent,
                         &download_agent_TCM,
                         &nor_flash_table,
                         &nand_flash_table,
                         &download_EPP,
                         &boot_loader,
                         &ext_boot_loader,
                         NULL, //&dsp_boot_loader,
                         &rom_image,
                         NULL, //&secondary_rom_image,
                         NULL, //&dsp_rom_image,
                         NULL, //&demand_paging_image,
                         linux_images,
                         (const struct ExternalMemorySetting *)&externalMemorySetting,
                         sizeof(LINUX_PARTITION_IMAGE_FILE_NAME) / sizeof(LINUX_PARTITION_IMAGE_FILE_NAME[0]), //num_linux_images,modified by xiaohui 4-22
                         bmt_address,
                         1, /*0:UART, 1:USB*/
                         1 /*0:NOR, 1:NAND*/);
    if (rc != S_DONE) {
        printf("download failed, rc %d\n", rc);
    } else {
        //jone.wang
        printf("download done\n");
    }

    release_images(&linux_images, num_linux_images);

    release_image(&boot_loader);
    release_image(&ext_boot_loader);
    release_image(&rom_image);
    //release_image(&secondary_rom_image);
    //release_image(&demand_paging_image);

    release_flash_table(&nand_flash_table);
    release_flash_table(&nor_flash_table);
    release_download_agent(&download_agent);
    release_download_agent(&download_agent_TCM);
    release_download_agent(&download_EPP);

    //added by xiaohui 4-19
    //close(pipe_fd);
    //free(pipe_buf);

    printf("brom_lite end, rc %d\n", rc);
    return rc;
}
コード例 #5
0
ファイル: picture.c プロジェクト: Farranco/HyperopicBarcode
int main(int argc, char **argv)
{
	if (argc < 2) {
		fprintf(stderr, "usage: picture [options] <infile> ...\n");
		fprintf(stderr, "options:  --test    run test suite\n");
		fprintf(stderr,
				"          --force   don't skip existing output files\n");
		return 1;
	}
	char basename[100];
	char outfilename[200];
	char linkfilename[200];
	bool force = false;
	AppData data;
	null_images(&data);
	for (int n = 1; n < argc; n++) {
		if (strcmp(argv[n], "--test") == 0) {
			printf("Running dir8 test suite...\n");
			dir8_test();
			printf("Running dir16 test suite...\n");
			dir16_test();
			printf("Running checksums test suite...\n");
			checksums_test();
			continue;
		} else if (strcmp(argv[n], "--force") == 0) {
			force = true;
			continue;
		}
		char *infilename = argv[n];
		char *slash = strrchr(infilename, '/');
		if (!slash)
			slash = infilename - 1;
		strcpy(basename, slash + 1);
		char *ext = strrchr(basename, '.');
		if (ext)
			ext[0] = 0;
		strcpy(outfilename, "output/");
		strcat(outfilename, basename);
		strcat(outfilename, ".png");
		strcpy(linkfilename, "digits/");
		strcat(linkfilename, basename);
		if (!force) {
			FILE *fp = fopen(outfilename, "r");
			if (fp) {			// Skip existing output file.
				fclose(fp);
				continue;
			}
		}
		printf("%s => %s\n", infilename, outfilename);
		IplImage *input = cvLoadImage(infilename, CV_LOAD_IMAGE_COLOR);
		if (!input) {
			fprintf(stderr, "could not read %s\n", infilename);
			return 1;
		}
		int zoom = max(1, max(input->width, input->height) / 600);
		if (data.red == NULL ||
			data.red->width != input->width / zoom ||
			data.red->height != input->height / zoom) {
			if (data.red)
				release_images(&data);
			if (data.debug)
				cvReleaseImage(&data.debug);
			CvSize zoom_size =
				cvSize(input->width / zoom, input->height / zoom);
			create_images(&data, zoom_size, 4);
			CvSize debug_size = cvSize(COLUMNS * input->width / zoom,
									   ROWS * input->height / zoom);
			printf("debug_size=%dx%d\n", debug_size.width,
				   debug_size.height);
			data.debug = cvCreateImage(debug_size, IPL_DEPTH_8U, 3);
		}
		// printf("Resizing input from %dx%d to %dx%d...\n",
		// input->width, input->height, data.rgb->width, data.rgb->height);
		cvCvtColor(input, input, CV_BGR2RGB);
		cvResize(input, data.rgb, CV_INTER_AREA);
		cvSplit(data.rgb, data.red, NULL, NULL, NULL);
		// debug_image(&data, data.rgb);
		bool success = decode(&data, ANGLE_OF_VIEW,
							  "gnuplot threshold trace simulator1 simulator3",
							  NULL, NULL);
		if (success) {
			unlink(linkfilename);
			symlink(data.digits, linkfilename);
			printf("digits=%s\n", data.digits);
		}
		cvResetImageROI(data.debug);
		cvCvtColor(data.debug, data.debug, CV_RGB2BGR);
		if (cvSaveImage(outfilename, data.debug) == 0) {
			fprintf(stderr, "could not save output file\n");
			return 1;
		}
	}
	if (data.red)
		release_images(&data);
	if (data.debug)
		cvReleaseImage(&data.debug);
	return 0;
}