int main (int argc, char *argv[]) { unsigned char *data; int len; JpegDecoder *dec; char *fn = "biglebowski.jpg"; unsigned char *ptr; int rowstride; int width; int height; dec = jpeg_decoder_new (); if (argc > 1) fn = argv[1]; data = getfile (fn, &len); jpeg_decoder_addbits (dec, data, len); jpeg_decoder_decode (dec); jpeg_decoder_get_component_ptr (dec, 1, &ptr, &rowstride); jpeg_decoder_get_component_size (dec, 1, &width, &height); dump_pgm (ptr, rowstride, width, height); return 0; }
void task_main(int argc, char *argv[]) { _is_running = true; int ret = 0; struct frame_data frame; memset(&frame, 0, sizeof(frame)); uint32_t timeout_cnt = 0; // Main loop while (!_task_should_exit) { ret = g_dev->get_frame(frame); if (ret < 0) { PX4_ERR("Get Frame failed"); continue; } else if (ret == 1) { // No image in buffer usleep(1000); ++timeout_cnt; if (timeout_cnt > 1000) { PX4_WARN("No frames received for 1 sec"); timeout_cnt = 0; } continue; } timeout_cnt = 0; // Write images into a file if (_trigger > 0) { PX4_INFO("Trigger camera"); dump_pgm(frame.data, frame.bytes, frame.seq, frame.timestamp); --_trigger; } /*************************************************************** * * Optical Flow computation * **************************************************************/ ret = g_dev->put_frame(frame); if (ret < 0) { PX4_ERR("Put Frame failed"); } } _is_running = false; }
int main (int argc, char *argv[]) { unsigned char *data; int len; JpegDecoder *dec; char *fn = "c:\\data\\liboil\\test.jpg"; unsigned char *ptr; int rowstride; int width; int height; /*if (argc < 2) { printf("jpeg_test <file.jpg>\n"); exit(1); }*/ if (argc > 1) fn = argv[1]; std_log(LOG_FILENAME_LINE, "Test Started examples_jpeg"); dec = jpeg_decoder_new (); //to create decoder instance data = getfile (fn, &len); jpeg_decoder_addbits (dec, data, len); jpeg_decoder_decode (dec); jpeg_decoder_get_component_ptr (dec, 1, &ptr, &rowstride); jpeg_decoder_get_component_size (dec, 1, &width, &height); dump_pgm (ptr, rowstride, width, height); std_log(LOG_FILENAME_LINE, "Test Successful"); create_xml(0); return 0; }
static void process_image(const void *p, int size) { int i, newi, newsize=0; struct timespec frame_time; int y_temp, y2_temp, u_temp, v_temp; unsigned char *pptr = (unsigned char *)p; // record when process was called clock_gettime(CLOCK_REALTIME, &frame_time); framecnt++; printf("frame %d: ", framecnt); // This just dumps the frame to a file now, but you could replace with whatever image // processing you wish. // if(fmt.fmt.pix.pixelformat == V4L2_PIX_FMT_GREY) { printf("Dump graymap as-is size %d\n", size); dump_pgm(p, size, framecnt, &frame_time); } else if(fmt.fmt.pix.pixelformat == V4L2_PIX_FMT_YUYV) { #if defined(COLOR_CONVERT) printf("Dump YUYV converted to RGB size %d\n", size); // Pixels are YU and YV alternating, so YUYV which is 4 bytes // We want RGB, so RGBRGB which is 6 bytes // for(i=0, newi=0; i<size; i=i+4, newi=newi+6) { y_temp=(int)pptr[i]; u_temp=(int)pptr[i+1]; y2_temp=(int)pptr[i+2]; v_temp=(int)pptr[i+3]; yuv2rgb(y_temp, u_temp, v_temp, &bigbuffer[newi], &bigbuffer[newi+1], &bigbuffer[newi+2]); yuv2rgb(y2_temp, u_temp, v_temp, &bigbuffer[newi+3], &bigbuffer[newi+4], &bigbuffer[newi+5]); } dump_ppm(bigbuffer, ((size*6)/4), framecnt, &frame_time); #else printf("Dump YUYV converted to YY size %d\n", size); // Pixels are YU and YV alternating, so YUYV which is 4 bytes // We want Y, so YY which is 2 bytes // for(i=0, newi=0; i<size; i=i+4, newi=newi+2) { // Y1=first byte and Y2=third byte bigbuffer[newi]=pptr[i]; bigbuffer[newi+1]=pptr[i+2]; } dump_pgm(bigbuffer, (size/2), framecnt, &frame_time); #endif } else if(fmt.fmt.pix.pixelformat == V4L2_PIX_FMT_RGB24) { printf("Dump RGB as-is size %d\n", size); dump_ppm(p, size, framecnt, &frame_time); } else { printf("ERROR - unknown dump format\n"); } fflush(stderr); //fprintf(stderr, "."); fflush(stdout); }