Squashed commit of the following:

commit 45c5b72d6c294fe1a4cd90f8090442d313886fc9
Author: Abdelrahman Mahmoud <mahmoud@affectiva.com>
Date:   Wed Feb 3 07:17:09 2016 -0500

    Remove affdex me .. fix dll references

commit 98bfdbc3302c1ba8226a4151826c541d8d250aa9
Author: Abdelrahman Mahmoud <ahamino@gmail.com>
Date:   Wed Feb 3 06:57:59 2016 -0500

    Update README.md

commit fd9dedbdc7daeeacc65ef1df8b79447e5e22cc64
Author: Abdelrahman Mahmoud <ahamino@gmail.com>
Date:   Tue Feb 2 15:43:00 2016 -0500

    Update README.md

    update appveyor badge

commit ccbd9770da316c35de75b47d749e14bd551acc2a
Author: Abdelrahman Mahmoud <mahmoud@affectiva.com>
Date:   Tue Feb 2 15:36:11 2016 -0500

    Update appveyor badge

commit b08547f1dd77548f24140e709a8574d23c8aa7db
Author: Abdelrahman Mahmoud <mahmoud@affectiva.com>
Date:   Tue Feb 2 15:32:03 2016 -0500

    Add appveyor badge

commit e0a2b36ca9fb0c828bf54c7326aa59a1fa6d1079
Author: Abdelrahman Mahmoud <mahmoud@affectiva.com>
Date:   Tue Feb 2 15:11:50 2016 -0500

    remove nuget references

commit b5561f7353381106ad5b133d3bc73d49d36bcbc0
Author: Abdelrahman Mahmoud <mahmoud@affectiva.com>
Date:   Tue Feb 2 15:01:15 2016 -0500

    remove nuget

commit ec3d93bb38e5390f176de23dd249b30e5420f3fb
Author: Abdelrahman Mahmoud <mahmoud@affectiva.com>
Date:   Tue Feb 2 14:09:28 2016 -0500

    More changes to get nuget working

commit ea9662b583d08fa9bae3b30cb2d909d288911b2e
Author: Abdelrahman Mahmoud <mahmoud@affectiva.com>
Date:   Tue Feb 2 12:53:20 2016 -0500

    Change the opencv version

commit 56ffaebfb3c3cdc1610f1ad2c67a47010d0e3dbf
Author: Abdelrahman Mahmoud <mahmoud@affectiva.com>
Date:   Tue Feb 2 12:29:22 2016 -0500

    Commit changes to the nuget configuration

commit 3e6aa2c2dc4a8cb97dd9999154b8c6fb5471c351
Author: Abdelrahman Mahmoud <mahmoud@affectiva.com>
Date:   Tue Feb 2 12:12:03 2016 -0500

    add nuget configuration

commit e69ea5e078b42a286f0ca27b09b922178e376cd1
Author: Abdelrahman Mahmoud <mahmoud@affectiva.com>
Date:   Mon Feb 1 17:02:38 2016 -0500

    Remove unecessary packages from nuget

commit 3f98b04af745b880be3f4be5d4e7d7a6174f2453
Author: Abdelrahman Mahmoud <mahmoud@affectiva.com>
Date:   Mon Dec 21 18:22:45 2015 -0500

    Update the documentation

commit a92352bea891e553fb8f8da61afda3fa255ec46f
Author: Abdelrahman Mahmoud <mahmoud@affectiva.com>
Date:   Mon Dec 21 17:54:55 2015 -0500

    Add video demo 2.1
This commit is contained in:
Abdelrahman Mahmoud 2016-02-03 07:20:08 -05:00
parent 35fb6bec6e
commit 0d39ef4964
99 changed files with 1076 additions and 6126 deletions

View File

@ -1,181 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{5B893EA1-EB11-425A-BF8A-05822F5E2C9A}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>AffdexMe</RootNamespace>
<AssemblyName>AffdexMe</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>$(ProjectDir)Resources\AffdexMe_Logo.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Affdex, Version=2.0.0.10, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>c:\Program Files (x86)\Affectiva\Affdex SDK\bin\release\Affdex.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="WpfAnimatedGif">
<HintPath>$(ProjectDir)packages\WpfAnimatedGif.1.4.13\lib\net\WpfAnimatedGif.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="MetricSelectionUI.xaml.cs" />
<Compile Include="NameToResourceConverter.cs" />
<Compile Include="UpperCaseConverter.cs" />
<Page Include="$(ProjectDir)MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="App.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="$(ProjectDir)MainWindow.xaml.cs">
<DependentUpon>$(ProjectDir)MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Page Include="MetricSelectionUI.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
</ItemGroup>
<ItemGroup>
<Compile Include="$(ProjectDir)Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="$(ProjectDir)Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="$(ProjectDir)Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>$(ProjectDir)Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>$(ProjectDir)Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<Resource Include="$(ProjectDir)Fonts\Square.ttf" />
<None Include="$(ProjectDir)Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>$(ProjectDir)Settings.Designer.cs</LastGenOutput>
</None>
<AppDesigner Include="$(ProjectDir)Properties\" />
</ItemGroup>
<ItemGroup>
<None Include="$(ProjectDir)App.config" />
</ItemGroup>
<ItemGroup>
<Resource Include="$(ProjectDir)Resources\AffectivaLogo1.png" />
<Resource Include="$(ProjectDir)Resources\AffdexMe_Logo.ico" />
</ItemGroup>
<ItemGroup>
<Content Include="affdex-native.dll" />
<Resource Include="anger.jpg" />
<Resource Include="attention.jpg" />
<Resource Include="brow_furrow.jpg" />
<Resource Include="brow_raise.jpg" />
<Resource Include="chin_raise.jpg" />
<Resource Include="contempt.jpg" />
<Resource Include="disgust.jpg" />
<Resource Include="engagement.jpg" />
<Resource Include="eye_closure.jpg" />
<Resource Include="fear.jpg" />
<Resource Include="frown.jpg" />
<Resource Include="inner_brow_raise.jpg" />
<Resource Include="joy.jpg" />
<Resource Include="lip_press.jpg" />
<Resource Include="lip_pucker.jpg" />
<Resource Include="lip_suck.jpg" />
<Resource Include="mouth_open.jpg" />
<Resource Include="negative_valence.jpg" />
<Resource Include="nose_wrinkle.jpg" />
<Resource Include="positive_valence.jpg" />
<Resource Include="sadness.jpg" />
<Resource Include="smile.jpg" />
<Resource Include="smirk.jpg" />
<Resource Include="surprise.jpg" />
<Resource Include="upper_lip_raise.jpg" />
<Resource Include="valence.jpg" />
<Resource Include="anger.gif" />
<Resource Include="attention.gif" />
<Resource Include="brow_furrow.gif" />
<Resource Include="brow_raise.gif" />
<Resource Include="chin_raise.gif" />
<Resource Include="contempt.gif" />
<Resource Include="disgust.gif" />
<Resource Include="engagement.gif" />
<Resource Include="eye_closure.gif" />
<Resource Include="fear.gif" />
<Resource Include="frown.gif" />
<Resource Include="inner_brow_raise.gif" />
<Resource Include="joy.gif" />
<Resource Include="lip_press.gif" />
<Resource Include="lip_pucker.gif" />
<Resource Include="lip_suck.gif" />
<Resource Include="mouth_open.gif" />
<Resource Include="negative_valence.gif" />
<Resource Include="nose_wrinkle.gif" />
<Resource Include="positive_valence.gif" />
<Resource Include="sadness.gif" />
<Resource Include="smile.gif" />
<Resource Include="smirk.gif" />
<Resource Include="surprise.gif" />
<Resource Include="upper_lip_raise.gif" />
<Resource Include="valence.gif" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

View File

@ -1,82 +0,0 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using Microsoft.VisualBasic.ApplicationServices;
namespace AffdexMe
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
}
/// <summary>
/// From reference source: https://msdn.microsoft.com/en-us/library/vstudio/ms771662(v=vs.90).aspx
/// </summary>
public class EntryPoint
{
[STAThread]
public static void Main(string[] args)
{
SingleInstanceManager manager = new SingleInstanceManager();
manager.Run(args);
}
}
// Using VB bits to detect single instances and process accordingly:
// * OnStartup is fired when the first instance loads
// * OnStartupNextInstance is fired when the application is re-run again
// NOTE: it is redirected to this instance thanks to IsSingleInstance
public class SingleInstanceManager : WindowsFormsApplicationBase
{
SingleInstanceApplication app;
public SingleInstanceManager()
{
this.IsSingleInstance = true;
}
protected override bool OnStartup(Microsoft.VisualBasic.ApplicationServices.StartupEventArgs e)
{
// First time app is launched
app = new SingleInstanceApplication();
app.Run();
return false;
}
protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)
{
// Subsequent launches
base.OnStartupNextInstance(eventArgs);
app.Activate();
}
}
public class SingleInstanceApplication : Application
{
protected override void OnStartup(System.Windows.StartupEventArgs e)
{
base.OnStartup(e);
// Create and show the application's main window
MainWindow window = new MainWindow();
window.Show();
}
public void Activate()
{
// Reactivate application's main window
this.MainWindow.Activate();
}
}
}

View File

@ -1,8 +0,0 @@
<Application x:Class="AffdexMe.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>

View File

@ -1,17 +0,0 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
namespace AffdexMe
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
}
}

Binary file not shown.

View File

@ -1,253 +0,0 @@
<Window x:Class="AffdexMe.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="AffdexMe"
Height="640" Width="480"
MinHeight="640" MinWidth="480"
MaxHeight="640" MaxWidth="480"
ResizeMode="NoResize"
Loaded="Window_Loaded"
Closing="Window_Closing">
<Window.Resources>
<Style TargetType="{x:Type ButtonBase}" x:Key="CustomButtonStyle">
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF2778BB" Offset="0.51"/>
<GradientStop Color="#FF2683C5" Offset="0.484"/>
<GradientStop Color="#FF8CD4FF" Offset="1"/>
<GradientStop Color="#FF1973AE" Offset="0.497"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="BorderBrush" Value="#FF2B5F91"/>
<Setter Property="Margin" Value="1"/>
<Setter Property="Height" Value="30"/>
<Setter Property="MinWidth" Value="20"/>
<Setter Property="FontSize" Value="11"/>
<Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Rectangle Stroke="{TemplateBinding BorderBrush}" RadiusX="15" RadiusY="15" Fill="{TemplateBinding Background}"/>
<Rectangle VerticalAlignment="Top" Height="10" Margin="7,2,7,1" RadiusX="10" RadiusY="10">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#11FFFFFF" Offset="1"/>
<GradientStop Color="#B2FFFFFF" Offset="0"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="rectangle" RadiusX="15" RadiusY="15" Fill="White" Margin="1" Opacity="0"/>
<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="Center" VerticalAlignment="Center" IsHitTestVisible="False" Margin="{TemplateBinding Padding}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" TargetName="rectangle" Value="0.2"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Opacity" TargetName="rectangle" Value="0.3"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Fill" TargetName="rectangle" Value="#666"/>
<Setter Property="Opacity" TargetName="rectangle" Value="0.6"/>
<Setter Property="Opacity" TargetName="contentPresenter" Value="0.3"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type ButtonBase}" x:Key="PointsOnButtonStyle">
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF3CB371" Offset="0.51"/>
<GradientStop Color="#FF3CB371" Offset="0.484"/>
<GradientStop Color="#FF3CB371" Offset="1"/>
<GradientStop Color="#FF1973AE" Offset="0.497"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="BorderBrush" Value="#FF2B5F91"/>
<Setter Property="Margin" Value="1"/>
<Setter Property="Height" Value="30"/>
<Setter Property="MinWidth" Value="20"/>
<Setter Property="FontSize" Value="11"/>
<Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Rectangle Stroke="{TemplateBinding BorderBrush}" RadiusX="15" RadiusY="15" Fill="{TemplateBinding Background}"/>
<Rectangle VerticalAlignment="Top" Height="10" Margin="7,2,7,1" RadiusX="10" RadiusY="10">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#11FFFFFF" Offset="1"/>
<GradientStop Color="#B2FFFFFF" Offset="0"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="rectangle" RadiusX="15" RadiusY="15" Fill="White" Margin="1" Opacity="0"/>
<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="Center" VerticalAlignment="Center" IsHitTestVisible="False" Margin="{TemplateBinding Padding}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" TargetName="rectangle" Value="0.2"/>
</Trigger>
<Trigger Property
="IsPressed" Value="True">
<Setter Property="Opacity" TargetName="rectangle" Value="0.3"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Fill" TargetName="rectangle" Value="#666"/>
<Setter Property="Opacity" TargetName="rectangle" Value="0.6"/>
<Setter Property="Opacity" TargetName="contentPresenter" Value="0.3"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid Name="gridMainDisplay" Margin="0,0,0,0" >
<Grid Name="gridContentDisplay" DockPanel.Dock="Top">
<StackPanel Name="stackPanelImage" Orientation="Vertical" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Grid Name="gridAffdexFaceDisplay" VerticalAlignment="Stretch" Width="auto" Height="560" >
<Image Name="imgAffdexFaceDisplay" Visibility="Hidden" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="UniformToFill"/>
<Image Name="imgAffdexLogoDisplay" Margin="40" Width="auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Height="auto" Source="AffectivaLogo1.png" Visibility="Visible"/>
<Canvas Name="canvasFacePoints" HorizontalAlignment="Center" VerticalAlignment="Center" />
<TextBlock Name="interocularDistanceDisplay" Visibility="Hidden" Text="Interocular Distance: " FontWeight="SemiBold" Foreground="White" VerticalAlignment="Center" Margin="10,131,0,413"/>
<TextBlock Name="pitchDisplay" Visibility="Hidden" Text="pitch: " FontWeight="SemiBold" Foreground="White" VerticalAlignment="Center" Margin="10,131,0,380"/>
<TextBlock Name="yawDisplay" Visibility="Hidden" Text="Yaw: " FontWeight="SemiBold" Foreground="White" VerticalAlignment="Center" Margin="10,131,0,347"/>
<TextBlock Name="rollDisplay" Visibility="Hidden" Text="Roll: " FontWeight="SemiBold" Foreground="White" VerticalAlignment="Center" Margin="10,131,0,314"/>
</Grid>
</StackPanel>
<StackPanel Name="stackPanelClassifiersBackground" Orientation="Vertical" Background="Gainsboro" Height="130" HorizontalAlignment="Stretch" VerticalAlignment="Top" Opacity=".3" />
<StackPanel Name="stackPanelClassifiers" Orientation="Vertical" Background="Transparent" Height="130" HorizontalAlignment="Stretch" VerticalAlignment="Top" >
<Grid Name="gridClassifierDisplay" VerticalAlignment="Stretch" Background="Transparent" Margin="0,5,0,0"
Width="auto" Height="130px" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.36*" />
<ColumnDefinition Width="0.28*" />
<ColumnDefinition Width="0.36*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="40" />
<RowDefinition Height="40" />
<RowDefinition Height="40" />
</Grid.RowDefinitions>
<StackPanel Name="stackPanel0" Orientation="Vertical" Grid.Row="0" Grid.Column="0" Margin="0,0,0,0">
<TextBlock Name="stackPanel0Name" Text="STACKPANEL0" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/>
<Grid>
<TextBlock Name="stackPanel0ValueBackgroud" Width="50" Background="LimeGreen" HorizontalAlignment="Center"/>
<TextBlock Name="stackPanel0Value" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center"/>
</Grid>
</StackPanel>
<StackPanel Name="stackPanel1" Orientation="Vertical" Grid.Row="0" Grid.Column="2" Margin="0,0,0,0" >
<TextBlock Name="stackPanel1Name" Text="STACKPANEL1" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/>
<Grid>
<TextBlock Name="stackPanel1ValueBackgroud" Width="50" Background="LimeGreen" HorizontalAlignment="Center" />
<TextBlock Name="stackPanel1Value" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center" />
</Grid>
</StackPanel>
<StackPanel Name="stackPanel2" Orientation="Vertical" Grid.Row="1" Grid.Column="0" Margin="0,0,0,0" >
<TextBlock Name="stackPanel2Name" Text="STACKPANEL2" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/>
<Grid>
<TextBlock Name="stackPanel2ValueBackgroud" Width="50" Background="LimeGreen" HorizontalAlignment="Center" />
<TextBlock Name="stackPanel2Value" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center" />
</Grid>
</StackPanel>
<StackPanel Name="stackPanel3" Orientation="Vertical" Grid.Row="1" Grid.Column="2" Margin="0,0,0,0" >
<TextBlock Name="stackPanel3Name" Text="STACKPANEL3" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/>
<Grid>
<TextBlock Name="stackPanel3ValueBackgroud" Width="50" Background="LimeGreen" HorizontalAlignment="Center" />
<TextBlock Name="stackPanel3Value" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center"/>
</Grid>
</StackPanel>
<StackPanel Name="stackPanel4" Orientation="Vertical" Grid.Row="2" Grid.Column="0" Margin="0,0,0,0" >
<TextBlock Name="stackPanel4Name" Text="STACKPANEL4" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/>
<Grid>
<TextBlock Name="stackPanel4ValueBackgroud" Width="50" Background="LimeGreen" HorizontalAlignment="Center" />
<TextBlock Name="stackPanel4Value" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center" />
</Grid>
</StackPanel>
<StackPanel Name="stackPanel5" Orientation="Vertical" Grid.Row="2" Grid.Column="2" Margin="0,0,0,0" >
<TextBlock Name="stackPanel5Name" Text="STACKPANEL5" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center" />
<Grid>
<TextBlock Name="stackPanel5ValueBackgroud" Width="50" Background="LimeGreen" HorizontalAlignment="Center" />
<TextBlock Name="stackPanel5Value" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center" />
</Grid>
</StackPanel>
</Grid>
</StackPanel>
<StackPanel Name="stackPanelLogoBackground" Orientation="Vertical" Background="Transparent" Height="75" HorizontalAlignment="Stretch" VerticalAlignment="Top" >
<Grid Name="gridLogoBackground">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.36*" />
<ColumnDefinition Width="0.28*" />
<ColumnDefinition Width="0.36*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20" />
<RowDefinition Height="35" />
<RowDefinition Height="20" />
</Grid.RowDefinitions>
<Image Name="imgAffdexLogoBackground" Width="auto" Grid.Column="1" Grid.Row="1"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Height="auto" Source="AffectivaLogo1.png" Margin="0,0,0,-34" Grid.RowSpan="2"/>
</Grid>
</StackPanel>
</Grid>
<DockPanel VerticalAlignment="Bottom" Background="Coral" >
<Grid HorizontalAlignment="Center">
<GroupBox Margin="0,5,0,0" Height="40" VerticalAlignment="Stretch" BorderBrush="Transparent" BorderThickness="0">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Name="btnStartCamera" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="40" Content="Start" />
<Button Name="btnResetCamera" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="40" Content="Reset" />
<Button Name="btnShowPoints" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="80" Content="Show Points" />
<Button Name="btnShowMeasurements" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="120" Content="Show Measurements" />
<Button Name="btnChooseWin" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="60" Content="Classifiers" Click="btnChooseWin_Click" />
<Button Name="btnStopCamera" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="40" Content="Stop" />
<Button Name="btnExit" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Bottom" Width="35" Content="Exit" />
</StackPanel>
</GroupBox>
</Grid>
</DockPanel>
</Grid>
</Window>

View File

@ -1,845 +0,0 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Collections.Specialized;
using Microsoft.Win32;
using System.Reflection;
namespace AffdexMe
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window, Affdex.ImageListener, Affdex.ProcessStatusListener
{
#region Member Variables and Enums
/// <summary>
/// The minimum length of the Classifier Value textbox
/// </summary>
const int ClassiferValueDisplayLength = 90;
/// <summary>
/// So the Classifiers can be cached
/// </summary>
int[] mAffdexClassifierValues = new int[6];
/// <summary>
/// Once a face has been recognized, the number of captures that occur before the classifiers get zero displayed
/// This helps prevent classifier numbers from flashing on the screen.
/// </summary>
int mCachedSkipFaceResultsCount;
/// <summary>
/// Once a face's feature points get displayed, the number of successive captures that occur without
/// the points getting redrawn in the OnResults callback.
/// </summary>
int mFeaturePointsSkipCount;
/// <summary>
/// Used to delay the display of the Classifier panel until the 1st face is recognized
/// </summary>
bool mFirstFaceRecognized;
private Affdex.CameraDetector mCameraDetector;
private StringCollection mEnabledClassifiers;
private DateTime mStartTime;
private float mCurrentTimeStamp;
/// <summary>
/// Scale factor based on ratio between current and original size
/// </summary>
private double mImageXScaleFactor;
private double mImageYScaleFactor;
private bool mShowFacePoints;
private bool mShowMeasurements;
#endregion
#region Image and Results Arg Classes
/// <summary>
///
/// </summary>
class ImageCaptureDataUpdateArgs
{
public float ImageCaptureTimeStamp {get; set;}
public Affdex.Frame Image { get; set; }
}
/// <summary>
///
/// </summary>
class ImageResultsDataUpdateArgs
{
public float ImageResultsTimeStamp { get; set; }
public Affdex.Frame Image { get; set; }
public Affdex.Face Face { get; set; }
}
#endregion
#region Listener Implementation
public void onImageResults(Dictionary<int, Affdex.Face> faces, Affdex.Frame image)
{
// For now only single face is supported
if ((faces.Count() >= 1))
{
Affdex.Face face = faces[0];
UpdateClassifierPanel(face);
DisplayFeaturePoints(image, face);
DisplayMeasurements(face);
}
}
public void onImageCapture(Affdex.Frame image)
{
UpdateClassifierPanel();
DisplayImageToOffscreenCanvas(image);
}
public void onProcessingException(Affdex.AffdexException ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
public void onProcessingFinished()
{
}
#endregion
private void ShowExceptionAndShutDown(String exceptionMessage)
{
MessageBoxResult result = MessageBox.Show(exceptionMessage,
"AffdexMe Error",
MessageBoxButton.OK,
MessageBoxImage.Error);
this.Dispatcher.BeginInvoke((Action)(() =>
{
StopCameraProcessing();
}));
}
private String GetClassifierDataFolder()
{
String affdexClassifierDir = Environment.GetEnvironmentVariable("AFFDEX_DATA_DIR");
if (String.IsNullOrEmpty(affdexClassifierDir))
{
ShowExceptionAndShutDown("AFFDEX_DATA_DIR environment variable (Classifier Data Directory) is not set");
}
DirectoryInfo directoryInfo = new DirectoryInfo(affdexClassifierDir);
if (!directoryInfo.Exists)
{
ShowExceptionAndShutDown("AFFDEX_DATA_DIR (Classifier Data Directory) is set to an invalid folder location");
}
return affdexClassifierDir;
}
private String GetAffdexLicense()
{
String licensePath = String.Empty;
licensePath = Environment.GetEnvironmentVariable("AFFDEX_LICENSE_DIR");
if (String.IsNullOrEmpty(licensePath))
{
ShowExceptionAndShutDown("AFFDEX_LICENSE_DIR environment variable (Affdex License Folder) is not set");
}
return licensePath;
}
public MainWindow()
{
InitializeComponent();
CenterWindowOnScreen();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
InitializeCameraApp();
mEnabledClassifiers = AffdexMe.Settings.Default.Classifiers;
// Enable/Disable buttons on start
btnStartCamera.IsEnabled =
btnResetCamera.IsEnabled =
btnShowPoints.IsEnabled =
btnStopCamera.IsEnabled =
btnExit.IsEnabled = true;
if (AffdexMe.Settings.Default.ShowPoints)
{
btnShowPoints_Click(null, null);
}
if (AffdexMe.Settings.Default.ShowMeasurements)
{
btnShowMeasurements_Click(null, null);
}
this.ContentRendered += MainWindow_ContentRendered;
}
/// <summary>
/// Once the window las been loaded and the content rendered, the camera
/// can be initialized and started. This sequence allows for the underlying controls
/// and watermark logo to be displayed.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void MainWindow_ContentRendered(object sender, EventArgs e)
{
StartCameraProcessing();
}
/// <summary>
///
/// </summary>
private void CenterWindowOnScreen()
{
double screenWidth = System.Windows.SystemParameters.PrimaryScreenWidth;
double screenHeight = System.Windows.SystemParameters.PrimaryScreenHeight;
double windowWidth = this.Width;
double windowHeight = this.Height;
this.Left = (screenWidth / 2) - (windowWidth / 2);
this.Top = (screenHeight / 2) - (windowHeight / 2);
}
private BitmapSource ConstructImage(byte[] imageData, int width, int height)
{
try
{
if (imageData != null && imageData.Length > 0)
{
var stride = (width * PixelFormats.Bgr24.BitsPerPixel + 7) / 8;
var imageSrc = BitmapSource.Create(width, height, 96d, 96d, PixelFormats.Bgr24, null, imageData, stride);
return imageSrc;
}
}
catch(Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
return null;
}
private void DisplayMeasurements(Affdex.Face affdexFace)
{
//Update measurements
try
{
var result = this.Dispatcher.BeginInvoke((Action)(() =>
{
if (mShowMeasurements && (affdexFace != null))
{
interocularDistanceDisplay.Text = String.Format("Interocular Distance: {0}", affdexFace.Measurements.InterocularDistance);
pitchDisplay.Text = String.Format("Pitch Angle: {0}", affdexFace.Measurements.Orientation.Pitch);
yawDisplay.Text = String.Format("Yaw Angle: {0}", affdexFace.Measurements.Orientation.Yaw);
rollDisplay.Text = String.Format("Roll Angle: {0}", affdexFace.Measurements.Orientation.Roll);
}
}));
}
catch(Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
private void DisplayFeaturePoints(Affdex.Frame affdexImage, Affdex.Face affdexFace)
{
try
{
// Plot Face Points
if ((mShowFacePoints) && (affdexFace != null))
{
var result = this.Dispatcher.BeginInvoke((Action)(() =>
{
if ((mCameraDetector != null) && (mCameraDetector.isRunning()))
{
// Clear the previous points
canvasFacePoints.Children.Clear();
canvasFacePoints.Width = imgAffdexFaceDisplay.ActualWidth;
canvasFacePoints.Height = imgAffdexFaceDisplay.ActualHeight;
mImageXScaleFactor = imgAffdexFaceDisplay.ActualWidth / affdexImage.getWidth();
mImageYScaleFactor = imgAffdexFaceDisplay.ActualHeight / affdexImage.getHeight();
SolidColorBrush pointBrush = new SolidColorBrush(Colors.Cornsilk);
var featurePoints = affdexFace.FeaturePoints;
foreach (var point in featurePoints)
{
Ellipse ellipse = new Ellipse()
{
Width = 4,
Height = 4,
Fill = pointBrush
};
canvasFacePoints.Children.Add(ellipse);
Canvas.SetLeft(ellipse, point.X * mImageXScaleFactor);
Canvas.SetTop(ellipse, point.Y * mImageYScaleFactor);
}
// Draw Face Bounding Rectangle
var xMax = featurePoints.Max(r => r.X);
var xMin = featurePoints.Min(r => r.X);
var yMax = featurePoints.Max(r => r.Y);
var yMin = featurePoints.Min(r => r.Y);
// Adjust the x/y min to accomodate all points
xMin -= 2;
yMin -= 2;
// Increase the width/height to accomodate the entire max pixel position
// EllipseWidth + N to make sure max points in the box
double width = (xMax - xMin + 6) * mImageXScaleFactor;
double height = (yMax - yMin + 6) * mImageYScaleFactor;
SolidColorBrush boundingBrush = new SolidColorBrush(Colors.Bisque);
Rectangle boundingBox = new Rectangle()
{
Width = width,
Height = height,
Stroke = boundingBrush,
StrokeThickness = 1,
};
canvasFacePoints.Children.Add(boundingBox);
Canvas.SetLeft(boundingBox, xMin * mImageXScaleFactor);
Canvas.SetTop(boundingBox, yMin * mImageYScaleFactor);
mFeaturePointsSkipCount = 0;
}
}));
}
}
catch(Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
/// <summary>
/// Since the panel is getting updated from a separate callback thread, access to controls must be
/// made through BeginInvoke()
/// </summary>
/// <param name="face"></param>
private void UpdateClassifierPanel(Affdex.Face face = null)
{
try
{
bool displayClassifiers = (imgAffdexFaceDisplay.Visibility == Visibility.Hidden)? false : true;
if (mCameraDetector.isRunning() == true)
{
// A Face was found - this comes from ImageResults CallBack
if (face != null)
{
int index = 0;
foreach (String metric in mEnabledClassifiers)
{
PropertyInfo info;
float value = -1;
if ((info = face.Expressions.GetType().GetProperty(NameMappings(metric))) != null) value = (float)info.GetValue(face.Expressions, null);
else if ((info = face.Emotions.GetType().GetProperty(NameMappings(metric))) != null) value = (float)info.GetValue(face.Emotions, null);
// Convert classifier value to Integer (percentage) for display purposes
mAffdexClassifierValues[index] = Convert.ToInt32(Math.Round(value, MidpointRounding.AwayFromZero));
index++;
}
// Reset the cache count
mCachedSkipFaceResultsCount = 0;
mFirstFaceRecognized =
displayClassifiers = true;
}
else if (mFirstFaceRecognized == false)
{
displayClassifiers = false;
}
else if (++mCachedSkipFaceResultsCount > 10)
{
for (int r = 0; r < mAffdexClassifierValues.Count(); r++) mAffdexClassifierValues[r] = 0;
// If we haven't seen a face in the past 30 frames (roughly 30/15fps seconds), don't display the classifiers
if (mCachedSkipFaceResultsCount >= 30)
{
displayClassifiers = false;
}
}
var result = this.Dispatcher.BeginInvoke((Action)(() =>
{
// Only display the classifiers and FacePoints if we've had a re
if (displayClassifiers)
{
int r = 0;
foreach (String classifier in mEnabledClassifiers)
{
String stackPanelName = String.Format("stackPanel{0}", r);
TextBlock ClassifierName = (TextBlock) gridClassifierDisplay.FindName(String.Format("{0}Name", stackPanelName));
TextBlock ClassifierValueBackgroud = (TextBlock)gridClassifierDisplay.FindName(String.Format("{0}ValueBackgroud", stackPanelName));
TextBlock ClassifierValue = (TextBlock)gridClassifierDisplay.FindName(String.Format("{0}Value", stackPanelName));
// Update the Classifier Display
UpdateClassifier(ClassifierName, ClassifierValue, ClassifierValueBackgroud, classifier, r);
r++;
}
}
// Update the Image control from the UI thread
if ((mCameraDetector != null) && (mCameraDetector.isRunning()))
{
if (imgAffdexFaceDisplay.Visibility == Visibility.Hidden)
{
imgAffdexFaceDisplay.Visibility =
stackPanelClassifiersBackground.Visibility =
stackPanelLogoBackground.Visibility = Visibility.Visible;
}
stackPanelClassifiers.Visibility = (displayClassifiers)?Visibility.Visible : Visibility.Hidden;
interocularDistanceDisplay.Visibility = (displayClassifiers && mShowMeasurements) ? Visibility.Visible : Visibility.Hidden;
pitchDisplay.Visibility = (displayClassifiers && mShowMeasurements) ? Visibility.Visible : Visibility.Hidden;
yawDisplay.Visibility = (displayClassifiers && mShowMeasurements) ? Visibility.Visible : Visibility.Hidden;
rollDisplay.Visibility = (displayClassifiers && mShowMeasurements) ? Visibility.Visible : Visibility.Hidden;
}
}));
}
}
catch (Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
private String NameMappings(String classifierName)
{
if (classifierName == "Frown")
{
return "LipCornerDepressor";
}
return classifierName;
}
private void UpdateClassifier(TextBlock txtClassifier, TextBlock txtClassifierValue,
TextBlock txtClassifierValueBackground, String classifierName, int classifierIndex)
{
try
{
UpperCaseConverter conv = new UpperCaseConverter();
txtClassifier.Text = (String)conv.Convert(classifierName, null, null, null);
int classifierValue = mAffdexClassifierValues[(int)classifierIndex];
// Calculate the width
double width = ClassiferValueDisplayLength * Math.Abs(classifierValue) / 100;
var backgroundColor = Colors.Transparent;
if (classifierValue > 0)
{
backgroundColor = Colors.LimeGreen;
}
else if (classifierValue < 0)
{
backgroundColor = Colors.Red;
}
txtClassifierValueBackground.Background = new SolidColorBrush(backgroundColor);
txtClassifierValueBackground.Width = width;
txtClassifierValue.Text = String.Format("{0}%", classifierValue);
}
catch (Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
private void DisplayImageToOffscreenCanvas(Affdex.Frame image)
{
// Update the Image control from the UI thread
var result = this.Dispatcher.BeginInvoke((Action)(() =>
{
try
{
mCurrentTimeStamp = image.getTimestamp();
// Update the Image control from the UI thread
//imgAffdexFaceDisplay.Source = rtb;
imgAffdexFaceDisplay.Source = ConstructImage(image.getBGRByteArray(), image.getWidth(), image.getHeight());
// Allow N successive OnCapture callbacks before the FacePoint drawing canvas gets cleared.
if (++mFeaturePointsSkipCount > 4)
{
canvasFacePoints.Children.Clear();
mFeaturePointsSkipCount = 0;
}
if (image != null)
{
image.Dispose();
}
}
catch (Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}));
}
/// <summary>
///
/// </summary>
private void InitializeCameraApp()
{
try
{
mCameraDetector = null;
// Initialize Button Click Handlers
btnStartCamera.Click += btnStartCamera_Click;
btnStopCamera.Click += btnStopCamera_Click;
btnShowPoints.Click += btnShowPoints_Click;
btnShowMeasurements.Click += btnShowMeasurements_Click;
btnResetCamera.Click += btnResetCamera_Click;
btnExit.Click += btnExit_Click;
// Disable Stop/Reset buttons
btnResetCamera.IsEnabled =
btnStopCamera.IsEnabled = false;
mFeaturePointsSkipCount =
mCachedSkipFaceResultsCount = 0;
// Initially hide Classifier Panels
stackPanelLogoBackground.Visibility =
stackPanelClassifiersBackground.Visibility =
stackPanelClassifiers.Visibility = Visibility.Hidden;
// Face Points are off by default
mShowFacePoints = false;
mShowMeasurements = false;
// Show the logo
imgAffdexLogoDisplay.Visibility = Visibility.Visible;
}
catch (Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void btnShowPoints_Click(object sender, RoutedEventArgs e)
{
try
{
Style style;
String buttonText = String.Empty;
mShowFacePoints = !mShowFacePoints;
if (mShowFacePoints)
{
style = this.FindResource("PointsOnButtonStyle") as Style;
buttonText = "Hide Points";
}
else
{
style = this.FindResource("CustomButtonStyle") as Style;
buttonText = "Show Points";
}
btnShowPoints.Style = style;
btnShowPoints.Content = buttonText;
}
catch (Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
void btnShowMeasurements_Click(object sender, RoutedEventArgs e)
{
try
{
Style style;
String buttonText = String.Empty;
mShowMeasurements = !mShowMeasurements;
if (mShowMeasurements)
{
style = this.FindResource("PointsOnButtonStyle") as Style;
buttonText = "Hide Measurements";
interocularDistanceDisplay.Visibility = Visibility.Visible;
pitchDisplay.Visibility = Visibility.Visible;
yawDisplay.Visibility = Visibility.Visible;
rollDisplay.Visibility = Visibility.Visible;
}
else
{
style = this.FindResource("CustomButtonStyle") as Style;
buttonText = "Show Measurements";
interocularDistanceDisplay.Visibility = Visibility.Hidden;
pitchDisplay.Visibility = Visibility.Hidden;
yawDisplay.Visibility = Visibility.Hidden;
rollDisplay.Visibility = Visibility.Hidden;
}
btnShowMeasurements.Style = style;
btnShowMeasurements.Content = buttonText;
}
catch (Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
private void btnResetCamera_Click(object sender, RoutedEventArgs e)
{
ResetCameraProcessing();
}
void btnStartCamera_Click(object sender, RoutedEventArgs e)
{
try
{
StartCameraProcessing();
}
catch (Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
void btnStopCamera_Click(object sender, RoutedEventArgs e)
{
StopCameraProcessing();
ResetDisplayArea();
}
void btnExit_Click(object sender, RoutedEventArgs e)
{
SaveSettings();
Application.Current.Shutdown();
}
void SaveSettings()
{
AffdexMe.Settings.Default.ShowPoints = mShowFacePoints;
AffdexMe.Settings.Default.ShowMeasurements = mShowMeasurements;
AffdexMe.Settings.Default.Classifiers = mEnabledClassifiers;
AffdexMe.Settings.Default.Save();
}
private void ClearClassifiersAndPointsDisplay()
{
// Hide AffdexFace Image
imgAffdexFaceDisplay.Visibility =
stackPanelLogoBackground.Visibility =
stackPanelClassifiersBackground.Visibility = Visibility.Hidden;
//Clean measurements
interocularDistanceDisplay.Text = String.Format("Interocular Distance: {0}", 0);
pitchDisplay.Text = String.Format("Pitch Angle: {0}", 0);
yawDisplay.Text = String.Format("Yaw Angle: {0}", 0);
rollDisplay.Text = String.Format("Roll Angle: {0}", 0);
// Hide the Classifier Panel
stackPanelClassifiers.Visibility = Visibility.Hidden;
// Clear any Face Points
canvasFacePoints.Children.Clear();
}
private void ResetDisplayArea()
{
try
{
ClearClassifiersAndPointsDisplay();
// Show the logo
imgAffdexLogoDisplay.Visibility = Visibility.Visible;
}
catch (Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
private void TurnOnClassifiers()
{
mCameraDetector.setDetectAllEmotions(false);
mCameraDetector.setDetectAllExpressions(false);
foreach (String metric in mEnabledClassifiers)
{
MethodInfo setMethodInfo = mCameraDetector.GetType().GetMethod(String.Format("setDetect{0}", NameMappings(metric)));
setMethodInfo.Invoke(mCameraDetector, new object[] { true });
}
}
private void StartCameraProcessing()
{
try
{
btnStartCamera.IsEnabled = false;
btnResetCamera.IsEnabled =
btnShowPoints.IsEnabled =
btnStopCamera.IsEnabled =
btnExit.IsEnabled = true;
// Instantiate CameraDetector using default camera ID
mCameraDetector = new Affdex.CameraDetector();
mCameraDetector.setClassifierPath(GetClassifierDataFolder());
// Set the Classifiers that we are interested in tracking
TurnOnClassifiers();
// Initialize Classifier cache
for (int index = 0; index < mAffdexClassifierValues.Count(); index++)
{
mAffdexClassifierValues[index] = 0;
}
mCachedSkipFaceResultsCount = 0;
mCameraDetector.setImageListener(this);
mCameraDetector.setProcessStatusListener(this);
// Set the License Path
mCameraDetector.setLicensePath(GetAffdexLicense());
mStartTime = DateTime.Now;
mCameraDetector.start();
// Delay loading the Classifier panel until 1st face
mFirstFaceRecognized = false;
// Hide the logo
imgAffdexLogoDisplay.Visibility = Visibility.Hidden;
}
catch(Affdex.AffdexException ex)
{
if (!String.IsNullOrEmpty(ex.Message))
{
// If this is a camera failure, then reset the application to allow the user to turn on/enable camera
if (ex.Message.Equals("Unable to open webcam."))
{
MessageBoxResult result = MessageBox.Show(ex.Message,
"AffdexMe Error",
MessageBoxButton.OK,
MessageBoxImage.Error);
StopCameraProcessing();
return;
}
}
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
catch(Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
private void ResetCameraProcessing()
{
try
{
mCameraDetector.reset();
}
catch(Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
private void StopCameraProcessing()
{
try
{
if ((mCameraDetector != null) && (mCameraDetector.isRunning()))
{
mCameraDetector.stop();
mCameraDetector.Dispose();
mCameraDetector = null;
}
// Enable/Disable buttons on start
btnStartCamera.IsEnabled = true;
btnResetCamera.IsEnabled =
btnStopCamera.IsEnabled = false;
}
catch(Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
StopCameraProcessing();
SaveSettings();
Application.Current.Shutdown();
}
private void btnChooseWin_Click(object sender, RoutedEventArgs e)
{
Boolean wasRunning = false;
if ((mCameraDetector != null) && (mCameraDetector.isRunning()))
{
StopCameraProcessing();
ResetDisplayArea();
wasRunning = true;
}
MetricSelectionUI w = new MetricSelectionUI(mEnabledClassifiers);
w.ShowDialog();
mEnabledClassifiers = w.Classifiers;
if (wasRunning)
{
StartCameraProcessing();
}
}
}
}

View File

@ -1,312 +0,0 @@
<Window x:Class="AffdexMe.MetricSelectionUI"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:affdexMe="clr-namespace:AffdexMe"
xmlns:gif="http://wpfanimatedgif.codeplex.com"
Title="Select Emotions or Expressions"
Height="640" Width="514" ResizeMode="NoResize" Closing="Window_Closing">
<Grid>
<ScrollViewer Margin="0,0,0,45">
<Grid Name="theGrid" Background="Black">
<Grid.Resources>
<affdexMe:UpperCaseConverter x:Key="StringToUpper" />
<affdexMe:NameToResourceConverter x:Key="ResourceFileName" />
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="160" />
<ColumnDefinition Width="160" />
<ColumnDefinition Width="160" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="40" />
<RowDefinition Height="178" />
<RowDefinition Height="178" />
<RowDefinition Height="178" />
<RowDefinition Height="50" />
<RowDefinition Height="178" />
<RowDefinition Height="178" />
<RowDefinition Height="178" />
<RowDefinition Height="178" />
<RowDefinition Height="178" />
</Grid.RowDefinitions>
<Border Background="Coral" Grid.Row="0" Grid.Column="0" Margin="1,0,0,2">
<StackPanel Orientation="Vertical" Grid.Row="0" Grid.Column="0" Margin="10,10,0,10">
<TextBlock Text="Emotions" Foreground="Black" FontWeight="Bold" FontSize="12" HorizontalAlignment="Left"/>
</StackPanel>
</Border>
<Border Background="Coral" Grid.Row="0" Grid.Column="1" Margin="0,0,0,2" />
<Border Background="Coral" Grid.Row="0" Grid.Column="2" Margin="0,0,0,2" />
<StackPanel Orientation="Vertical" Grid.Row="1" Grid.Column="0" Margin="1,1,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Anger" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="1" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Disgust" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x"/>
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="1" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Fear" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x"/>
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="2" Grid.Column="0" Margin="1,1,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Joy" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="2" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Sadness" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="2" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Surprise" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="3" Grid.Column="0" Margin="1,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Contempt" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="3" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Valence" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="3" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Engagement" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<Border Background="Coral" Grid.Row="4" Grid.Column="0" Margin="1,2,0,2">
<StackPanel Orientation="Vertical" Grid.Row="4" Grid.Column="0" Margin="10,15,0,10">
<TextBlock Text="Expressions" Foreground="Black" FontWeight="Bold" FontSize="12" HorizontalAlignment="Left"/>
</StackPanel>
</Border>
<Border Background="Coral" Grid.Row="4" Grid.Column="1" Margin="0,2,0,2"/>
<Border Background="Coral" Grid.Row="4" Grid.Column="2" Margin="0,2,0,2"/>
<StackPanel Orientation="Vertical" Grid.Row="5" Grid.Column="0" Margin="1,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Attention" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="5" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="BrowFurrow" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="5" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="BrowRaise" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="6" Grid.Column="0" Margin="1,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="ChinRaise" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="6" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="EyeClosure" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="6" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="InnerBrowRaise" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="7" Grid.Column="0" Margin="1,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Frown" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="7" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="LipPress" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="7" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="LipPucker" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="8" Grid.Column="0" Margin="1,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="LipSuck" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="8" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="MouthOpen" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="8" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="NoseWrinkle" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="9" Grid.Column="0" Margin="1,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Smile" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="9" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Smirk" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="9" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="UpperLipRaise" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
</Grid>
</ScrollViewer >
<DockPanel VerticalAlignment="Bottom" Background="Coral" >
<GroupBox Margin="0,5,0,0" Height="40" VerticalAlignment="Stretch" BorderBrush="Transparent" BorderThickness="0">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type ButtonBase}" x:Key="CustomButtonStyle">
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF2778BB" Offset="0.51"/>
<GradientStop Color="#FF2683C5" Offset="0.484"/>
<GradientStop Color="#FF8CD4FF" Offset="1"/>
<GradientStop Color="#FF1973AE" Offset="0.497"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="BorderBrush" Value="#FF2B5F91"/>
<Setter Property="Margin" Value="1"/>
<Setter Property="Height" Value="30"/>
<Setter Property="MinWidth" Value="20"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Rectangle Stroke="{TemplateBinding BorderBrush}" RadiusX="15" RadiusY="15" Fill="{TemplateBinding Background}"/>
<Rectangle VerticalAlignment="Top" Height="10" Margin="7,2,7,1" RadiusX="10" RadiusY="10">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#11FFFFFF" Offset="1"/>
<GradientStop Color="#B2FFFFFF" Offset="0"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="rectangle" RadiusX="15" RadiusY="15" Fill="White" Margin="1" Opacity="0"/>
<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="Center" VerticalAlignment="Center" IsHitTestVisible="False" Margin="{TemplateBinding Padding}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" TargetName="rectangle" Value="0.2"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Opacity" TargetName="rectangle" Value="0.3"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Fill" TargetName="rectangle" Value="#666"/>
<Setter Property="Opacity" TargetName="rectangle" Value="0.6"/>
<Setter Property="Opacity" TargetName="contentPresenter" Value="0.3"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80" />
<ColumnDefinition Width="340" />
<ColumnDefinition Width="80" />
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Name="btnClearAll" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,0,0" VerticalAlignment="Top" Width="65" Content="Clear all" Click="btnClearAll_Click" />
<TextBlock Name="txtBlkInfo" Grid.Row="0" Grid.Column="1" Text="Please select 6 Emotions or Expressions to track." Foreground="White" FontWeight="Bold" FontSize="12" Margin="0,6,0,0" HorizontalAlignment="Center"/>
<Button Grid.Row="0" Grid.Column="2" Name="btnOK" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,0,0" VerticalAlignment="Top" Width="65" Content="OK" Click="btnOK_Click" />
</Grid>
</StackPanel>
</GroupBox>
</DockPanel>
</Grid>
</Window>

View File

@ -1,200 +0,0 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using WpfAnimatedGif;
namespace AffdexMe
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class MetricSelectionUI : Window
{
const String SELECTMSG = "Please select 6 Emotions or Expressions to track.";
const String ACTIVEMSG = "{0} Metrics chosen, please select {1} more.";
const String DONEMSG = "{0} Metrics chosen.";
const String DESELECTMSG = "Reached max number of metrics selected.";
public MetricSelectionUI(StringCollection enabled_classifiers)
{
InitializeComponent();
CenterWindowOnScreen();
Classifiers = enabled_classifiers;
foreach (String classifier in enabled_classifiers)
{
Border border = getBorder(classifier);
border.BorderBrush = Brushes.Green;
}
}
private void CenterWindowOnScreen()
{
double screenWidth = System.Windows.SystemParameters.PrimaryScreenWidth;
double screenHeight = System.Windows.SystemParameters.PrimaryScreenHeight;
double windowWidth = this.Width;
double windowHeight = this.Height;
this.Left = (screenWidth / 2) - (windowWidth / 2);
this.Top = (screenHeight / 2) - (windowHeight / 2);
}
private void StackPanel_MouseEnter(object sender, MouseEventArgs e)
{
Border border = (Border)((StackPanel)sender).Parent;
if (!isStackPanelSelected(border))
border.BorderBrush = Brushes.Coral;
var image = ((StackPanel)sender).Children.OfType<Image>().FirstOrDefault();
NameToResourceConverter conv = new NameToResourceConverter();
var gifUri = conv.Convert(((StackPanel)sender).Name, null, "gif", null);
var img = new BitmapImage();
img.BeginInit();
img.UriSource = (Uri) gifUri;
img.EndInit();
ImageBehavior.SetAnimatedSource(image, img);
playGif(image);
}
private void StackPanel_MouseLeave(object sender, MouseEventArgs e)
{
Border border = (Border)((StackPanel)sender).Parent;
var image = ((StackPanel)sender).Children.OfType<Image>().FirstOrDefault();
NameToResourceConverter conv = new NameToResourceConverter();
stopGif(image);
var img = new BitmapImage();
img.BeginInit();
img.UriSource = (Uri)conv.Convert(((StackPanel)sender).Name, null, "jpg", null);
img.EndInit();
ImageBehavior.SetAnimatedSource(image, img);
if (!isStackPanelSelected(border))
border.BorderBrush = Brushes.White;
int classifersCount = Classifiers.Count;
if (classifersCount == 6) txtBlkInfo.Text = String.Format(DONEMSG, classifersCount);
else txtBlkInfo.Text = String.Format(ACTIVEMSG, classifersCount, 6 - classifersCount);
}
private void stopGif(Image image)
{
var control = ImageBehavior.GetAnimationController(image);
if (control != null)
{
control.Pause();
control.GotoFrame(control.FrameCount - 1);
}
}
private void playGif(Image image)
{
var control = ImageBehavior.GetAnimationController(image);
control.GotoFrame(0);
control.Play();
}
private void StackPanel_MouseDown(object sender, MouseButtonEventArgs e)
{
Border border = (Border)((StackPanel)sender).Parent;
if (isStackPanelSelected(border))
{
border.BorderBrush = Brushes.White;
Classifiers.Remove(((StackPanel)sender).Name);
}
else {
int classifersCount = Classifiers.Count;
if ( classifersCount < 6)
{
border.BorderBrush = Brushes.Green;
Classifiers.Add(((StackPanel)sender).Name);
if (classifersCount + 1 == 6) txtBlkInfo.Text = String.Format(DONEMSG, classifersCount + 1);
else txtBlkInfo.Text = String.Format(ACTIVEMSG, classifersCount+1, 6 - classifersCount);
}
else
{
border.BorderBrush = Brushes.Red;
txtBlkInfo.Text = DESELECTMSG;
}
}
}
private Border getBorder(String name)
{
Border border = null;
foreach (StackPanel panel in theGrid.Children.OfType<StackPanel>())
{
var tempBorder = panel.Children.OfType<Border>().FirstOrDefault();
var stackPanel = (StackPanel)tempBorder.Child;
if (stackPanel.Name == name) border = tempBorder;
}
return border;
}
private bool isStackPanelSelected(Border border)
{
return (border.BorderBrush == Brushes.Green);
}
public StringCollection Classifiers {get;set;}
public String ActiveClassifierList
{
get
{
String classifiers = "";
foreach(String key in Classifiers)
classifiers += String.Format("{0},", key);
return String.Format("{0} active classifiers: {1}", Classifiers.Count, classifiers);
}
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
int selectedClassifiersCount = Classifiers.Count;
if ( selectedClassifiersCount < 6)
{
int missing = 6 - selectedClassifiersCount;
List<StackPanel> panels = theGrid.Children.OfType<StackPanel>().ToList();
int index = 0;
while (selectedClassifiersCount < 6)
{
var tempBorder = panels[index].Children.OfType<Border>().FirstOrDefault();
var stackPanel = (StackPanel)tempBorder.Child;
Classifiers.Add(stackPanel.Name);
index++;
selectedClassifiersCount++;
}
}
}
private void btnClearAll_Click(object sender, RoutedEventArgs e)
{
foreach (String classifier in Classifiers)
{
Border border = getBorder(classifier);
border.BorderBrush = Brushes.White;
txtBlkInfo.Text = SELECTMSG;
}
Classifiers.Clear();
}
private void btnOK_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
}

View File

@ -1,41 +0,0 @@
using AffdexMe.Properties;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;
namespace AffdexMe
{
public class NameToResourceConverter : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
String classifier_name = SplitCamelCase(((String)value));
classifier_name = classifier_name.ToLower().Replace(" ", "_");
return new Uri("pack://application:,,,/" + classifier_name + "." +((String) parameter));
//return new Uri(String.Format("pack://application:,,,/{0}.jpg", ((String)value).ToLower()));
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
public string SplitCamelCase(String str)
{
return Regex.Replace(
Regex.Replace(
str,
@"(\P{Ll})(\P{Ll}\p{Ll})",
"$1 $2"
),
@"(\p{Ll})(\P{Ll})",
"$1 $2"
);
}
}
}

View File

@ -1,55 +0,0 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("AffdexMe")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("AffdexMe")]
[assembly: AssemblyCopyright("Copyright © 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
//In order to begin building localizable applications, set
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
//inside a <PropertyGroup>. For example, if you are using US english
//in your source files, set the <UICulture> to en-US. Then uncomment
//the NeutralResourceLanguage attribute below. Update the "en-US" in
//the line below to match the UICulture setting in the project file.
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -1,71 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34209
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace AffdexMe.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AffdexMe.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

View File

@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,70 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace AffdexMe {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute(@"<?xml version=""1.0"" encoding=""utf-16""?>
<ArrayOfString xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
<string>Joy</string>
<string>Sadness</string>
<string>Anger</string>
<string>Disgust</string>
<string>Surprise</string>
<string>Fear</string>
</ArrayOfString>")]
public global::System.Collections.Specialized.StringCollection Classifiers {
get {
return ((global::System.Collections.Specialized.StringCollection)(this["Classifiers"]));
}
set {
this["Classifiers"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ShowPoints {
get {
return ((bool)(this["ShowPoints"]));
}
set {
this["ShowPoints"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ShowMeasurements {
get {
return ((bool)(this["ShowMeasurements"]));
}
set {
this["ShowMeasurements"] = value;
}
}
}
}

View File

@ -1,23 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="AffdexMe" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="Classifiers" Type="System.Collections.Specialized.StringCollection" Scope="User">
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
&lt;string&gt;Joy&lt;/string&gt;
&lt;string&gt;Sadness&lt;/string&gt;
&lt;string&gt;Anger&lt;/string&gt;
&lt;string&gt;Disgust&lt;/string&gt;
&lt;string&gt;Surprise&lt;/string&gt;
&lt;string&gt;Fear&lt;/string&gt;
&lt;/ArrayOfString&gt;</Value>
</Setting>
<Setting Name="ShowPoints" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ShowMeasurements" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -1,53 +0,0 @@
# AffdexMe
**Affdex SDK** is the culmination of years of scientific research into emotion detection, validated across thousands of tests worldwide on PC platforms, and now made available as a software development kit for Windows. Affdex SDK turns your ordinary app into an extraordinary app by emotion-enabling it to respond in real-time to user emotions.
**AffdexMe** is a windows application that demonstrates the use of the Affdex SDK for Windows. It uses the camera on your Windows PC to view, process and analyze live video of your face. Start the app and you will see your own face on the screen, and metrics describing your expressions.
#### This app includes the following command buttons:
* Start - Starts the camera processing.
* Reset - Resets the context of the video frames.
* ShowPoints/HidePoints - toggles the display of facial feature points, which Affdex uses to detect expressions.
* Stop - Stops the camera processing.
* Exit - exits the application.
This application runs on Windows 7.0, 8.0 and 8.1
#### To use this project, you will need:
* Visual Studio 2013
* To download and install the Windows SDK (32-bit) from Affectiva By default, the Windows SDK is installed to the following location: C:\Program Files (x86)\Affectiva\Affdex SDK
If you have installed the SDK to a location other than the default, you will have to modify the following String constants located in the MainWindow.xaml.cs file:
* **AFFDEX_DATA_PATH** - the classifier data path
* **AFFDEX_LICENSE_FILE** - the full path to the Affdex license file (including the license file name)
* The AffdexMe app can be built and run in either debug or release mode.
**To build and run in Debug Mode**
* Through Visual Studio select the "Debug" configuration.
* Add the following to your system path: C:\Program Files (x86)\Affectiva\Affdex SDK\bin\debug
* Clean, rebuild and then run the project.
**To build and run in Release Mode:**
* Through Visual Studio select the "Debug" configuration.
* Add the following to your system path: C:\Program Files (x86)\Affectiva\Affdex SDK\bin\release
* Clean, rebuild and then run the project.
**It is important** not to mix Release and Debug versions of the DLLs. If you run into issues when switching between the two different build types, check to make sure that your system path points to the matching build type.
* In order to modify the system path, from the Control Panel, navigiate to the following: **Control Panel -> Advanced System Settings -> Environment Variables -> System Variables -> Path**
* Build the project
* Run the app through Visual Studio
Copyright (c) 2015 Affectiva. All rights reserved.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

View File

@ -1,34 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace AffdexMe
{
public class UpperCaseConverter : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return SplitCamelCase(((String)value)).ToUpper();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
public string SplitCamelCase(String str)
{
return Regex.Replace(
Regex.Replace(
str,
@"(\P{Ll})(\P{Ll}\p{Ll})",
"$1 $2"
),
@"(\p{Ll})(\P{Ll})",
"$1 $2"
);
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 643 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 702 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 583 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 827 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 836 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 550 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 784 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 831 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 786 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 712 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 465 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 738 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 429 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

View File

@ -1,13 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34014
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("affdex-native.dll")]

View File

@ -1,62 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34014
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace XamlGeneratedNamespace {
/// <summary>
/// GeneratedInternalTypeHelper
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
/// <summary>
/// CreateInstance
/// </summary>
protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic)
| (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
}
/// <summary>
/// GetPropertyValue
/// </summary>
protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// SetPropertyValue
/// </summary>
protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// CreateDelegate
/// </summary>
protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod
| (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
delegateType,
handler}, null)));
}
/// <summary>
/// AddEventHandler
/// </summary>
protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
eventInfo.AddEventHandler(target, handler);
}
}
}

View File

@ -1,62 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34014
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace XamlGeneratedNamespace {
/// <summary>
/// GeneratedInternalTypeHelper
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
/// <summary>
/// CreateInstance
/// </summary>
protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic)
| (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
}
/// <summary>
/// GetPropertyValue
/// </summary>
protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// SetPropertyValue
/// </summary>
protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// CreateDelegate
/// </summary>
protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod
| (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
delegateType,
handler}, null)));
}
/// <summary>
/// AddEventHandler
/// </summary>
protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
eventInfo.AddEventHandler(target, handler);
}
}
}

View File

@ -1,625 +0,0 @@
#pragma checksum "..\..\MainWindow.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "B279F512EBDA81A09036AAE4C1816AE2"
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34014
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Effects;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Shell;
namespace AffdexMe {
/// <summary>
/// MainWindow
/// </summary>
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
#line 123 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridMainDisplay;
#line default
#line hidden
#line 125 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridContentDisplay;
#line default
#line hidden
#line 128 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelImage;
#line default
#line hidden
#line 130 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridAffdexFaceDisplay;
#line default
#line hidden
#line 131 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image imgAffdexFaceDisplay;
#line default
#line hidden
#line 133 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image imgAffdexLogoDisplay;
#line default
#line hidden
#line 136 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Canvas canvasFacePoints;
#line default
#line hidden
#line 137 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock interocularDistanceDisplay;
#line default
#line hidden
#line 138 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock pitchDisplay;
#line default
#line hidden
#line 139 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock yawDisplay;
#line default
#line hidden
#line 140 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock rollDisplay;
#line default
#line hidden
#line 145 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelClassifiersBackground;
#line default
#line hidden
#line 148 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelClassifiers;
#line default
#line hidden
#line 150 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridClassifierDisplay;
#line default
#line hidden
#line 165 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel0;
#line default
#line hidden
#line 166 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel0Name;
#line default
#line hidden
#line 168 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel0ValueBackgroud;
#line default
#line hidden
#line 169 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel0Value;
#line default
#line hidden
#line 173 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel1;
#line default
#line hidden
#line 174 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel1Name;
#line default
#line hidden
#line 176 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel1ValueBackgroud;
#line default
#line hidden
#line 177 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel1Value;
#line default
#line hidden
#line 181 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel2;
#line default
#line hidden
#line 182 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel2Name;
#line default
#line hidden
#line 184 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel2ValueBackgroud;
#line default
#line hidden
#line 185 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel2Value;
#line default
#line hidden
#line 189 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel3;
#line default
#line hidden
#line 190 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel3Name;
#line default
#line hidden
#line 192 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel3ValueBackgroud;
#line default
#line hidden
#line 193 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel3Value;
#line default
#line hidden
#line 197 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel4;
#line default
#line hidden
#line 198 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel4Name;
#line default
#line hidden
#line 200 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel4ValueBackgroud;
#line default
#line hidden
#line 201 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel4Value;
#line default
#line hidden
#line 205 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel5;
#line default
#line hidden
#line 206 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel5Name;
#line default
#line hidden
#line 208 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel5ValueBackgroud;
#line default
#line hidden
#line 209 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel5Value;
#line default
#line hidden
#line 215 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelLogoBackground;
#line default
#line hidden
#line 216 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridLogoBackground;
#line default
#line hidden
#line 229 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image imgAffdexLogoBackground;
#line default
#line hidden
#line 241 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnStartCamera;
#line default
#line hidden
#line 242 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnResetCamera;
#line default
#line hidden
#line 243 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnShowPoints;
#line default
#line hidden
#line 244 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnShowMeasurements;
#line default
#line hidden
#line 245 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnChooseWin;
#line default
#line hidden
#line 246 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnStopCamera;
#line default
#line hidden
#line 247 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnExit;
#line default
#line hidden
private bool _contentLoaded;
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/AffdexMe;component/mainwindow.xaml", System.UriKind.Relative);
#line 1 "..\..\MainWindow.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
switch (connectionId)
{
case 1:
#line 9 "..\..\MainWindow.xaml"
((AffdexMe.MainWindow)(target)).Loaded += new System.Windows.RoutedEventHandler(this.Window_Loaded);
#line default
#line hidden
#line 10 "..\..\MainWindow.xaml"
((AffdexMe.MainWindow)(target)).Closing += new System.ComponentModel.CancelEventHandler(this.Window_Closing);
#line default
#line hidden
return;
case 2:
this.gridMainDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 3:
this.gridContentDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 4:
this.stackPanelImage = ((System.Windows.Controls.StackPanel)(target));
return;
case 5:
this.gridAffdexFaceDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 6:
this.imgAffdexFaceDisplay = ((System.Windows.Controls.Image)(target));
return;
case 7:
this.imgAffdexLogoDisplay = ((System.Windows.Controls.Image)(target));
return;
case 8:
this.canvasFacePoints = ((System.Windows.Controls.Canvas)(target));
return;
case 9:
this.interocularDistanceDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 10:
this.pitchDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 11:
this.yawDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 12:
this.rollDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 13:
this.stackPanelClassifiersBackground = ((System.Windows.Controls.StackPanel)(target));
return;
case 14:
this.stackPanelClassifiers = ((System.Windows.Controls.StackPanel)(target));
return;
case 15:
this.gridClassifierDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 16:
this.stackPanel0 = ((System.Windows.Controls.StackPanel)(target));
return;
case 17:
this.stackPanel0Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 18:
this.stackPanel0ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 19:
this.stackPanel0Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 20:
this.stackPanel1 = ((System.Windows.Controls.StackPanel)(target));
return;
case 21:
this.stackPanel1Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 22:
this.stackPanel1ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 23:
this.stackPanel1Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 24:
this.stackPanel2 = ((System.Windows.Controls.StackPanel)(target));
return;
case 25:
this.stackPanel2Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 26:
this.stackPanel2ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 27:
this.stackPanel2Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 28:
this.stackPanel3 = ((System.Windows.Controls.StackPanel)(target));
return;
case 29:
this.stackPanel3Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 30:
this.stackPanel3ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 31:
this.stackPanel3Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 32:
this.stackPanel4 = ((System.Windows.Controls.StackPanel)(target));
return;
case 33:
this.stackPanel4Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 34:
this.stackPanel4ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 35:
this.stackPanel4Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 36:
this.stackPanel5 = ((System.Windows.Controls.StackPanel)(target));
return;
case 37:
this.stackPanel5Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 38:
this.stackPanel5ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 39:
this.stackPanel5Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 40:
this.stackPanelLogoBackground = ((System.Windows.Controls.StackPanel)(target));
return;
case 41:
this.gridLogoBackground = ((System.Windows.Controls.Grid)(target));
return;
case 42:
this.imgAffdexLogoBackground = ((System.Windows.Controls.Image)(target));
return;
case 43:
this.btnStartCamera = ((System.Windows.Controls.Button)(target));
return;
case 44:
this.btnResetCamera = ((System.Windows.Controls.Button)(target));
return;
case 45:
this.btnShowPoints = ((System.Windows.Controls.Button)(target));
return;
case 46:
this.btnShowMeasurements = ((System.Windows.Controls.Button)(target));
return;
case 47:
this.btnChooseWin = ((System.Windows.Controls.Button)(target));
#line 245 "..\..\MainWindow.xaml"
this.btnChooseWin.Click += new System.Windows.RoutedEventHandler(this.btnChooseWin_Click);
#line default
#line hidden
return;
case 48:
this.btnStopCamera = ((System.Windows.Controls.Button)(target));
return;
case 49:
this.btnExit = ((System.Windows.Controls.Button)(target));
return;
}
this._contentLoaded = true;
}
}
}

View File

@ -1,625 +0,0 @@
#pragma checksum "..\..\MainWindow.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "B279F512EBDA81A09036AAE4C1816AE2"
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34014
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Effects;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Shell;
namespace AffdexMe {
/// <summary>
/// MainWindow
/// </summary>
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
#line 123 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridMainDisplay;
#line default
#line hidden
#line 125 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridContentDisplay;
#line default
#line hidden
#line 128 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelImage;
#line default
#line hidden
#line 130 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridAffdexFaceDisplay;
#line default
#line hidden
#line 131 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image imgAffdexFaceDisplay;
#line default
#line hidden
#line 133 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image imgAffdexLogoDisplay;
#line default
#line hidden
#line 136 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Canvas canvasFacePoints;
#line default
#line hidden
#line 137 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock interocularDistanceDisplay;
#line default
#line hidden
#line 138 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock pitchDisplay;
#line default
#line hidden
#line 139 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock yawDisplay;
#line default
#line hidden
#line 140 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock rollDisplay;
#line default
#line hidden
#line 145 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelClassifiersBackground;
#line default
#line hidden
#line 148 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelClassifiers;
#line default
#line hidden
#line 150 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridClassifierDisplay;
#line default
#line hidden
#line 165 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel0;
#line default
#line hidden
#line 166 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel0Name;
#line default
#line hidden
#line 168 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel0ValueBackgroud;
#line default
#line hidden
#line 169 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel0Value;
#line default
#line hidden
#line 173 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel1;
#line default
#line hidden
#line 174 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel1Name;
#line default
#line hidden
#line 176 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel1ValueBackgroud;
#line default
#line hidden
#line 177 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel1Value;
#line default
#line hidden
#line 181 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel2;
#line default
#line hidden
#line 182 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel2Name;
#line default
#line hidden
#line 184 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel2ValueBackgroud;
#line default
#line hidden
#line 185 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel2Value;
#line default
#line hidden
#line 189 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel3;
#line default
#line hidden
#line 190 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel3Name;
#line default
#line hidden
#line 192 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel3ValueBackgroud;
#line default
#line hidden
#line 193 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel3Value;
#line default
#line hidden
#line 197 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel4;
#line default
#line hidden
#line 198 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel4Name;
#line default
#line hidden
#line 200 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel4ValueBackgroud;
#line default
#line hidden
#line 201 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel4Value;
#line default
#line hidden
#line 205 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel5;
#line default
#line hidden
#line 206 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel5Name;
#line default
#line hidden
#line 208 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel5ValueBackgroud;
#line default
#line hidden
#line 209 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel5Value;
#line default
#line hidden
#line 215 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelLogoBackground;
#line default
#line hidden
#line 216 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridLogoBackground;
#line default
#line hidden
#line 229 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image imgAffdexLogoBackground;
#line default
#line hidden
#line 241 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnStartCamera;
#line default
#line hidden
#line 242 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnResetCamera;
#line default
#line hidden
#line 243 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnShowPoints;
#line default
#line hidden
#line 244 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnShowMeasurements;
#line default
#line hidden
#line 245 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnChooseWin;
#line default
#line hidden
#line 246 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnStopCamera;
#line default
#line hidden
#line 247 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnExit;
#line default
#line hidden
private bool _contentLoaded;
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/AffdexMe;component/mainwindow.xaml", System.UriKind.Relative);
#line 1 "..\..\MainWindow.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
switch (connectionId)
{
case 1:
#line 9 "..\..\MainWindow.xaml"
((AffdexMe.MainWindow)(target)).Loaded += new System.Windows.RoutedEventHandler(this.Window_Loaded);
#line default
#line hidden
#line 10 "..\..\MainWindow.xaml"
((AffdexMe.MainWindow)(target)).Closing += new System.ComponentModel.CancelEventHandler(this.Window_Closing);
#line default
#line hidden
return;
case 2:
this.gridMainDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 3:
this.gridContentDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 4:
this.stackPanelImage = ((System.Windows.Controls.StackPanel)(target));
return;
case 5:
this.gridAffdexFaceDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 6:
this.imgAffdexFaceDisplay = ((System.Windows.Controls.Image)(target));
return;
case 7:
this.imgAffdexLogoDisplay = ((System.Windows.Controls.Image)(target));
return;
case 8:
this.canvasFacePoints = ((System.Windows.Controls.Canvas)(target));
return;
case 9:
this.interocularDistanceDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 10:
this.pitchDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 11:
this.yawDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 12:
this.rollDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 13:
this.stackPanelClassifiersBackground = ((System.Windows.Controls.StackPanel)(target));
return;
case 14:
this.stackPanelClassifiers = ((System.Windows.Controls.StackPanel)(target));
return;
case 15:
this.gridClassifierDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 16:
this.stackPanel0 = ((System.Windows.Controls.StackPanel)(target));
return;
case 17:
this.stackPanel0Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 18:
this.stackPanel0ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 19:
this.stackPanel0Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 20:
this.stackPanel1 = ((System.Windows.Controls.StackPanel)(target));
return;
case 21:
this.stackPanel1Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 22:
this.stackPanel1ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 23:
this.stackPanel1Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 24:
this.stackPanel2 = ((System.Windows.Controls.StackPanel)(target));
return;
case 25:
this.stackPanel2Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 26:
this.stackPanel2ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 27:
this.stackPanel2Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 28:
this.stackPanel3 = ((System.Windows.Controls.StackPanel)(target));
return;
case 29:
this.stackPanel3Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 30:
this.stackPanel3ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 31:
this.stackPanel3Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 32:
this.stackPanel4 = ((System.Windows.Controls.StackPanel)(target));
return;
case 33:
this.stackPanel4Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 34:
this.stackPanel4ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 35:
this.stackPanel4Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 36:
this.stackPanel5 = ((System.Windows.Controls.StackPanel)(target));
return;
case 37:
this.stackPanel5Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 38:
this.stackPanel5ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 39:
this.stackPanel5Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 40:
this.stackPanelLogoBackground = ((System.Windows.Controls.StackPanel)(target));
return;
case 41:
this.gridLogoBackground = ((System.Windows.Controls.Grid)(target));
return;
case 42:
this.imgAffdexLogoBackground = ((System.Windows.Controls.Image)(target));
return;
case 43:
this.btnStartCamera = ((System.Windows.Controls.Button)(target));
return;
case 44:
this.btnResetCamera = ((System.Windows.Controls.Button)(target));
return;
case 45:
this.btnShowPoints = ((System.Windows.Controls.Button)(target));
return;
case 46:
this.btnShowMeasurements = ((System.Windows.Controls.Button)(target));
return;
case 47:
this.btnChooseWin = ((System.Windows.Controls.Button)(target));
#line 245 "..\..\MainWindow.xaml"
this.btnChooseWin.Click += new System.Windows.RoutedEventHandler(this.btnChooseWin_Click);
#line default
#line hidden
return;
case 48:
this.btnStopCamera = ((System.Windows.Controls.Button)(target));
return;
case 49:
this.btnExit = ((System.Windows.Controls.Button)(target));
return;
}
this._contentLoaded = true;
}
}
}

View File

@ -1,983 +0,0 @@
#pragma checksum "..\..\MetricSelectionUI.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "DD7E5A98ECDD3C1FE8EDEE3BC3CD4094"
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34014
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using AffdexMe;
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Effects;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Shell;
using WpfAnimatedGif;
namespace AffdexMe {
/// <summary>
/// MetricSelectionUI
/// </summary>
public partial class MetricSelectionUI : System.Windows.Window, System.Windows.Markup.IComponentConnector {
#line 10 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid theGrid;
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Anger;
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Disgust;
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Fear;
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Joy;
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Sadness;
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Surprise;
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Contempt;
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Valence;
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Engagement;
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Attention;
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel BrowFurrow;
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel BrowRaise;
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel ChinRaise;
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel EyeClosure;
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel InnerBrowRaise;
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Frown;
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel LipPress;
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel LipPucker;
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel LipSuck;
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel MouthOpen;
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel NoseWrinkle;
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Smile;
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Smirk;
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel UpperLipRaise;
#line default
#line hidden
#line 304 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnClearAll;
#line default
#line hidden
#line 305 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtBlkInfo;
#line default
#line hidden
#line 306 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnOK;
#line default
#line hidden
private bool _contentLoaded;
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/AffdexMe;component/metricselectionui.xaml", System.UriKind.Relative);
#line 1 "..\..\MetricSelectionUI.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
switch (connectionId)
{
case 1:
#line 7 "..\..\MetricSelectionUI.xaml"
((AffdexMe.MetricSelectionUI)(target)).Closing += new System.ComponentModel.CancelEventHandler(this.Window_Closing);
#line default
#line hidden
return;
case 2:
this.theGrid = ((System.Windows.Controls.Grid)(target));
return;
case 3:
this.Anger = ((System.Windows.Controls.StackPanel)(target));
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 4:
this.Disgust = ((System.Windows.Controls.StackPanel)(target));
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 5:
this.Fear = ((System.Windows.Controls.StackPanel)(target));
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 6:
this.Joy = ((System.Windows.Controls.StackPanel)(target));
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 7:
this.Sadness = ((System.Windows.Controls.StackPanel)(target));
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 8:
this.Surprise = ((System.Windows.Controls.StackPanel)(target));
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 9:
this.Contempt = ((System.Windows.Controls.StackPanel)(target));
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 10:
this.Valence = ((System.Windows.Controls.StackPanel)(target));
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 11:
this.Engagement = ((System.Windows.Controls.StackPanel)(target));
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 12:
this.Attention = ((System.Windows.Controls.StackPanel)(target));
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 13:
this.BrowFurrow = ((System.Windows.Controls.StackPanel)(target));
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 14:
this.BrowRaise = ((System.Windows.Controls.StackPanel)(target));
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 15:
this.ChinRaise = ((System.Windows.Controls.StackPanel)(target));
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 16:
this.EyeClosure = ((System.Windows.Controls.StackPanel)(target));
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 17:
this.InnerBrowRaise = ((System.Windows.Controls.StackPanel)(target));
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 18:
this.Frown = ((System.Windows.Controls.StackPanel)(target));
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 19:
this.LipPress = ((System.Windows.Controls.StackPanel)(target));
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 20:
this.LipPucker = ((System.Windows.Controls.StackPanel)(target));
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 21:
this.LipSuck = ((System.Windows.Controls.StackPanel)(target));
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 22:
this.MouthOpen = ((System.Windows.Controls.StackPanel)(target));
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 23:
this.NoseWrinkle = ((System.Windows.Controls.StackPanel)(target));
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 24:
this.Smile = ((System.Windows.Controls.StackPanel)(target));
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 25:
this.Smirk = ((System.Windows.Controls.StackPanel)(target));
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 26:
this.UpperLipRaise = ((System.Windows.Controls.StackPanel)(target));
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 27:
this.btnClearAll = ((System.Windows.Controls.Button)(target));
#line 304 "..\..\MetricSelectionUI.xaml"
this.btnClearAll.Click += new System.Windows.RoutedEventHandler(this.btnClearAll_Click);
#line default
#line hidden
return;
case 28:
this.txtBlkInfo = ((System.Windows.Controls.TextBlock)(target));
return;
case 29:
this.btnOK = ((System.Windows.Controls.Button)(target));
#line 306 "..\..\MetricSelectionUI.xaml"
this.btnOK.Click += new System.Windows.RoutedEventHandler(this.btnOK_Click);
#line default
#line hidden
return;
}
this._contentLoaded = true;
}
}
}

View File

@ -1,983 +0,0 @@
#pragma checksum "..\..\MetricSelectionUI.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "DD7E5A98ECDD3C1FE8EDEE3BC3CD4094"
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34014
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using AffdexMe;
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Effects;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Shell;
using WpfAnimatedGif;
namespace AffdexMe {
/// <summary>
/// MetricSelectionUI
/// </summary>
public partial class MetricSelectionUI : System.Windows.Window, System.Windows.Markup.IComponentConnector {
#line 10 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid theGrid;
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Anger;
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Disgust;
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Fear;
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Joy;
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Sadness;
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Surprise;
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Contempt;
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Valence;
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Engagement;
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Attention;
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel BrowFurrow;
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel BrowRaise;
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel ChinRaise;
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel EyeClosure;
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel InnerBrowRaise;
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Frown;
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel LipPress;
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel LipPucker;
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel LipSuck;
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel MouthOpen;
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel NoseWrinkle;
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Smile;
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Smirk;
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel UpperLipRaise;
#line default
#line hidden
#line 304 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnClearAll;
#line default
#line hidden
#line 305 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtBlkInfo;
#line default
#line hidden
#line 306 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnOK;
#line default
#line hidden
private bool _contentLoaded;
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/AffdexMe;component/metricselectionui.xaml", System.UriKind.Relative);
#line 1 "..\..\MetricSelectionUI.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
switch (connectionId)
{
case 1:
#line 7 "..\..\MetricSelectionUI.xaml"
((AffdexMe.MetricSelectionUI)(target)).Closing += new System.ComponentModel.CancelEventHandler(this.Window_Closing);
#line default
#line hidden
return;
case 2:
this.theGrid = ((System.Windows.Controls.Grid)(target));
return;
case 3:
this.Anger = ((System.Windows.Controls.StackPanel)(target));
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 4:
this.Disgust = ((System.Windows.Controls.StackPanel)(target));
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 5:
this.Fear = ((System.Windows.Controls.StackPanel)(target));
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 6:
this.Joy = ((System.Windows.Controls.StackPanel)(target));
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 7:
this.Sadness = ((System.Windows.Controls.StackPanel)(target));
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 8:
this.Surprise = ((System.Windows.Controls.StackPanel)(target));
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 9:
this.Contempt = ((System.Windows.Controls.StackPanel)(target));
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 10:
this.Valence = ((System.Windows.Controls.StackPanel)(target));
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 11:
this.Engagement = ((System.Windows.Controls.StackPanel)(target));
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 12:
this.Attention = ((System.Windows.Controls.StackPanel)(target));
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 13:
this.BrowFurrow = ((System.Windows.Controls.StackPanel)(target));
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 14:
this.BrowRaise = ((System.Windows.Controls.StackPanel)(target));
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 15:
this.ChinRaise = ((System.Windows.Controls.StackPanel)(target));
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 16:
this.EyeClosure = ((System.Windows.Controls.StackPanel)(target));
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 17:
this.InnerBrowRaise = ((System.Windows.Controls.StackPanel)(target));
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 18:
this.Frown = ((System.Windows.Controls.StackPanel)(target));
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 19:
this.LipPress = ((System.Windows.Controls.StackPanel)(target));
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 20:
this.LipPucker = ((System.Windows.Controls.StackPanel)(target));
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 21:
this.LipSuck = ((System.Windows.Controls.StackPanel)(target));
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 22:
this.MouthOpen = ((System.Windows.Controls.StackPanel)(target));
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 23:
this.NoseWrinkle = ((System.Windows.Controls.StackPanel)(target));
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 24:
this.Smile = ((System.Windows.Controls.StackPanel)(target));
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 25:
this.Smirk = ((System.Windows.Controls.StackPanel)(target));
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 26:
this.UpperLipRaise = ((System.Windows.Controls.StackPanel)(target));
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 27:
this.btnClearAll = ((System.Windows.Controls.Button)(target));
#line 304 "..\..\MetricSelectionUI.xaml"
this.btnClearAll.Click += new System.Windows.RoutedEventHandler(this.btnClearAll_Click);
#line default
#line hidden
return;
case 28:
this.txtBlkInfo = ((System.Windows.Controls.TextBlock)(target));
return;
case 29:
this.btnOK = ((System.Windows.Controls.Button)(target));
#line 306 "..\..\MetricSelectionUI.xaml"
this.btnOK.Click += new System.Windows.RoutedEventHandler(this.btnOK_Click);
#line default
#line hidden
return;
}
this._contentLoaded = true;
}
}
}

View File

@ -1,214 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>WpfAnimatedGif</name>
</assembly>
<members>
<member name="T:WpfAnimatedGif.ImageAnimationController">
<summary>
Provides a way to pause, resume or seek a GIF animation.
</summary>
</member>
<member name="P:WpfAnimatedGif.ImageAnimationController.FrameCount">
<summary>
Returns the number of frames in the image.
</summary>
</member>
<member name="P:WpfAnimatedGif.ImageAnimationController.IsPaused">
<summary>
Returns a value that indicates whether the animation is paused.
</summary>
</member>
<member name="P:WpfAnimatedGif.ImageAnimationController.IsComplete">
<summary>
Returns a value that indicates whether the animation is complete.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageAnimationController.GotoFrame(System.Int32)">
<summary>
Seeks the animation to the specified frame index.
</summary>
<param name="index">The index of the frame to seek to</param>
</member>
<member name="P:WpfAnimatedGif.ImageAnimationController.CurrentFrame">
<summary>
Returns the current frame index.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageAnimationController.Pause">
<summary>
Pauses the animation.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageAnimationController.Play">
<summary>
Starts or resumes the animation. If the animation is complete, it restarts from the beginning.
</summary>
</member>
<member name="E:WpfAnimatedGif.ImageAnimationController.CurrentFrameChanged">
<summary>
Raised when the current frame changes.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageAnimationController.Finalize">
<summary>
Finalizes the current object.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageAnimationController.Dispose">
<summary>
Disposes the current object.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageAnimationController.Dispose(System.Boolean)">
<summary>
Disposes the current object
</summary>
<param name="disposing">true to dispose both managed an unmanaged resources, false to dispose only managed resources</param>
</member>
<member name="T:WpfAnimatedGif.ImageBehavior">
<summary>
Provides attached properties that display animated GIFs in a standard Image control.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.GetAnimatedSource(System.Windows.Controls.Image)">
<summary>
Gets the value of the <c>AnimatedSource</c> attached property for the specified object.
</summary>
<param name="obj">The element from which to read the property value.</param>
<returns>The currently displayed animated image.</returns>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.SetAnimatedSource(System.Windows.Controls.Image,System.Windows.Media.ImageSource)">
<summary>
Sets the value of the <c>AnimatedSource</c> attached property for the specified object.
</summary>
<param name="obj">The element on which to set the property value.</param>
<param name="value">The animated image to display.</param>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.AnimatedSourceProperty">
<summary>
Identifies the <c>AnimatedSource</c> attached property.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.GetRepeatBehavior(System.Windows.Controls.Image)">
<summary>
Gets the value of the <c>RepeatBehavior</c> attached property for the specified object.
</summary>
<param name="obj">The element from which to read the property value.</param>
<returns>The repeat behavior of the animated image.</returns>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.SetRepeatBehavior(System.Windows.Controls.Image,System.Windows.Media.Animation.RepeatBehavior)">
<summary>
Sets the value of the <c>RepeatBehavior</c> attached property for the specified object.
</summary>
<param name="obj">The element on which to set the property value.</param>
<param name="value">The repeat behavior of the animated image.</param>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.RepeatBehaviorProperty">
<summary>
Identifies the <c>RepeatBehavior</c> attached property.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.GetAnimateInDesignMode(System.Windows.DependencyObject)">
<summary>
Gets the value of the <c>AnimateInDesignMode</c> attached property for the specified object.
</summary>
<param name="obj">The element from which to read the property value.</param>
<returns>true if GIF animations are shown in design mode; false otherwise.</returns>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.SetAnimateInDesignMode(System.Windows.DependencyObject,System.Boolean)">
<summary>
Sets the value of the <c>AnimateInDesignMode</c> attached property for the specified object.
</summary>
<param name="obj">The element on which to set the property value.</param>
<param name="value">true to show GIF animations in design mode; false otherwise.</param>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.AnimateInDesignModeProperty">
<summary>
Identifies the <c>AnimateInDesignMode</c> attached property.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.GetAutoStart(System.Windows.Controls.Image)">
<summary>
Gets the value of the <c>AutoStart</c> attached property for the specified object.
</summary>
<param name="obj">The element from which to read the property value.</param>
<returns>true if the animation should start immediately when loaded. Otherwise, false.</returns>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.SetAutoStart(System.Windows.Controls.Image,System.Boolean)">
<summary>
Sets the value of the <c>AutoStart</c> attached property for the specified object.
</summary>
<param name="obj">The element from which to read the property value.</param>
<param name="value">true if the animation should start immediately when loaded. Otherwise, false.</param>
<remarks>The default value is true.</remarks>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.AutoStartProperty">
<summary>
Identifies the <c>AutoStart</c> attached property.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.GetAnimationController(System.Windows.Controls.Image)">
<summary>
Gets the animation controller for the specified <c>Image</c> control.
</summary>
<param name="imageControl"></param>
<returns></returns>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.GetIsAnimationLoaded(System.Windows.Controls.Image)">
<summary>
Gets the value of the <c>IsAnimationLoaded</c> attached property for the specified object.
</summary>
<param name="image">The element from which to read the property value.</param>
<returns>true if the animation is loaded. Otherwise, false.</returns>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.IsAnimationLoadedProperty">
<summary>
Identifies the <c>IsAnimationLoaded</c> attached property.
</summary>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.AnimationLoadedEvent">
<summary>
Identifies the <c>AnimationLoaded</c> attached event.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.AddAnimationLoadedHandler(System.Windows.Controls.Image,System.Windows.RoutedEventHandler)">
<summary>
Adds a handler for the AnimationLoaded attached event.
</summary>
<param name="image">The UIElement that listens to this event.</param>
<param name="handler">The event handler to be added.</param>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.RemoveAnimationLoadedHandler(System.Windows.Controls.Image,System.Windows.RoutedEventHandler)">
<summary>
Removes a handler for the AnimationLoaded attached event.
</summary>
<param name="image">The UIElement that listens to this event.</param>
<param name="handler">The event handler to be removed.</param>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.AnimationCompletedEvent">
<summary>
Identifies the <c>AnimationCompleted</c> attached event.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.AddAnimationCompletedHandler(System.Windows.Controls.Image,System.Windows.RoutedEventHandler)">
<summary>
Adds a handler for the AnimationCompleted attached event.
</summary>
<param name="d">The UIElement that listens to this event.</param>
<param name="handler">The event handler to be added.</param>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.RemoveAnimationCompletedHandler(System.Windows.Controls.Image,System.Windows.RoutedEventHandler)">
<summary>
Removes a handler for the AnimationCompleted attached event.
</summary>
<param name="d">The UIElement that listens to this event.</param>
<param name="handler">The event handler to be removed.</param>
</member>
<member name="F:WpfAnimatedGif.Properties.VersionInfo.VersionString">
<summary>
Single place to define version
</summary>
</member>
</members>
</doc>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 610 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 836 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 680 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 680 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

View File

@ -1,28 +1,68 @@
#Sample Apps for Affdex SDK for Windows
Welcome to our repository on GitHub! Here you will find example code to get you started with our Affdex SDK 2.0 for Windows and begin emotion-enabling you own app! Documentation for the Windows SDK is at <a href=http://developer.affectiva.com/windows/>Affectiva's Developer Portal</a>.
Welcome to our repository on GitHub! Here you will find example code to get you started with our Affdex SDK 3.0 for Windows and begin emotion-enabling you own app! Documentation for the Windows SDK is at <a href=http://developer.affectiva.com/windows/>Affectiva's Developer Portal</a>.
OpenCV-webcam-demo
------------------
[![Build status](https://ci.appveyor.com/api/projects/status/pn2y9h8a3nnkiw41?svg=true)]
(https://ci.appveyor.com/project/ahamino/win-sdk-samples)
*Dependencies*
Dependencies
------------
- Affdex SDK 2.0 (32 bit)
- OpenCV for Windows 2.4.9: http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.9/
- Affdex SDK 3.0 (32 bit)
- Visual Studio 2013 or higher
OpenCV-webcam-demo is a simple app that uses the camera connected to your PC to view your facial expressions and face points.
In order to use the project, you will need to:
- Contact Affectiva at sales@affectiva.com to obtain the SDK.
*Additional dependencies for the C++ projects*
- OpenCV 3.1
- Boost 1.59
Installation
------------
- Download Affdex SDK for windows [from here](http://developer.affectiva.com/downloads)
- Sign up for an evaluation license [by submitting this form](http://www.affectiva.com/45-day-free-trial/)
- Install the SDK using MSI installer.
- Download OpenCV package and extract it into ${SRC_ROOT}\opencv
- Use affdex-win-samples.sln to build the sample app
- The additional dependencies get installed automatically by NuGet.
AffdexMe
--------
OpenCV-webcam-demo (C++)
------------------
**AffdexMe** is a windows application that demonstrates the use of the Affdex SDK for Windows. It uses the camera on your Windows PC to view, process and analyze live video of your face. Start the app and you will see your own face on the screen, and metrics describing your expressions.
Project for demoing the [FrameDetector class](http://developer.affectiva.com/v3/windows/analyze-frames/). It grabs frames from the camera, analyzes them and displays the results on screen.
See AffdexMe/README.md for more information
The following command line arguments can be used to run it:
-h [ --help ] Display this help message.
-d [ --data ] arg (=data) Path to the data folder
-l [ --license ] arg (=test.license) License file.
-r [ --resolution ] arg (=640 480) Resolution in pixels (2-values): width
height
--pfps arg (=30) Processing framerate.
--cfps arg (=30) Camera capture framerate.
--bufferLen arg (=30) process buffer size.
--cid arg (=0) Camera ID.
--faceMode arg (=0) Face detector mode (large faces vs small
faces).
--numFaces arg (=1) Number of faces to be tracked.
--draw arg (=1) Draw metrics on screen.
Video-demo (c++)
----------
Project for demoing the Windows SDK [VideoDetector class](http://developer.affectiva.com/v3/windows/analyze-video/). It processs video files, displays the emotion metrics and exports the results in a csv file.
The following command line arguments can be used to run it:
-h [ --help ] Display this help message.
-d [ --data ] arg (=data) Path to the data folder
-l [ --license ] arg (=test.license) License file.
-i [ --input ] arg Video file to processs
--pfps arg (=30) Processing framerate.
--draw arg (=1) Draw video on screen.
--faceMode arg (=1) Face detector mode (large faces vs small
faces).
--numFaces arg (=1) Number of faces to be tracked.
--loop arg (=0) Loop over the video being processed.
For an example of how to use Affdex in a C# application .. please refer to [AffdexMe](https://github.com/affectiva/affdexme-win)

View File

@ -5,16 +5,27 @@ VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opencv-webcam-demo", "opencv-webcam-demo\opencv-webcam-demo.vcxproj", "{8DCDC209-C25D-4C61-B2AC-2FBA1775DD6B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AffdexMe", "AffdexMe\AffdexMe.csproj", "{5B893EA1-EB11-425A-BF8A-05822F5E2C9A}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "video-demo", "video-demo\video-demo.vcxproj", "{5D5E4401-09DE-40D3-9E29-AFC4F2EF2C80}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8DCDC209-C25D-4C61-B2AC-2FBA1775DD6B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{8DCDC209-C25D-4C61-B2AC-2FBA1775DD6B}.Release|Mixed Platforms.Build.0 = Release|Win32
{8DCDC209-C25D-4C61-B2AC-2FBA1775DD6B}.Release|Win32.ActiveCfg = Release|Win32
{8DCDC209-C25D-4C61-B2AC-2FBA1775DD6B}.Release|Win32.Build.0 = Release|Win32
{5B893EA1-EB11-425A-BF8A-05822F5E2C9A}.Release|Win32.ActiveCfg = Release|Any CPU
{8DCDC209-C25D-4C61-B2AC-2FBA1775DD6B}.Release|x86.ActiveCfg = Release|Win32
{8DCDC209-C25D-4C61-B2AC-2FBA1775DD6B}.Release|x86.Build.0 = Release|Win32
{5D5E4401-09DE-40D3-9E29-AFC4F2EF2C80}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{5D5E4401-09DE-40D3-9E29-AFC4F2EF2C80}.Release|Mixed Platforms.Build.0 = Release|Win32
{5D5E4401-09DE-40D3-9E29-AFC4F2EF2C80}.Release|Win32.ActiveCfg = Release|Win32
{5D5E4401-09DE-40D3-9E29-AFC4F2EF2C80}.Release|Win32.Build.0 = Release|Win32
{5D5E4401-09DE-40D3-9E29-AFC4F2EF2C80}.Release|x86.ActiveCfg = Release|Win32
{5D5E4401-09DE-40D3-9E29-AFC4F2EF2C80}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

17
common/AFaceListener.hpp Normal file
View File

@ -0,0 +1,17 @@
#pragma once
#include "FaceListener.h"
using namespace affdex;
class AFaceListener : public FaceListener
{
void onFaceFound(float timestamp, FaceId faceId)
{
std::cout << "Face id " << faceId << " found at timestamp " << timestamp << std::endl;
}
void onFaceLost(float timestamp, FaceId faceId)
{
std::cout << "Face id " << faceId << " lost at timestamp " << timestamp << std::endl;
}
};

View File

@ -0,0 +1,287 @@
#pragma once
#include <iostream>
#include <memory>
#include <chrono>
#include <thread>
#include <mutex>
#include <fstream>
#include <map>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <boost/filesystem.hpp>
#include <boost/timer/timer.hpp>
#include <boost/program_options.hpp>
#include <boost/algorithm/string.hpp>
#include "ImageListener.h"
using namespace affdex;
class PlottingImageListener : public ImageListener
{
std::mutex mMutex;
std::deque<std::pair<Frame, std::map<FaceId, Face> > > mDataArray;
double mCaptureLastTS;
double mCaptureFPS;
double mProcessLastTS;
double mProcessFPS;
std::ofstream &fStream;
std::chrono::time_point<std::chrono::system_clock> mStartT;
const bool mDrawDisplay;
const int spacing = 10;
const float font_size = 0.5f;
const int font = cv::FONT_HERSHEY_COMPLEX_SMALL;
std::vector<std::string> expressions;
std::vector<std::string> emotions;
std::vector<std::string> headAngles;
std::map<affdex::Glasses, std::string> glassesMap;
std::map<affdex::Gender, std::string> genderMap;
public:
PlottingImageListener(std::ofstream &csv, const bool draw_display)
: fStream(csv), mDrawDisplay(draw_display), mStartT(std::chrono::system_clock::now()),
mCaptureLastTS(-1.0f), mCaptureFPS(-1.0f),
mProcessLastTS(-1.0f), mProcessFPS(-1.0f)
{
expressions = {
"smile", "innerBrowRaise", "browRaise", "browFurrow", "noseWrinkle",
"upperLipRaise", "lipCornerDepressor", "chinRaise", "lipPucker", "lipPress",
"lipSuck", "mouthOpen", "smirk", "eyeClosure", "attention"
};
emotions = {
"joy", "fear", "disgust", "sadness", "anger",
"surprise", "contempt", "valence", "engagement"
};
headAngles = { "pitch", "yaw", "roll" };
genderMap = std::map<affdex::Gender, std::string> {
{ affdex::Gender::Male, "male" },
{ affdex::Gender::Female, "female" },
{ affdex::Gender::Unknown, "unknown" },
};
glassesMap = std::map<affdex::Glasses, std::string> {
{ affdex::Glasses::Yes, "glasses" },
{ affdex::Glasses::No, "no glasses" }
};
fStream << "TimeStamp,faceId,interocularDistance,glasses,gender,";
for (std::string angle : headAngles) fStream << angle << ",";
for (std::string emotion : emotions) fStream << emotion << ",";
for (std::string expression : expressions) fStream << expression << ",";
fStream << std::endl;
fStream.precision(4);
fStream << std::fixed;
}
FeaturePoint minPoint(VecFeaturePoint points)
{
VecFeaturePoint::iterator it = points.begin();
FeaturePoint ret = *it;
for (; it != points.end(); it++)
{
if (it->x < ret.x) ret.x = it->x;
if (it->y < ret.y) ret.y = it->y;
}
return ret;
};
FeaturePoint maxPoint( VecFeaturePoint points)
{
VecFeaturePoint::iterator it = points.begin();
FeaturePoint ret = *it;
for (; it != points.end(); it++)
{
if (it->x > ret.x) ret.x = it->x;
if (it->y > ret.y) ret.y = it->y;
}
return ret;
};
double getProcessingFrameRate()
{
std::lock_guard<std::mutex> lg(mMutex);
return mProcessFPS;
}
double getCaptureFrameRate()
{
std::lock_guard<std::mutex> lg(mMutex);
return mCaptureFPS;
}
int getDataSize()
{
std::lock_guard<std::mutex> lg(mMutex);
return mDataArray.size();
}
std::pair<Frame, std::map<FaceId, Face>> getData()
{
std::lock_guard<std::mutex> lg(mMutex);
std::pair<Frame, std::map<FaceId, Face>> dpoint = mDataArray.front();
mDataArray.pop_front();
return dpoint;
}
void onImageResults(std::map<FaceId, Face> faces, Frame image) override
{
std::lock_guard<std::mutex> lg(mMutex);
mDataArray.push_back(std::pair<Frame, std::map<FaceId, Face>> (image, faces) );
std::chrono::time_point<std::chrono::system_clock> now = std::chrono::system_clock::now();
std::chrono::milliseconds milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(now - mStartT);
double seconds = milliseconds.count() / 1000.f;
mProcessFPS = 1.0f / (seconds - mProcessLastTS);
mProcessLastTS = seconds;
};
void onImageCapture(Frame image) override
{
std::lock_guard<std::mutex> lg(mMutex);
mCaptureFPS = 1.0f / (image.getTimestamp() - mCaptureLastTS);
mCaptureLastTS = image.getTimestamp();
};
void outputToFile(const std::map<FaceId, Face> faces, const double timeStamp)
{
if (faces.empty())
{
fStream << timeStamp << "nan,nan,no glasses,unknown,";
for (std::string angle : headAngles) fStream << "nan,";
for (std::string emotion : emotions) fStream << "nan,";
for (std::string expression : expressions) fStream << "nan,";
fStream << std::endl;
}
for (auto & face_id_pair : faces)
{
Face f = face_id_pair.second;
fStream << timeStamp << ","
<< f.id << ","
<< f.measurements.interocularDistance << ","
<< glassesMap[f.appearance.glasses] << ","
<< genderMap[f.appearance.gender] << ",";
float *values = (float *)&f.measurements.orientation;
for (std::string angle : headAngles)
{
fStream << (*values) << ",";
values++;
}
values = (float *)&f.emotions;
for (std::string emotion : emotions)
{
fStream << (*values) << ",";
values++;
}
values = (float *)&f.expressions;
for (std::string expression : expressions)
{
fStream << (*values) << ",";
values++;
}
fStream << std::endl;
}
}
void drawValues(const float * first, const std::vector<std::string> names,
const int x, int &padding, const cv::Scalar clr,
cv::Mat img)
{
for (std::string name : names)
{
if ((*first) > 5.0f)
{
char m[50];
sprintf(m, "%s: %3.2f", name.c_str(), (*first));
cv::putText(img, m, cv::Point(x, padding += spacing), font, font_size, clr);
}
first++;
}
}
void draw(const std::map<FaceId, Face> faces, Frame image)
{
std::shared_ptr<byte> imgdata = image.getBGRByteArray();
cv::Mat img = cv::Mat(image.getHeight(), image.getWidth(), CV_8UC3, imgdata.get());
const int left_margin = 30;
cv::Scalar clr = cv::Scalar(255, 255, 255);
cv::Scalar header_clr = cv::Scalar(255, 0, 0);
for (auto & face_id_pair : faces)
{
Face f = face_id_pair.second;
VecFeaturePoint points = f.featurePoints;
for (auto& point : points) //Draw face feature points.
{
cv::circle(img, cv::Point(point.x, point.y), 2.0f, cv::Scalar(0, 0, 255));
}
FeaturePoint tl = minPoint(points);
FeaturePoint br = maxPoint(points);
//Output the results of the different classifiers.
int padding = tl.y + 10;
cv::putText(img, "APPEARANCE", cv::Point(br.x, padding += (spacing * 2)), font, font_size, header_clr);
cv::putText(img, genderMap[f.appearance.gender], cv::Point(br.x, padding += spacing), font, font_size, clr);
cv::putText(img, glassesMap[f.appearance.glasses], cv::Point(br.x, padding += spacing), font, font_size, clr);
Orientation headAngles = f.measurements.orientation;
char strAngles[100];
sprintf(strAngles, "Pitch: %3.2f Yaw: %3.2f Roll: %3.2f Interocular: %3.2f",
headAngles.pitch, headAngles.yaw, headAngles.roll, f.measurements.interocularDistance);
char fId[10];
sprintf(fId, "ID: %i", f.id);
cv::putText(img, fId, cv::Point(br.x, padding += spacing), font, font_size, clr);
cv::putText(img, "MEASUREMENTS", cv::Point(br.x, padding += (spacing * 2)), font, font_size, header_clr);
cv::putText(img, strAngles, cv::Point(br.x, padding += spacing), font, font_size, clr);
cv::putText(img, "EXPRESSIONS", cv::Point(br.x, padding += (spacing * 2)), font, font_size, header_clr);
drawValues((float *)&f.expressions, expressions, br.x, padding, clr, img);
cv::putText(img, "EMOTIONS", cv::Point(br.x, padding += (spacing * 2)), font, font_size, header_clr);
drawValues((float *)&f.emotions, emotions, br.x, padding, clr, img);
}
char fps_str[50];
sprintf(fps_str, "capture fps: %2.0f", mCaptureFPS);
cv::putText(img, fps_str, cv::Point(img.cols - 110, img.rows - left_margin - spacing), font, font_size, clr);
sprintf(fps_str, "process fps: %2.0f", mProcessFPS);
cv::putText(img, fps_str, cv::Point(img.cols - 110, img.rows - left_margin), font, font_size, clr);
cv::imshow("analyze video", img);
cv::waitKey(5);
}
};

56
common/StatusListener.hpp Normal file
View File

@ -0,0 +1,56 @@
#pragma once
#include <iostream>
#include <memory>
#include <chrono>
#include <thread>
#include <mutex>
#include <fstream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <boost/filesystem.hpp>
#include <boost/timer/timer.hpp>
#include <boost/program_options.hpp>
#include <boost/algorithm/string.hpp>
#include "ProcessStatusListener.h"
using namespace affdex;
class StatusListener : public ProcessStatusListener
{
public:
StatusListener():mIsRunning(true) {};
void onProcessingException(AffdexException ex)
{
std::cerr << "Encountered an exception while processing: " << ex.what() << std::endl;
m.lock();
mIsRunning = false;
m.unlock();
};
void onProcessingFinished()
{
std::cerr << "Processing finished successfully" << std::endl;
m.lock();
mIsRunning = false;
m.unlock();
};
bool isRunning()
{
bool ret = true;
m.lock();
ret = mIsRunning;
m.unlock();
return ret;
};
private:
std::mutex m;
bool mIsRunning;
};

View File

@ -1,173 +1,241 @@
#include <iostream>
#include <memory>
#include <chrono>
#include <thread>
#include <opencv\highgui.h>
#include <filesystem>
#include <fstream>
#include <boost/filesystem.hpp>
#include <boost/timer/timer.hpp>
#include <boost/program_options.hpp>
#include <boost/algorithm/string.hpp>
#include "Frame.h"
#include "Face.h"
#include "ImageListener.h"
#include "FrameDetector.h"
#include "AffdexException.h"
#include "AFaceListener.hpp"
#include "PlottingImageListener.hpp"
#include "StatusListener.hpp"
using namespace std;
using namespace affdex;
float last_timestamp = -1.0f;
float capture_fps = -1.0f;
float process_last_timestamp = -1.0f;
float process_fps = -1.0f;
class PlottingImageListener : public ImageListener
/// <summary>
/// Project for demoing the Windows SDK CameraDetector class (grabbing and processing frames from the camera).
/// </summary>
int main(int argsc, char ** argsv)
{
public:
void onImageResults(std::map<FaceId,Face> faces, Frame image) {
namespace po = boost::program_options; // abbreviate namespace
const int spacing = 10;
const int left_margin = 30;
const int font = cv::FONT_HERSHEY_COMPLEX_SMALL;
float font_size = 0.5f;
cv::Scalar clr = cv::Scalar(0, 0, 255);
cv::Scalar header_clr = cv::Scalar(255, 0, 0);
shared_ptr<byte> imgdata = image.getBGRByteArray();
cv::Mat mImg = cv::Mat(image.getHeight(), image.getWidth(), CV_8UC3, imgdata.get());
std::cerr << "Hit ESCAPE key to exit app.." << endl;
shared_ptr<FrameDetector> frameDetector;
for (unsigned int i = 0; i < faces.size(); i++)
{
Face f = faces[i];
VecFeaturePoint points = f.featurePoints;
for (auto& point : points) //Draw face feature points.
{
cv::circle(mImg, cv::Point(point.x, point.y), 1.0f, cv::Scalar(0, 0, 255));
}
Orientation headAngles = f.measurements.orientation;
std::string strAngles = "Pitch: " + std::to_string(headAngles.pitch) +
" Yaw: " + std::to_string(headAngles.yaw) +
" Roll: " + std::to_string(headAngles.roll) +
" InterOcularDist: " + std::to_string(f.measurements.interocularDistance);
try{
//Output the results of the different classifiers.
int padding = 10;
const std::vector<int> DEFAULT_RESOLUTION{ 640, 480 };
std::vector<std::string> expressions{ "smile", "innerBrowRaise", "browRaise", "browFurrow", "noseWrinkle",
"upperLipRaise", "lipCornerDepressor", "chinRaise", "lipPucker", "lipPress",
"lipSuck", "mouthOpen", "smirk", "eyeClosure", "attention" };
affdex::path DATA_FOLDER;
affdex::path LICENSE_PATH;
std::vector<std::string> emotions{ "joy", "fear", "disgust", "sadness", "anger", "surprise", "contempt", "valence", "engagement" };
std::vector<int> resolution;
int process_framerate = 30;
int camera_framerate = 15;
int buffer_length = 2;
int camera_id = 0;
unsigned int nFaces = 1;
bool draw_display = true;
int faceDetectorMode = (int)FaceDetectorMode::LARGE_FACES;
cv::putText(mImg, "MEASUREMENTS", cv::Point(left_margin, padding += spacing), font, font_size, header_clr);
float last_timestamp = -1.0f;
float capture_fps = -1.0f;
cv::putText(mImg, strAngles, cv::Point(left_margin, padding += spacing), font, font_size, clr);
const int precision = 2;
std::cerr.precision(precision);
std::cout.precision(precision);
cv::putText(mImg, "EXPRESSIONS", cv::Point(left_margin, padding += (spacing * 2)), font, font_size, header_clr);
po::options_description description("Project for demoing the Windows SDK CameraDetector class (grabbing and processing frames from the camera).");
description.add_options()
("help,h", po::bool_switch()->default_value(false), "Display this help message.")
#ifdef _WIN32
("data,d", po::wvalue< affdex::path >(&DATA_FOLDER)->default_value(affdex::path(L"data"), std::string("data")), "Path to the data folder")
("license,l", po::wvalue< affdex::path >(&LICENSE_PATH)->default_value(affdex::path(L"test.license"), std::string("test.license")), "License file.")
#else // _WIN32
("data,d", po::value< affdex::path >(&DATA_FOLDER)->default_value(affdex::path("data"), std::string("data")), "Path to the data folder")
("license,l", po::value< affdex::path >(&LICENSE_PATH)->default_value(affdex::path("test.license"), std::string("test.license")), "License file.")
#endif // _WIN32
("resolution,r", po::value< std::vector<int> >(&resolution)->default_value(DEFAULT_RESOLUTION, "640 480")->multitoken(), "Resolution in pixels (2-values): width height")
("pfps", po::value< int >(&process_framerate)->default_value(30), "Processing framerate.")
("cfps", po::value< int >(&camera_framerate)->default_value(30), "Camera capture framerate.")
("bufferLen", po::value< int >(&buffer_length)->default_value(30), "process buffer size.")
("cid", po::value< int >(&camera_id)->default_value(0), "Camera ID.")
("faceMode", po::value< int >(&faceDetectorMode)->default_value((int)FaceDetectorMode::LARGE_FACES), "Face detector mode (large faces vs small faces).")
("numFaces", po::value< unsigned int >(&nFaces)->default_value(1), "Number of faces to be tracked.")
("draw", po::value< bool >(&draw_display)->default_value(true), "Draw metrics on screen.")
;
po::variables_map args;
try
{
po::store(po::command_line_parser(argsc, argsv).options(description).run(), args);
if (args["help"].as<bool>())
{
std::cout << description << std::endl;
return 0;
}
po::notify(args);
}
catch (po::error& e)
{
std::cerr << "ERROR: " << e.what() << std::endl << std::endl;
std::cerr << "For help, use the -h option." << std::endl << std::endl;
return 1;
}
float * values = (float *)&f.expressions;
for (string expression : expressions)
{
cv::putText(mImg, expression + ": " + std::to_string(int(*values)), cv::Point(left_margin, padding += spacing), font, font_size, clr);
values++;
}
if (!boost::filesystem::exists(DATA_FOLDER))
{
std::cerr << "Folder doesn't exist: " << std::string(DATA_FOLDER.begin(), DATA_FOLDER.end()) << std::endl << std::endl;;
std::cerr << "Try specifying the folder through the command line" << std::endl;
std::cerr << description << std::endl;
return 1;
}
if (!boost::filesystem::exists(LICENSE_PATH))
{
std::cerr << "License file " << std::string(LICENSE_PATH.begin(), LICENSE_PATH.end()) << " doesnt exist." << std::endl << std::endl;;
std::cerr << "Try specifying the folder through the command line" << std::endl;
std::cerr << description << std::endl;
return 1;
}
cv::putText(mImg, "EMOTIONS", cv::Point(left_margin, padding += (spacing * 2)), font, font_size, header_clr);
if (resolution.size() != 2)
{
std::cerr << "Only two numbers must be specified for resolution." << std::endl;
return 1;
}
else if (resolution[0] <= 0 || resolution[1] <= 0)
{
std::cerr << "Resolutions must be positive number." << std::endl;
return 1;
}
values = (float *)&f.emotions;
std::ofstream csvFileStream;
for (string emotion : emotions)
{
cv::putText(mImg, emotion + ": " + std::to_string(int(*values)), cv::Point(left_margin, padding += spacing), font, font_size, clr);
values++;
}
std::cerr << "Timestamp: " << image.getTimestamp()
<< "," << image.getWidth()
<< "x" << image.getHeight()
<< " cfps: " << capture_fps
<< " pnts: " << points.size() << endl;
process_last_timestamp = image.getTimestamp();
std::cerr << "Initializing Affdex FrameDetector" << endl;
shared_ptr<FaceListener> faceListenPtr(new AFaceListener());
shared_ptr<PlottingImageListener> listenPtr(new PlottingImageListener(csvFileStream, draw_display)); // Instanciate the ImageListener class
shared_ptr<StatusListener> videoListenPtr(new StatusListener());
frameDetector = make_shared<FrameDetector>(buffer_length, process_framerate, nFaces, (affdex::FaceDetectorMode) faceDetectorMode); // Init the FrameDetector Class
}
cv::putText(mImg, "capture fps: " + std::to_string(int(capture_fps)), cv::Point(mImg.cols - 110, mImg.rows - left_margin - spacing), font, font_size, clr);
//Initialize detectors
frameDetector->setDetectAllEmotions(true);
frameDetector->setDetectAllExpressions(true);
frameDetector->setDetectGender(true);
frameDetector->setDetectGlasses(true);
frameDetector->setClassifierPath(DATA_FOLDER);
frameDetector->setLicensePath(LICENSE_PATH);
frameDetector->setImageListener(listenPtr.get());
frameDetector->setFaceListener(faceListenPtr.get());
frameDetector->setProcessStatusListener(videoListenPtr.get());
cv::imshow("analyze-image", mImg);
cv::VideoCapture webcam(camera_id); //Connect to the first webcam
webcam.set(CV_CAP_PROP_FPS, camera_framerate); //Set webcam framerate.
webcam.set(CV_CAP_PROP_FRAME_WIDTH, resolution[0]);
webcam.set(CV_CAP_PROP_FRAME_HEIGHT, resolution[1]);
std::cerr << "Setting the webcam frame rate to: " << camera_framerate << std::endl;
auto start_time = std::chrono::system_clock::now();
if (!webcam.isOpened())
{
std::cerr << "Error opening webcam!" << std::endl;
return 1;
}
cv::waitKey(30);
};
std::cout << "Max num of faces set to: " << frameDetector->getMaxNumberFaces() << std::endl;
std::string mode;
switch (frameDetector->getFaceDetectorMode())
{
case FaceDetectorMode::LARGE_FACES:
mode = "LARGE_FACES";
break;
case FaceDetectorMode::SMALL_FACES:
mode = "SMALL_FACES";
break;
default:
break;
}
std::cout << "Face detector mode set to: " << mode << std::endl;
void onImageCapture(Frame image) override
{};
};
//Start the frame detector thread.
frameDetector->start();
int main(int argsc, char ** argsv)
{
do{
cv::Mat img;
if (!webcam.read(img)) //Capture an image from the camera
{
std::cerr << "Failed to read frame from webcam! " << std::endl;
break;
}
try{
// Parse and check the data folder (with assets)
const std::wstring AFFDEX_DATA_DIR = L"C:\\Program Files (x86)\\Affectiva\\Affdex SDK\\data";
const std::wstring AFFDEX_LICENSE_FILE = L"affdex.license";
//Calculate the Image timestamp and the capture frame rate;
const auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - start_time);
const double seconds = milliseconds.count() / 1000.f;
int framerate = 30;
int process_frame_rate = 30;
int buffer_length = 2;
// Create a frame
Frame f(img.size().width, img.size().height, img.data, Frame::COLOR_FORMAT::BGR, seconds);
capture_fps = 1.0f / (seconds - last_timestamp);
last_timestamp = seconds;
frameDetector->process(f); //Pass the frame to detector
FrameDetector frameDetector(buffer_length, process_frame_rate); // Init the FrameDetector Class
shared_ptr<ImageListener> listenPtr(new PlottingImageListener()); // Instanciate the ImageListener class
// For each frame processed
if (listenPtr->getDataSize() > 0)
{
cv::VideoCapture webcam(0); //Connect to the first webcam
webcam.set(CV_CAP_PROP_FPS, framerate); //Set webcam framerate.
std::cerr << "Setting the webcam frame rate to: " << framerate << std::endl;
auto start_time = std::chrono::system_clock::now();
if (!webcam.isOpened())
{
std::cerr << "Error opening webcam!" << std::endl;
return 1;
}
std::pair<Frame, std::map<FaceId, Face> > dataPoint = listenPtr->getData();
Frame frame = dataPoint.first;
std::map<FaceId, Face> faces = dataPoint.second;
//Initialize detectors
frameDetector.setDetectAllEmotions(true);
frameDetector.setDetectAllExpressions(true);
frameDetector.setClassifierPath(AFFDEX_DATA_DIR);
frameDetector.setLicensePath(AFFDEX_LICENSE_FILE);
frameDetector.setImageListener(listenPtr.get());
//Start the frame detector thread.
frameDetector.start();
// Draw metrics to the GUI
if (draw_display)
{
listenPtr->draw(faces, frame);
}
do{
cv::Mat img;
if (!webcam.read(img)) //Capture an image from the camera
{
std::cerr << "Failed to read frame from webcam! " << std::endl;
break;
}
std::cerr << "timestamp: " << frame.getTimestamp()
<< " cfps: " << listenPtr->getCaptureFrameRate()
<< " pfps: " << listenPtr->getProcessingFrameRate()
<< " faces: " << faces.size() << endl;
//Calculate the Image timestamp and the capture frame rate;
const auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - start_time);
const float seconds = milliseconds.count() / 1000.f;
// Create a frame
Frame f(img.size().width, img.size().height, img.data, Frame::COLOR_FORMAT::BGR, seconds);
capture_fps = 1.0f / (seconds - last_timestamp);
last_timestamp = seconds;
std::cerr << "Capture framerate = " << capture_fps << std::endl;
frameDetector.process(f); //Pass the frame to detector
} while (!GetAsyncKeyState(VK_ESCAPE));
//Output metrics to the file
//listenPtr->outputToFile(faces, frame.getTimestamp());
}
frameDetector.stop(); //Stop frame detector thread
}
catch (AffdexException ex)
{
std::cerr << "Encountered an AffdexException " << ex.what();
return 1;
}
catch (std::exception ex)
{
std::cerr << "Encountered an exception " << ex.what();
return 1;
}
catch (std::runtime_error err)
{
std::cerr << "Encountered a runtime error " << err.what();
return 1;
}
return 0;
}
}
#ifdef _WIN32
while (!GetAsyncKeyState(VK_ESCAPE) && videoListenPtr->isRunning());
#else // _WIN32
while (videoListenPtr->isRunning());//(cv::waitKey(20) != -1);
#endif
std::cerr << "Stopping FrameDetector Thread" << endl;
frameDetector->stop(); //Stop frame detector thread
}
catch (AffdexException ex)
{
std::cerr << "Encountered an AffdexException " << ex.what();
return 1;
}
catch (std::runtime_error err)
{
std::cerr << "Encountered a runtime error " << err.what();
return 1;
}
catch (std::exception ex)
{
std::cerr << "Encountered an exception " << ex.what();
return 1;
}
catch (...)
{
std::cerr << "Encountered an unhandled exception ";
return 1;
}
return 0;
}

View File

@ -1,10 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\OpenCV.2.4.10\build\native\OpenCV.props" Condition="Exists('..\packages\OpenCV.2.4.10\build\native\OpenCV.props')" />
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
@ -14,14 +11,10 @@
<ProjectGuid>{8DCDC209-C25D-4C61-B2AC-2FBA1775DD6B}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>opencvwebcamdemo</RootNamespace>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
<RestorePackages>true</RestorePackages>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
@ -32,35 +25,15 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<PropertyGroup Label="UserMacros">
<NuGetPackageImportStamp>635eb584</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>..\affdex-sdk\include;..\opencv\build\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>..\affdex-sdk\lib\affdex-sdk.lib;..\opencv\build\x86\vc12\lib\opencv_highgui2411d.lib;..\opencv\build\x86\vc12\lib\opencv_core2411d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
@ -71,20 +44,75 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>C:\Program Files %28x86%29\Affectiva\Affdex SDK\include;..\opencv\build\include</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>C:\Program Files %28x86%29\Affectiva\Affdex SDK\include;../common/;%(AdditionalDependencies)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>C:\Program Files (x86)\Affectiva\Affdex SDK\lib\release\affdex-native.lib;..\opencv\build\x86\vc12\lib\opencv_highgui249.lib;..\opencv\build\x86\vc12\lib\opencv_core249.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>C:\Program Files (x86)\Affectiva\Affdex SDK\lib\release\affdex-native.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>xcopy /d /y "C:\Program Files (x86)\Affectiva\Affdex SDK\bin\release\affdex-native.dll" "$(OutDir)"</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="opencv-webcam-demo.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common\AFaceListener.hpp" />
<ClInclude Include="..\common\PlottingImageListener.hpp" />
<ClInclude Include="..\common\StatusListener.hpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\packages\OpenCV.2.4.10\build\native\OpenCV.targets" Condition="Exists('..\packages\OpenCV.2.4.10\build\native\OpenCV.targets')" />
<Import Project="..\packages\boost.1.59.0.0\build\native\boost.targets" Condition="Exists('..\packages\boost.1.59.0.0\build\native\boost.targets')" />
<Import Project="..\packages\boost_atomic-vc120.1.59.0.0\build\native\boost_atomic-vc120.targets" Condition="Exists('..\packages\boost_atomic-vc120.1.59.0.0\build\native\boost_atomic-vc120.targets')" />
<Import Project="..\packages\boost_chrono-vc120.1.59.0.0\build\native\boost_chrono-vc120.targets" Condition="Exists('..\packages\boost_chrono-vc120.1.59.0.0\build\native\boost_chrono-vc120.targets')" />
<Import Project="..\packages\boost_container-vc120.1.59.0.0\build\native\boost_container-vc120.targets" Condition="Exists('..\packages\boost_container-vc120.1.59.0.0\build\native\boost_container-vc120.targets')" />
<Import Project="..\packages\boost_context-vc120.1.59.0.0\build\native\boost_context-vc120.targets" Condition="Exists('..\packages\boost_context-vc120.1.59.0.0\build\native\boost_context-vc120.targets')" />
<Import Project="..\packages\boost_coroutine-vc120.1.59.0.0\build\native\boost_coroutine-vc120.targets" Condition="Exists('..\packages\boost_coroutine-vc120.1.59.0.0\build\native\boost_coroutine-vc120.targets')" />
<Import Project="..\packages\boost_date_time-vc120.1.59.0.0\build\native\boost_date_time-vc120.targets" Condition="Exists('..\packages\boost_date_time-vc120.1.59.0.0\build\native\boost_date_time-vc120.targets')" />
<Import Project="..\packages\boost_filesystem-vc120.1.59.0.0\build\native\boost_filesystem-vc120.targets" Condition="Exists('..\packages\boost_filesystem-vc120.1.59.0.0\build\native\boost_filesystem-vc120.targets')" />
<Import Project="..\packages\boost_graph-vc120.1.59.0.0\build\native\boost_graph-vc120.targets" Condition="Exists('..\packages\boost_graph-vc120.1.59.0.0\build\native\boost_graph-vc120.targets')" />
<Import Project="..\packages\boost_iostreams-vc120.1.59.0.0\build\native\boost_iostreams-vc120.targets" Condition="Exists('..\packages\boost_iostreams-vc120.1.59.0.0\build\native\boost_iostreams-vc120.targets')" />
<Import Project="..\packages\boost_locale-vc120.1.59.0.0\build\native\boost_locale-vc120.targets" Condition="Exists('..\packages\boost_locale-vc120.1.59.0.0\build\native\boost_locale-vc120.targets')" />
<Import Project="..\packages\boost_log-vc120.1.59.0.0\build\native\boost_log-vc120.targets" Condition="Exists('..\packages\boost_log-vc120.1.59.0.0\build\native\boost_log-vc120.targets')" />
<Import Project="..\packages\boost_log_setup-vc120.1.59.0.0\build\native\boost_log_setup-vc120.targets" Condition="Exists('..\packages\boost_log_setup-vc120.1.59.0.0\build\native\boost_log_setup-vc120.targets')" />
<Import Project="..\packages\boost_math_c99-vc120.1.59.0.0\build\native\boost_math_c99-vc120.targets" Condition="Exists('..\packages\boost_math_c99-vc120.1.59.0.0\build\native\boost_math_c99-vc120.targets')" />
<Import Project="..\packages\boost_math_c99f-vc120.1.59.0.0\build\native\boost_math_c99f-vc120.targets" Condition="Exists('..\packages\boost_math_c99f-vc120.1.59.0.0\build\native\boost_math_c99f-vc120.targets')" />
<Import Project="..\packages\boost_math_c99l-vc120.1.59.0.0\build\native\boost_math_c99l-vc120.targets" Condition="Exists('..\packages\boost_math_c99l-vc120.1.59.0.0\build\native\boost_math_c99l-vc120.targets')" />
<Import Project="..\packages\boost_math_tr1-vc120.1.59.0.0\build\native\boost_math_tr1-vc120.targets" Condition="Exists('..\packages\boost_math_tr1-vc120.1.59.0.0\build\native\boost_math_tr1-vc120.targets')" />
<Import Project="..\packages\boost_math_tr1f-vc120.1.59.0.0\build\native\boost_math_tr1f-vc120.targets" Condition="Exists('..\packages\boost_math_tr1f-vc120.1.59.0.0\build\native\boost_math_tr1f-vc120.targets')" />
<Import Project="..\packages\boost_math_tr1l-vc120.1.59.0.0\build\native\boost_math_tr1l-vc120.targets" Condition="Exists('..\packages\boost_math_tr1l-vc120.1.59.0.0\build\native\boost_math_tr1l-vc120.targets')" />
<Import Project="..\packages\boost_prg_exec_monitor-vc120.1.59.0.0\build\native\boost_prg_exec_monitor-vc120.targets" Condition="Exists('..\packages\boost_prg_exec_monitor-vc120.1.59.0.0\build\native\boost_prg_exec_monitor-vc120.targets')" />
<Import Project="..\packages\boost_program_options-vc120.1.59.0.0\build\native\boost_program_options-vc120.targets" Condition="Exists('..\packages\boost_program_options-vc120.1.59.0.0\build\native\boost_program_options-vc120.targets')" />
<Import Project="..\packages\boost_random-vc120.1.59.0.0\build\native\boost_random-vc120.targets" Condition="Exists('..\packages\boost_random-vc120.1.59.0.0\build\native\boost_random-vc120.targets')" />
<Import Project="..\packages\boost_regex-vc120.1.59.0.0\build\native\boost_regex-vc120.targets" Condition="Exists('..\packages\boost_regex-vc120.1.59.0.0\build\native\boost_regex-vc120.targets')" />
<Import Project="..\packages\boost_serialization-vc120.1.59.0.0\build\native\boost_serialization-vc120.targets" Condition="Exists('..\packages\boost_serialization-vc120.1.59.0.0\build\native\boost_serialization-vc120.targets')" />
<Import Project="..\packages\boost_signals-vc120.1.59.0.0\build\native\boost_signals-vc120.targets" Condition="Exists('..\packages\boost_signals-vc120.1.59.0.0\build\native\boost_signals-vc120.targets')" />
<Import Project="..\packages\boost_system-vc120.1.59.0.0\build\native\boost_system-vc120.targets" Condition="Exists('..\packages\boost_system-vc120.1.59.0.0\build\native\boost_system-vc120.targets')" />
<Import Project="..\packages\boost_thread-vc120.1.59.0.0\build\native\boost_thread-vc120.targets" Condition="Exists('..\packages\boost_thread-vc120.1.59.0.0\build\native\boost_thread-vc120.targets')" />
<Import Project="..\packages\boost_timer-vc120.1.59.0.0\build\native\boost_timer-vc120.targets" Condition="Exists('..\packages\boost_timer-vc120.1.59.0.0\build\native\boost_timer-vc120.targets')" />
<Import Project="..\packages\boost_unit_test_framework-vc120.1.59.0.0\build\native\boost_unit_test_framework-vc120.targets" Condition="Exists('..\packages\boost_unit_test_framework-vc120.1.59.0.0\build\native\boost_unit_test_framework-vc120.targets')" />
<Import Project="..\packages\boost_wave-vc120.1.59.0.0\build\native\boost_wave-vc120.targets" Condition="Exists('..\packages\boost_wave-vc120.1.59.0.0\build\native\boost_wave-vc120.targets')" />
<Import Project="..\packages\boost_wserialization-vc120.1.59.0.0\build\native\boost_wserialization-vc120.targets" Condition="Exists('..\packages\boost_wserialization-vc120.1.59.0.0\build\native\boost_wserialization-vc120.targets')" />
<Import Project="..\packages\boost_exception-vc120.1.59.0.0\build\native\boost_exception-vc120.targets" Condition="Exists('..\packages\boost_exception-vc120.1.59.0.0\build\native\boost_exception-vc120.targets')" />
<Import Project="..\packages\boost_test_exec_monitor-vc120.1.59.0.0\build\native\boost_test_exec_monitor-vc120.targets" Condition="Exists('..\packages\boost_test_exec_monitor-vc120.1.59.0.0\build\native\boost_test_exec_monitor-vc120.targets')" />
<Import Project="..\packages\boost-vc120.1.59.0.0\build\native\boost-vc120.targets" Condition="Exists('..\packages\boost-vc120.1.59.0.0\build\native\boost-vc120.targets')" />
<Import Project="..\packages\opencv3.1.redist.1.0\build\native\opencv3.1.redist.targets" Condition="Exists('..\packages\opencv3.1.redist.1.0\build\native\opencv3.1.redist.targets')" />
<Import Project="..\packages\opencv3.1.1.0\build\native\opencv3.1.targets" Condition="Exists('..\packages\opencv3.1.1.0\build\native\opencv3.1.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\opencv3.1.redist.1.0\build\native\opencv3.1.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\opencv3.1.redist.1.0\build\native\opencv3.1.redist.targets'))" />
<Error Condition="!Exists('..\packages\opencv3.1.1.0\build\native\opencv3.1.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\opencv3.1.1.0\build\native\opencv3.1.targets'))" />
</Target>
</Project>

View File

@ -19,4 +19,18 @@
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common\AFaceListener.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\common\PlottingImageListener.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\common\StatusListener.hpp">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LocalDebuggerEnvironment>PATH=%PATH%;C:\Program Files (x86)\Affectiva\Affdex SDK\bin\release;..\opencv\build\x86\vc12\bin</LocalDebuggerEnvironment>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LocalDebuggerEnvironment>PATH=%PATH%;C:\Program Files (x86)\Affectiva\Affdex SDK\bin\release\;C:\Program Files (x86)\Affectiva\Affdex SDK\bin</LocalDebuggerEnvironment>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="boost" version="1.59.0.0" targetFramework="Native" />
<package id="boost_chrono-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost_date_time-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost_exception-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost_filesystem-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost_program_options-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost_system-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost_timer-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="opencv3.1" version="1.0" targetFramework="Native" />
<package id="opencv3.1.redist" version="1.0" targetFramework="Native" />
</packages>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="boost" version="1.59.0.0" targetFramework="Native" />
<package id="boost_chrono-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost_date_time-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost_exception-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost_filesystem-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost_program_options-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost_system-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost_timer-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="boost-vc120" version="1.59.0.0" targetFramework="Native" />
<package id="opencv3.1" version="1.0" targetFramework="Native" />
<package id="opencv3.1.redist" version="1.0" targetFramework="Native" />
</packages>

181
video-demo/video-demo.cpp Normal file
View File

@ -0,0 +1,181 @@
#include <iostream>
#include <memory>
#include <chrono>
#include <fstream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <boost/filesystem.hpp>
#include <boost/timer/timer.hpp>
#include <boost/program_options.hpp>
#include "VideoDetector.h"
#include "AffdexException.h"
#include "AFaceListener.hpp"
#include "PlottingImageListener.hpp"
#include "StatusListener.hpp"
using namespace std;
using namespace affdex;
/// <summary>
/// Project demos how to use the Affdex Windows SDK VideoDetector
/// </summary>
int main(int argsc, char ** argsv)
{
//Defaults, overridden by the command line parameters
affdex::path DATA_FOLDER;
affdex::path LICENSE_PATH;
affdex::path videoPath;
int process_framerate = 30;
bool draw_display = true;
bool loop = false;
unsigned int nFaces = 1;
int faceDetectorMode = (int)FaceDetectorMode::SMALL_FACES;
const int precision = 2;
std::cerr.precision(precision);
std::cout.precision(precision);
namespace po = boost::program_options; // abbreviate namespace
po::options_description description("Project for demoing the Windows SDK VideoDetector class (processing video files).");
description.add_options()
("help,h", po::bool_switch()->default_value(false), "Display this help message.")
#ifdef _WIN32
("data,d", po::wvalue< affdex::path >(&DATA_FOLDER)->default_value(affdex::path(L"data"), std::string("data")), "Path to the data folder")
("license,l", po::wvalue< affdex::path >(&LICENSE_PATH)->default_value(affdex::path(L"test.license"), std::string("test.license")), "License file.")
("input,i", po::wvalue< affdex::path >(&videoPath)->required(), "Video file to processs")
#else // _WIN32
("data,d", po::value< affdex::path >(&DATA_FOLDER)->default_value(affdex::path("data"), std::string("data")), "Path to the data folder")
("license,l", po::value< affdex::path >(&LICENSE_PATH)->default_value(affdex::path("test.license"), std::string("test.license")), "License file.")
("input,i", po::value< affdex::path >(&videoPath)->required(), "Video file to processs")
#endif // _WIN32
("pfps", po::value< int >(&process_framerate)->default_value(30), "Processing framerate.")
("draw", po::value< bool >(&draw_display)->default_value(true), "Draw video on screen.")
("faceMode", po::value< int >(&faceDetectorMode)->default_value((int)FaceDetectorMode::SMALL_FACES), "Face detector mode (large faces vs small faces).")
("numFaces", po::value< unsigned int >(&nFaces)->default_value(1), "Number of faces to be tracked.")
("loop", po::value< bool >(&loop)->default_value(false), "Loop over the video being processed.")
;
po::variables_map args;
try
{
po::store(po::command_line_parser(argsc, argsv).options(description).run(), args);
if (args["help"].as<bool>())
{
std::cout << description << std::endl;
return 0;
}
po::notify(args);
}
catch (po::error& e)
{
std::cerr << "ERROR: " << e.what() << std::endl << std::endl;
std::cerr << "For help, use the -h option." << std::endl << std::endl;
return 1;
}
// Parse and check the data folder (with assets)
if (!boost::filesystem::exists(DATA_FOLDER))
{
std::cerr << "Data folder doesn't exist: " << std::string(DATA_FOLDER.begin(), DATA_FOLDER.end()) << std::endl;
std::cerr << "Try specifying the folder through the command line" << std::endl;
std::cerr << description << std::endl;
return 1;
}
try
{
//Initialize the video file detector
VideoDetector videoDetector(process_framerate, nFaces, (affdex::FaceDetectorMode) faceDetectorMode);
//Initialize out file
boost::filesystem::path csvPath(videoPath);
csvPath.replace_extension(".csv");
std::ofstream csvFileStream(csvPath.c_str());
if (!csvFileStream.is_open())
{
std::cerr << "Unable to open csv file " << csvPath << std::endl;
return 1;
}
std::cout << "Max num of faces set to: " << videoDetector.getMaxNumberFaces() << std::endl;
std::string mode;
switch (videoDetector.getFaceDetectorMode())
{
case FaceDetectorMode::LARGE_FACES:
mode = "LARGE_FACES";
break;
case FaceDetectorMode::SMALL_FACES:
mode = "SMALL_FACES";
break;
default:
break;
}
std::cout << "Face detector mode set to: " << mode << std::endl;
shared_ptr<PlottingImageListener> listenPtr(new PlottingImageListener(csvFileStream, draw_display));
//Activate all the detectors
videoDetector.setDetectAllEmotions(true);
videoDetector.setDetectAllExpressions(true);
videoDetector.setDetectGender(true);
videoDetector.setDetectGlasses(true);
//Set the location of the data folder and license file
videoDetector.setClassifierPath(DATA_FOLDER);
videoDetector.setLicensePath(LICENSE_PATH);
//Add callback functions implementations
videoDetector.setImageListener(listenPtr.get());
videoDetector.start(); //Initialize the detectors .. call only once
do
{
shared_ptr<StatusListener> videoListenPtr = std::make_shared<StatusListener>();
videoDetector.setProcessStatusListener(videoListenPtr.get());
videoDetector.process(videoPath); //Process a video
//For each frame processed
while (videoListenPtr->isRunning())
{
if (listenPtr->getDataSize() > 0)
{
std::pair<Frame, std::map<FaceId, Face> > dataPoint = listenPtr->getData();
Frame frame = dataPoint.first;
std::map<FaceId, Face> faces = dataPoint.second;
//Draw on the GUI
if (draw_display)
{
listenPtr->draw(faces, frame);
}
std::cerr << "timestamp: " << frame.getTimestamp()
<< " cfps: " << listenPtr->getCaptureFrameRate()
<< " pfps: " << listenPtr->getProcessingFrameRate()
<< " faces: "<< faces.size() << endl;
//Output metrics to file
listenPtr->outputToFile(faces, frame.getTimestamp());
}
}
} while(loop);
videoDetector.stop();
csvFileStream.close();
std::cout << "Output written to file: " << csvPath << std::endl;
}
catch (AffdexException ex)
{
std::cerr << ex.what();
}
return 0;
}

View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\OpenCV.2.4.10\build\native\OpenCV.props" Condition="Exists('..\packages\OpenCV.2.4.10\build\native\OpenCV.props')" />
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{5D5E4401-09DE-40D3-9E29-AFC4F2EF2C80}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>videodemo</RootNamespace>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
<RestorePackages>true</RestorePackages>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros">
<NuGetPackageImportStamp>5c6c3308</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>C:\Program Files %28x86%29\Affectiva\Affdex SDK\include;../common;%(AdditionalDependencies)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>C:\Program Files (x86)\Affectiva\Affdex SDK\lib\release\affdex-native.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>xcopy /d /y "C:\Program Files (x86)\Affectiva\Affdex SDK\bin\release\affdex-native.dll" "$(OutDir)"
xcopy /d /y "C:\Program Files (x86)\Affectiva\Affdex SDK\bin\opencv_ffmpeg248.dll" "$(OutDir)"</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="video-demo.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common\AFaceListener.hpp" />
<ClInclude Include="..\common\PlottingImageListener.hpp" />
<ClInclude Include="..\common\StatusListener.hpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\packages\OpenCV.2.4.10\build\native\OpenCV.targets" Condition="Exists('..\packages\OpenCV.2.4.10\build\native\OpenCV.targets')" />
<Import Project="..\packages\boost.1.59.0.0\build\native\boost.targets" Condition="Exists('..\packages\boost.1.59.0.0\build\native\boost.targets')" />
<Import Project="..\packages\boost_atomic-vc120.1.59.0.0\build\native\boost_atomic-vc120.targets" Condition="Exists('..\packages\boost_atomic-vc120.1.59.0.0\build\native\boost_atomic-vc120.targets')" />
<Import Project="..\packages\boost_chrono-vc120.1.59.0.0\build\native\boost_chrono-vc120.targets" Condition="Exists('..\packages\boost_chrono-vc120.1.59.0.0\build\native\boost_chrono-vc120.targets')" />
<Import Project="..\packages\boost_container-vc120.1.59.0.0\build\native\boost_container-vc120.targets" Condition="Exists('..\packages\boost_container-vc120.1.59.0.0\build\native\boost_container-vc120.targets')" />
<Import Project="..\packages\boost_context-vc120.1.59.0.0\build\native\boost_context-vc120.targets" Condition="Exists('..\packages\boost_context-vc120.1.59.0.0\build\native\boost_context-vc120.targets')" />
<Import Project="..\packages\boost_coroutine-vc120.1.59.0.0\build\native\boost_coroutine-vc120.targets" Condition="Exists('..\packages\boost_coroutine-vc120.1.59.0.0\build\native\boost_coroutine-vc120.targets')" />
<Import Project="..\packages\boost_date_time-vc120.1.59.0.0\build\native\boost_date_time-vc120.targets" Condition="Exists('..\packages\boost_date_time-vc120.1.59.0.0\build\native\boost_date_time-vc120.targets')" />
<Import Project="..\packages\boost_filesystem-vc120.1.59.0.0\build\native\boost_filesystem-vc120.targets" Condition="Exists('..\packages\boost_filesystem-vc120.1.59.0.0\build\native\boost_filesystem-vc120.targets')" />
<Import Project="..\packages\boost_graph-vc120.1.59.0.0\build\native\boost_graph-vc120.targets" Condition="Exists('..\packages\boost_graph-vc120.1.59.0.0\build\native\boost_graph-vc120.targets')" />
<Import Project="..\packages\boost_iostreams-vc120.1.59.0.0\build\native\boost_iostreams-vc120.targets" Condition="Exists('..\packages\boost_iostreams-vc120.1.59.0.0\build\native\boost_iostreams-vc120.targets')" />
<Import Project="..\packages\boost_locale-vc120.1.59.0.0\build\native\boost_locale-vc120.targets" Condition="Exists('..\packages\boost_locale-vc120.1.59.0.0\build\native\boost_locale-vc120.targets')" />
<Import Project="..\packages\boost_log-vc120.1.59.0.0\build\native\boost_log-vc120.targets" Condition="Exists('..\packages\boost_log-vc120.1.59.0.0\build\native\boost_log-vc120.targets')" />
<Import Project="..\packages\boost_log_setup-vc120.1.59.0.0\build\native\boost_log_setup-vc120.targets" Condition="Exists('..\packages\boost_log_setup-vc120.1.59.0.0\build\native\boost_log_setup-vc120.targets')" />
<Import Project="..\packages\boost_math_c99-vc120.1.59.0.0\build\native\boost_math_c99-vc120.targets" Condition="Exists('..\packages\boost_math_c99-vc120.1.59.0.0\build\native\boost_math_c99-vc120.targets')" />
<Import Project="..\packages\boost_math_c99f-vc120.1.59.0.0\build\native\boost_math_c99f-vc120.targets" Condition="Exists('..\packages\boost_math_c99f-vc120.1.59.0.0\build\native\boost_math_c99f-vc120.targets')" />
<Import Project="..\packages\boost_math_c99l-vc120.1.59.0.0\build\native\boost_math_c99l-vc120.targets" Condition="Exists('..\packages\boost_math_c99l-vc120.1.59.0.0\build\native\boost_math_c99l-vc120.targets')" />
<Import Project="..\packages\boost_math_tr1-vc120.1.59.0.0\build\native\boost_math_tr1-vc120.targets" Condition="Exists('..\packages\boost_math_tr1-vc120.1.59.0.0\build\native\boost_math_tr1-vc120.targets')" />
<Import Project="..\packages\boost_math_tr1f-vc120.1.59.0.0\build\native\boost_math_tr1f-vc120.targets" Condition="Exists('..\packages\boost_math_tr1f-vc120.1.59.0.0\build\native\boost_math_tr1f-vc120.targets')" />
<Import Project="..\packages\boost_math_tr1l-vc120.1.59.0.0\build\native\boost_math_tr1l-vc120.targets" Condition="Exists('..\packages\boost_math_tr1l-vc120.1.59.0.0\build\native\boost_math_tr1l-vc120.targets')" />
<Import Project="..\packages\boost_prg_exec_monitor-vc120.1.59.0.0\build\native\boost_prg_exec_monitor-vc120.targets" Condition="Exists('..\packages\boost_prg_exec_monitor-vc120.1.59.0.0\build\native\boost_prg_exec_monitor-vc120.targets')" />
<Import Project="..\packages\boost_program_options-vc120.1.59.0.0\build\native\boost_program_options-vc120.targets" Condition="Exists('..\packages\boost_program_options-vc120.1.59.0.0\build\native\boost_program_options-vc120.targets')" />
<Import Project="..\packages\boost_random-vc120.1.59.0.0\build\native\boost_random-vc120.targets" Condition="Exists('..\packages\boost_random-vc120.1.59.0.0\build\native\boost_random-vc120.targets')" />
<Import Project="..\packages\boost_regex-vc120.1.59.0.0\build\native\boost_regex-vc120.targets" Condition="Exists('..\packages\boost_regex-vc120.1.59.0.0\build\native\boost_regex-vc120.targets')" />
<Import Project="..\packages\boost_serialization-vc120.1.59.0.0\build\native\boost_serialization-vc120.targets" Condition="Exists('..\packages\boost_serialization-vc120.1.59.0.0\build\native\boost_serialization-vc120.targets')" />
<Import Project="..\packages\boost_signals-vc120.1.59.0.0\build\native\boost_signals-vc120.targets" Condition="Exists('..\packages\boost_signals-vc120.1.59.0.0\build\native\boost_signals-vc120.targets')" />
<Import Project="..\packages\boost_system-vc120.1.59.0.0\build\native\boost_system-vc120.targets" Condition="Exists('..\packages\boost_system-vc120.1.59.0.0\build\native\boost_system-vc120.targets')" />
<Import Project="..\packages\boost_thread-vc120.1.59.0.0\build\native\boost_thread-vc120.targets" Condition="Exists('..\packages\boost_thread-vc120.1.59.0.0\build\native\boost_thread-vc120.targets')" />
<Import Project="..\packages\boost_timer-vc120.1.59.0.0\build\native\boost_timer-vc120.targets" Condition="Exists('..\packages\boost_timer-vc120.1.59.0.0\build\native\boost_timer-vc120.targets')" />
<Import Project="..\packages\boost_unit_test_framework-vc120.1.59.0.0\build\native\boost_unit_test_framework-vc120.targets" Condition="Exists('..\packages\boost_unit_test_framework-vc120.1.59.0.0\build\native\boost_unit_test_framework-vc120.targets')" />
<Import Project="..\packages\boost_wave-vc120.1.59.0.0\build\native\boost_wave-vc120.targets" Condition="Exists('..\packages\boost_wave-vc120.1.59.0.0\build\native\boost_wave-vc120.targets')" />
<Import Project="..\packages\boost_wserialization-vc120.1.59.0.0\build\native\boost_wserialization-vc120.targets" Condition="Exists('..\packages\boost_wserialization-vc120.1.59.0.0\build\native\boost_wserialization-vc120.targets')" />
<Import Project="..\packages\boost_exception-vc120.1.59.0.0\build\native\boost_exception-vc120.targets" Condition="Exists('..\packages\boost_exception-vc120.1.59.0.0\build\native\boost_exception-vc120.targets')" />
<Import Project="..\packages\boost_test_exec_monitor-vc120.1.59.0.0\build\native\boost_test_exec_monitor-vc120.targets" Condition="Exists('..\packages\boost_test_exec_monitor-vc120.1.59.0.0\build\native\boost_test_exec_monitor-vc120.targets')" />
<Import Project="..\packages\boost-vc120.1.59.0.0\build\native\boost-vc120.targets" Condition="Exists('..\packages\boost-vc120.1.59.0.0\build\native\boost-vc120.targets')" />
<Import Project="..\packages\opencv3.1.redist.1.0\build\native\opencv3.1.redist.targets" Condition="Exists('..\packages\opencv3.1.redist.1.0\build\native\opencv3.1.redist.targets')" />
<Import Project="..\packages\opencv3.1.1.0\build\native\opencv3.1.targets" Condition="Exists('..\packages\opencv3.1.1.0\build\native\opencv3.1.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\opencv3.1.redist.1.0\build\native\opencv3.1.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\opencv3.1.redist.1.0\build\native\opencv3.1.redist.targets'))" />
<Error Condition="!Exists('..\packages\opencv3.1.1.0\build\native\opencv3.1.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\opencv3.1.1.0\build\native\opencv3.1.targets'))" />
</Target>
</Project>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="video-demo.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common\AFaceListener.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\common\PlottingImageListener.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\common\StatusListener.hpp">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>