Meadow.Foundation.Sensors.Camera.Vc0706
Vc0706 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Vc0706 camera;
//Uses SimpleJpegDecoder package for jpeg decoding
public MeadowApp()
{
Console.WriteLine("Initialize hardware...");
camera = new Vc0706(Device, Device.SerialPortNames.Com4, 38400);
camera.SetImageSize(Vc0706.ImageSize._320x240);
Console.WriteLine($"Image size is {camera.GetImageSize()}");
camera.TakePicture();
uint frameLen = camera.GetFrameLength();
Console.WriteLine($"Frame length: {frameLen}");
byte bytesToRead;
byte[] jpg;
var decoder = new JpegDecoder();
using (var stream = new MemoryStream())
{
Console.WriteLine($"Decode jpeg - this operation may take serveral seconds");
while (frameLen > 0)
{
bytesToRead = (byte)Math.Min(32, frameLen);
var buffer = camera.ReadPicture(bytesToRead);
stream.Write(buffer, 0, bytesToRead);
frameLen -= bytesToRead;
}
jpg = decoder.DecodeJpeg(stream.ToArray());
}
Console.WriteLine($"Jpeg data length: {jpg.Length}");
Console.WriteLine($"Jpeg decoded is {decoder.ImageSize} bytes");
Console.WriteLine($"Width {decoder.Width}");
Console.WriteLine($"Height {decoder.Height}");
Console.WriteLine($"IsColor {decoder.IsColor}");
}
Sample project(s) available on GitHub
|
Code Example
Vc0706 camera;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
camera = new Vc0706(Device, Device.PlatformOS.GetSerialPortName("COM4"), 38400);
return Task.CompletedTask;
}
public async override Task Run()
{
if (!camera.SetCaptureResolution(Vc0706.ImageResolution._160x120))
{
Resolver.Log.Info("Set resolution failed");
}
var jpegData = await camera.CapturePhoto();
if (jpegData.Length > 0)
{
var decoder = new JpegDecoder();
var jpg = decoder.DecodeJpeg(jpegData);
Console.WriteLine($"Jpeg decoded is {jpg.Length} bytes, W: {decoder.Width}, H: {decoder.Height}");
}
else
{
Console.WriteLine("Image capture failed");
}
}