/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; } |
} |
} |