Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 2483 → Rev 2484

/MKLiveView/v1.0/Source/WebCamWrapper/Contracts/DetectedObject.cs
0,0 → 1,65
using System.Drawing;
using System.Runtime.Serialization;
 
namespace Touchless.Vision.Contracts
{
[DataContract]
public class DetectedObject
{
private static readonly object SyncObject = new object();
private static int _nextId = 1;
 
public DetectedObject()
{
Id = NextId();
}
 
[DataMember]
public int Id { get; private set; }
 
[IgnoreDataMember]
public Bitmap Image { get; set; }
 
//[DataMember]
//public byte[] ImageData
//{
// get
// {
// byte[] data = null;
// if (this.Image != null)
// {
// MemoryStream memoryStream = new MemoryStream();
// this.Image.Save(memoryStream, ImageFormat.Bmp);
// memoryStream.Flush();
// data = memoryStream.ToArray();
// memoryStream.Close();
// }
 
// return data;
 
 
// }
//}
 
[DataMember]
public virtual Point Position { get; set; }
 
public void AssignNewId()
{
Id = NextId();
}
 
 
private static int NextId()
{
int result;
lock (SyncObject)
{
result = _nextId;
_nextId++;
}
 
return result;
}
}
}
/MKLiveView/v1.0/Source/WebCamWrapper/Contracts/Frame.cs
0,0 → 1,75
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Runtime.Serialization;
 
namespace Touchless.Vision.Contracts
{
[DataContract]
public class Frame
{
[DataMember]
public int Id { get; set; }
 
[IgnoreDataMember]
public Bitmap OriginalImage { get; set; }
 
private Bitmap _image;
[IgnoreDataMember]
public Bitmap Image
{
get
{
if (_image == null)
{
_image = new Bitmap( OriginalImage );
}
 
return _image;
}
set { _image = value;}
}
 
public Frame(Bitmap originalImage)
{
Id = NextId();
OriginalImage = new Bitmap( originalImage );
}
 
[DataMember]
public byte[] ImageData
{
get
{
byte[] data = null;
 
if (Image != null)
using( MemoryStream memoryStream = new MemoryStream() )
{
Image.Save( memoryStream, ImageFormat.Png );
memoryStream.Flush();
data = memoryStream.ToArray();
}
 
return data;
}
//Setter is only here for serialization purposes
set { }
}
 
 
private static readonly object SyncObject = new object();
private static int _nextId = 1;
private static int NextId()
{
int result;
lock (SyncObject)
{
result = _nextId;
_nextId++;
}
 
return result;
}
}
}
/MKLiveView/v1.0/Source/WebCamWrapper/Contracts/IFrameSource.cs
0,0 → 1,12
using System;
 
namespace Touchless.Vision.Contracts
{
public interface IFrameSource : ITouchlessAddIn
{
event Action<IFrameSource, Frame, double> NewFrame;
 
bool StartFrameCapture();
void StopFrameCapture();
}
}
/MKLiveView/v1.0/Source/WebCamWrapper/Contracts/IObjectDetector.cs
0,0 → 1,18
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
 
namespace Touchless.Vision.Contracts
{
public interface IObjectDetector : ITouchlessAddIn
{
event Action<IObjectDetector, DetectedObject, Frame> NewObject;
event Action<IObjectDetector, DetectedObject, Frame> ObjectMoved;
event Action<IObjectDetector, DetectedObject, Frame> ObjectRemoved;
event Action<IObjectDetector, Frame, ReadOnlyCollection<DetectedObject>> FrameProcessed;
ReadOnlyCollection<DetectedObject> DetectObjects(Frame frame);
}
}
/MKLiveView/v1.0/Source/WebCamWrapper/Contracts/ITouchlessAddIn.cs
0,0 → 1,12
using System.Windows;
 
namespace Touchless.Vision.Contracts
{
public interface ITouchlessAddIn
{
string Name { get; }
string Description { get; }
bool HasConfiguration { get; }
UIElement ConfigurationElement { get; }
}
}