Commit 6b093452 authored by Alexander Smorkalov's avatar Alexander Smorkalov

Filter selection and several filters implemented for WinRT sample.

parent 2cfd635e
......@@ -142,7 +142,6 @@
</Style>
<!-- Button styles -->
<!--
TextButtonStyle is used to style a Button using subheader-styled text with no other adornment. There
are two styles that are based on TextButtonStyle (TextPrimaryButtonStyle and TextSecondaryButtonStyle)
......@@ -407,8 +406,8 @@
-->
<!--
<Style x:Key="SkipBackAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}">
<
Style x:Key="SkipBackAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}">
<Setter Property="AutomationProperties.AutomationId" Value="SkipBackAppBarButton"/>
<Setter Property="AutomationProperties.Name" Value="Skip Back"/>
<Setter Property="Content" Value="&#xE100;"/>
......@@ -1536,8 +1535,8 @@
<!--
SnappedBackButtonStyle is used to style a Button for use in the title area of a snapped page. Margins appropriate
for the conventional page layout are included as part of the style.
The obvious duplication here is necessary as the glyphs used in snapped are not merely smaller versions of the same
The o
bvious duplication here is necessary as the glyphs used in snapped are not merely smaller versions of the same
glyph but are actually distinct.
-->
<Style x:Key="SnappedBackButtonStyle" TargetType="Button">
......
......@@ -8,8 +8,16 @@
mc:Ignorable="d">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Image x:Name="PreviewWidget" HorizontalAlignment="Left" Height="748" Margin="10,10,0,0" VerticalAlignment="Top" Width="1146"/>
<Button Content="Button" HorizontalAlignment="Left" Margin="1161,10,0,0" VerticalAlignment="Top" Width="195" Height="63" Click="Button_Click"/>
<Image x:Name="PreviewWidget" HorizontalAlignment="Left" Height="512" Margin="10,10,0,0" VerticalAlignment="Top" Width="512"/>
<Button Content="Apply" HorizontalAlignment="Left" Margin="527,71,0,0" VerticalAlignment="Top" Width="293" Height="63" Click="Button_Click"/>
<ComboBox x:Name="FilterTypeWidget" HorizontalAlignment="Left" Margin="527,10,0,0" VerticalAlignment="Top" Width="293" Height="56" SelectedIndex="0">
<ComboBoxItem Content="Preview"/>
<ComboBoxItem Content="GrayScale"/>
<ComboBoxItem Content="Canny"/>
<ComboBoxItem Content="Blur"/>
<ComboBoxItem Content="Features"/>
<ComboBoxItem Content="Sepia"/>
</ComboBox>
</Grid>
</Page>
......@@ -8,6 +8,7 @@
#include <ppltasks.h>
#include <wrl\client.h>
#include <Robuffer.h>
#include <vector>
using namespace OcvImageProcessing;
using namespace Microsoft::WRL;
......@@ -26,9 +27,6 @@ using namespace Windows::UI::Xaml::Input;
using namespace Windows::UI::Xaml::Media;
using namespace Windows::UI::Xaml::Navigation;
#include <opencv2\core\core.hpp>
#include <opencv2\imgproc\imgproc.hpp>
Uri^ InputImageUri = ref new Uri(L"ms-appx:///Assets/Lena.png");
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
......@@ -36,21 +34,7 @@ Uri^ InputImageUri = ref new Uri(L"ms-appx:///Assets/Lena.png");
MainPage::MainPage()
{
InitializeComponent();
}
/// <summary>
/// Invoked when this page is about to be displayed in a Frame.
/// </summary>
/// <param name="e">Event data that describes how this page was reached. The Parameter
/// property is typically used to configure the page.</param>
void MainPage::OnNavigatedTo(NavigationEventArgs^ e)
{
(void) e; // Unused parameter
}
void OcvImageProcessing::MainPage::Button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
RandomAccessStreamReference^ streamRef = RandomAccessStreamReference::CreateFromUri(InputImageUri);
task<IRandomAccessStreamWithContentType^> (streamRef->OpenReadAsync()).
......@@ -78,15 +62,30 @@ void OcvImageProcessing::MainPage::Button_Click(Platform::Object^ sender, Window
{
PixelDataProvider^ pixelProvider = thisTask.get();
Platform::Array<byte>^ srcPixels = pixelProvider->DetachPixelData();
Lena = cv::Mat(frameHeight, frameWidth, CV_8UC4);
memcpy(Lena.data, srcPixels->Data, 4*frameWidth*frameHeight);
UpdateImage(Lena);
});
}
cv::Mat inputImage(frameHeight, frameWidth, CV_8UC4, srcPixels->Data);
unsigned char* dstPixels;
/// <summary>
/// Invoked when this page is about to be displayed in a Frame.
/// </summary>
/// <param name="e">Event data that describes how this page was reached. The Parameter
/// property is typically used to configure the page.</param>
void MainPage::OnNavigatedTo(NavigationEventArgs^ e)
{
(void) e; // Unused parameter
}
void OcvImageProcessing::MainPage::UpdateImage(const cv::Mat& image)
{
// Create the WriteableBitmap
WriteableBitmap^ bitmap = ref new WriteableBitmap(frameWidth, frameHeight);
WriteableBitmap^ bitmap = ref new WriteableBitmap(image.cols, image.rows);
// Get access to the pixels
IBuffer^ buffer = bitmap->PixelBuffer;
unsigned char* dstPixels;
// Obtain IBufferByteAccess
ComPtr<IBufferByteAccess> pBufferByteAccess;
......@@ -95,14 +94,95 @@ void OcvImageProcessing::MainPage::Button_Click(Platform::Object^ sender, Window
// Get pointer to pixel bytes
pBufferByteAccess->Buffer(&dstPixels);
cv::Mat outputImage(frameHeight, frameWidth, CV_8UC4, dstPixels);
memcpy(dstPixels, image.data, 4*image.cols*image.rows);
// Set the bitmap to the Image element
PreviewWidget->Source = bitmap;}
cv::Mat OcvImageProcessing::MainPage::ApplyGrayFilter(const cv::Mat& image)
{
cv::Mat result;
cv::Mat intermediateMat;
cv::Canny(inputImage, intermediateMat, 80, 90);
cv::cvtColor(intermediateMat, outputImage, CV_GRAY2BGRA);
//cv::blur(inputImage, outputImage, cv::Size(3,3));
cv::cvtColor(image, intermediateMat, CV_RGBA2GRAY);
cv::cvtColor(intermediateMat, result, CV_GRAY2BGRA);
return result;
}
// Set the bitmap to the Image element
PreviewWidget->Source = bitmap;
});
cv::Mat OcvImageProcessing::MainPage::ApplyCannyFilter(const cv::Mat& image)
{
cv::Mat result;
cv::Mat intermediateMat;
cv::Canny(image, intermediateMat, 80, 90);
cv::cvtColor(intermediateMat, result, CV_GRAY2BGRA);
return result;
}
cv::Mat OcvImageProcessing::MainPage::ApplyBlurFilter(const cv::Mat& image)
{
cv::Mat result;
cv::blur(image, result, cv::Size(3,3));
return result;
}
cv::Mat OcvImageProcessing::MainPage::ApplyFindFeaturesFilter(const cv::Mat& image)
{
cv::Mat result;
cv::Mat intermediateMat;
cv::FastFeatureDetector detector(50);
std::vector<cv::KeyPoint> features;
image.copyTo(result);
cv::cvtColor(image, intermediateMat, CV_RGBA2GRAY);
detector.detect(intermediateMat, features);
for( unsigned int i = 0; i < std::min(features.size(), (size_t)50); i++ )
{
const cv::KeyPoint& kp = features[i];
cv::circle(result, cv::Point((int)kp.pt.x, (int)kp.pt.y), 10, cv::Scalar(255,0,0,255));
}
return result;
}
cv::Mat OcvImageProcessing::MainPage::ApplySepiaFilter(const cv::Mat& image)
{
const float SepiaKernelData[16] =
{
/* B */0.131f, 0.534f, 0.272f, 0.f,
/* G */0.168f, 0.686f, 0.349f, 0.f,
/* R */0.189f, 0.769f, 0.393f, 0.f,
/* A */0.000f, 0.000f, 0.000f, 1.f
};
const cv::Mat SepiaKernel(4, 4, CV_32FC1, (void*)SepiaKernelData);
cv::Mat result;
cv::transform(image, result, SepiaKernel);
return result;
}
void OcvImageProcessing::MainPage::Button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
switch(FilterTypeWidget->SelectedIndex)
{
case PREVIEW:
UpdateImage(Lena);
break;
case GRAY:
UpdateImage(ApplyGrayFilter(Lena));
break;
case CANNY:
UpdateImage(ApplyCannyFilter(Lena));
break;
case BLUR:
UpdateImage(ApplyBlurFilter(Lena));
break;
case FEATURES:
UpdateImage(ApplyFindFeaturesFilter(Lena));
break;
case SEPIA:
UpdateImage(ApplySepiaFilter(Lena));
break;
default:
UpdateImage(Lena);
}
}
......@@ -6,6 +6,9 @@
#pragma once
#include "MainPage.g.h"
#include <opencv2\core\core.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\features2d\features2d.hpp>
namespace OcvImageProcessing
{
......@@ -19,9 +22,25 @@ namespace OcvImageProcessing
protected:
virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override;
private:
static const int PREVIEW = 0;
static const int GRAY = 1;
static const int CANNY = 2;
static const int BLUR = 3;
static const int FEATURES = 4;
static const int SEPIA = 5;
void Button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
cv::Mat ApplyGrayFilter(const cv::Mat& image);
cv::Mat ApplyCannyFilter(const cv::Mat& image);
cv::Mat ApplyBlurFilter(const cv::Mat& image);
cv::Mat ApplyFindFeaturesFilter(const cv::Mat& image);
cv::Mat ApplySepiaFilter(const cv::Mat& image);
void UpdateImage(const cv::Mat& image);
cv::Mat Lena;
unsigned int frameWidth, frameHeight;
};
}
......@@ -91,6 +91,7 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<PackageCertificateKeyFile>OcvImageProcessing_TemporaryKey.pfx</PackageCertificateKeyFile>
<AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<ClCompile>
......@@ -108,21 +109,22 @@
<ClCompile>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<DisableSpecificWarnings>4453</DisableSpecificWarnings>
<AdditionalIncludeDirectories>C:\Users\asmorkalov\Projects\opencv\build\install\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(OPENCV_DIR)\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalLibraryDirectories>C:\Users\asmorkalov\Projects\opencv\build\install\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opencv_core246.lib;opencv_imgproc246.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OPENCV_DIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opencv_core247d.lib;opencv_imgproc247d.lib;opencv_features2d247d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<DisableSpecificWarnings>4453</DisableSpecificWarnings>
<AdditionalIncludeDirectories>C:\Users\asmorkalov\Projects\opencv\build\install\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(OPENCV_DIR)\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalLibraryDirectories>C:\Users\asmorkalov\Projects\opencv\build\install\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(OPENCV_DIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opencv_core247.lib;opencv_imgproc247.lib;opencv_features2d247.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
......@@ -161,14 +163,105 @@
<AppxManifest Include="Package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
<None Include="..\..\opencv\build\install\bin\opencv_core246.dll">
<None Include="$(OPENCV_DIR)\bin\opencv_calib3d247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_calib3d247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_contrib247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_contrib247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_core247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_core247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_features2d247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_features2d247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_flann247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_flann247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_gpu247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_highgui247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_highgui247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_imgproc247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_imgproc247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_legacy247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_legacy247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_ml247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_ml247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_nonfree247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_nonfree247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_objdetect247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_objdetect247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_photo247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_photo247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_stitching247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="..\..\opencv\build\install\bin\opencv_imgproc246.dll">
<None Include="$(OPENCV_DIR)\bin\opencv_stitching247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_superres247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_superres247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_video247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_video247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_videostab247.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
</None>
<None Include="$(OPENCV_DIR)\bin\opencv_videostab247d.dll">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
</None>
<None Include="OcvImageProcessing_TemporaryKey.pfx" />
</ItemGroup>
<ItemGroup>
......
......@@ -41,8 +41,39 @@
</ItemGroup>
<ItemGroup>
<None Include="OcvImageProcessing_TemporaryKey.pfx" />
<None Include="..\..\opencv\build\install\bin\opencv_core246.dll" />
<None Include="..\..\opencv\build\install\bin\opencv_imgproc246.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_calib3d247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_calib3d247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_contrib247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_contrib247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_core247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_core247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_features2d247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_features2d247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_flann247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_flann247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_gpu247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_highgui247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_highgui247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_imgproc247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_imgproc247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_legacy247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_legacy247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_ml247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_ml247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_nonfree247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_nonfree247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_objdetect247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_objdetect247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_photo247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_photo247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_stitching247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_stitching247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_superres247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_superres247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_video247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_video247d.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_videostab247.dll" />
<None Include="$(OPENCV_DIR)\bin\opencv_videostab247d.dll" />
</ItemGroup>
<ItemGroup>
<Page Include="MainPage.xaml" />
......
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest">
<Identity Name="96635370-3751-48a8-84a6-afd4229cf435"
Publisher="CN=asmorkalov"
Version="1.0.0.0" />
<Identity Name="96635370-3751-48a8-84a6-afd4229cf435" Publisher="CN=asmorkalov" Version="1.0.0.0" />
<Properties>
<DisplayName>OcvImageProcessing</DisplayName>
<PublisherDisplayName>asmorkalov</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Prerequisites>
<OSMinVersion>6.2.1</OSMinVersion>
<OSMaxVersionTested>6.2.1</OSMaxVersionTested>
</Prerequisites>
<Resources>
<Resource Language="x-generate"/>
<Resource Language="x-generate" />
</Resources>
<Applications>
<Application Id="App"
Executable="$targetnametoken$.exe"
EntryPoint="OcvImageProcessing.App">
<VisualElements
DisplayName="OcvImageProcessing"
Logo="Assets\Logo.png"
SmallLogo="Assets\SmallLogo.png"
Description="OcvImageProcessing"
ForegroundText="light"
BackgroundColor="#464646">
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="OcvImageProcessing.App">
<VisualElements DisplayName="OcvImageProcessing" Logo="Assets\Logo.png" SmallLogo="Assets\SmallLogo.png" Description="OcvImageProcessing" ForegroundText="light" BackgroundColor="#464646">
<DefaultTile ShowName="allLogos" />
<SplashScreen Image="Assets\SplashScreen.png" />
</VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
</Capabilities>
</Package>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment