Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Threading;
- using Microsoft.SPOT;
- using Microsoft.SPOT.Presentation;
- using Microsoft.SPOT.Presentation.Controls;
- using Microsoft.SPOT.Presentation.Media;
- using Microsoft.SPOT.Touch;
- using Gadgeteer.Networking;
- using GT = Gadgeteer;
- using GTM = Gadgeteer.Modules;
- using Gadgeteer.Modules.GHIElectronics;
- namespace Gadgeteer_Pixels_02
- {
- public partial class Program
- {
- Bitmap currentImage;
- // This method is run when the mainboard is powered up or reset.
- void ProgramStarted()
- {
- /*******************************************************************************************
- Modules added in the Program.gadgeteer designer view are used by typing
- their name followed by a period, e.g. button. or camera.
- Many modules generate useful events. Type +=<tab><tab> to add a handler to an event, e.g.:
- button.ButtonPressed +=<tab><tab>
- If you want to do something periodically, use a GT.Timer and handle its Tick event, e.g.:
- GT.Timer timer = new GT.Timer(1000); // every second (1000ms)
- timer.Tick +=<tab><tab>
- timer.Start();
- *******************************************************************************************/
- // Use Debug.Print to show messages in Visual Studio's "Output" window during debugging.
- Debug.Print("Program Started");
- camera.DebugPrintEnabled = true;
- // So we can query the camera
- // Stream the image to the mainboard as a bitmap as this is easy to process
- camera.BitmapStreamed += new Camera.BitmapStreamedEventHandler(camera_BitmapStreamed);
- // When you press the button take a picture and process the pixels
- button.ButtonPressed += new Button.ButtonEventHandler(button_ButtonPressed);
- }
- void camera_BitmapStreamed(Camera sender, Bitmap bitmap)
- {
- display.SimpleGraphics.DisplayImage(bitmap, 5, 5);
- camera.StopStreamingBitmaps();
- currentImage = bitmap;
- int redTotal = 0;
- int redAverage = 0;
- int greenTotal = 0;
- int greenAverage = 0;
- int blueTotal = 0;
- int blueAverage = 0;
- int pixelTotal = 0;
- Color currentPixel;
- Debug.Print("Number of pixels wide = " + camera.CurrentPictureResolution.Width);
- Debug.Print("Number of pixels high = " + camera.CurrentPictureResolution.Height);
- for (int xIncrement = 0; xIncrement < camera.CurrentPictureResolution.Width; xIncrement += 10)
- {
- for (int yIncrement = 0; yIncrement < camera.CurrentPictureResolution.Height; yIncrement += 10)
- {
- currentPixel = currentImage.GetPixel(xIncrement, yIncrement);
- redTotal += ColorUtility.GetRValue(currentPixel);
- greenTotal += ColorUtility.GetGValue(currentPixel);
- blueTotal += ColorUtility.GetBValue(currentPixel);
- pixelTotal++;
- }
- }
- redAverage = redTotal / pixelTotal;
- greenAverage = greenTotal / pixelTotal;
- blueAverage = blueTotal / pixelTotal;
- led.SetRedIntensity(redAverage);
- led.SetBlueIntensity(blueAverage);
- led.SetGreenIntensity(greenAverage);
- led1.SetRedIntensity(redAverage);
- led1.SetBlueIntensity(blueAverage);
- led1.SetGreenIntensity(greenAverage);
- Debug.Print("redAverage = " + redAverage);
- Debug.Print("greenAverage = " + greenAverage);
- Debug.Print("blueAverage = " + blueAverage);
- }
- void button_ButtonPressed(Button sender, Button.ButtonState state)
- {
- Debug.Print("Streaming....");
- // How can I process pixels as they stream?
- camera.StartStreamingBitmaps(new Bitmap(camera.CurrentPictureResolution.Width,camera.CurrentPictureResolution.Height));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment