![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
BaseJpegDeocde exampe program
Dependencies: BaseJpegDecode Terminal BaseUsbHost mbed mbed-rtos
Fork of BaseJpegDecode by
Diff: example1_c270.cpp
- Revision:
- 2:697ebeb8336f
- Parent:
- 0:7121d9fb45f4
- Child:
- 3:2709bbf8baae
--- a/example1_c270.cpp Mon Oct 08 11:38:57 2012 +0000 +++ b/example1_c270.cpp Mon Oct 22 14:10:04 2012 +0000 @@ -1,7 +1,11 @@ #if 1 +// +// simple color tracking +// #include "mbed.h" #include "BaseJpegDecode.h" #include "uvc.h" +#include "Terminal.h" // Logitech C270 #define WIDTH 320 @@ -10,7 +14,7 @@ #define ASSERT(A) while(!(A)){fprintf(stderr,"\n\n%s@%d %s ASSERT!\n\n",__PRETTY_FUNCTION__,__LINE__,#A);exit(1);}; DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4); -Serial pc(USBTX, USBRX); +Terminal term(USBTX, USBRX); class CalcCenter : public BaseJpegDecode { public: @@ -23,7 +27,7 @@ } if (block == 3) { // 0-1:Y 2:Cb 3:Cr m_buf[mcu] = value; // debug - if (value >= 2) { // red + if (value >= 3) { // red m_x_sum += value*(mcu%(WIDTH/16)); m_y_sum += value*(mcu/(WIDTH/16)); m_sum += value; @@ -56,8 +60,8 @@ } int main() { - pc.baud(921600); - printf("%s\n", __FILE__); + term.baud(921600); + term.printf("%s\n", __FILE__); calc = new CalcCenter; ASSERT(calc); @@ -67,16 +71,29 @@ cam->SetFrameInterval(2000000); // 5.0fps cam->setOnResult(callback_motion_jpeg); ASSERT(cam->setup() >= 0); + term.cls(); + int fg, old_fg = 0xffffff; while(1) { - printf("\n"); // start debug dump - for(int y = 0; y < HEIGHT/8; y++) { + int y; + for(y = 0; y < HEIGHT/8; y++) { + term.locate(0, y); for(int x = 0; x < WIDTH/16; x++) { - printf("%+3d,", calc->m_buf[y*WIDTH/16+x]); + int value = calc->m_buf[y*WIDTH/16+x]; + if (value >= 3) { + fg = 0xff0000; // red + } else { + fg = 0xffffff; // white + } + if (fg != old_fg) { + term.foreground(fg); + old_fg = fg; + } + term.printf("%+3d,", value); cam->poll(); } - printf("\n"); } - printf("red:(%d,%d)\n", calc->x_center, calc->y_center); + term.locate(0, y); + term.printf("Cr:(%d,%d)", calc->x_center, calc->y_center); cam->wait_ms(500); led3 = !led3; }