diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing.sln b/samples/winrt/OcvImageProcessing/OcvImageProcessing.sln
new file mode 100644
index 0000000000..11bf904bc1
--- /dev/null
+++ b/samples/winrt/OcvImageProcessing/OcvImageProcessing.sln
@@ -0,0 +1,38 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OcvImageProcessing", "OcvImageProcessing\OcvImageProcessing.vcxproj", "{A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|ARM = Debug|ARM
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|ARM = Release|ARM
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Debug|ARM.ActiveCfg = Debug|ARM
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Debug|ARM.Build.0 = Debug|ARM
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Debug|ARM.Deploy.0 = Debug|ARM
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Debug|Win32.Build.0 = Debug|Win32
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Debug|Win32.Deploy.0 = Debug|Win32
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Debug|x64.ActiveCfg = Debug|x64
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Debug|x64.Build.0 = Debug|x64
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Debug|x64.Deploy.0 = Debug|x64
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Release|ARM.ActiveCfg = Release|ARM
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Release|ARM.Build.0 = Release|ARM
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Release|ARM.Deploy.0 = Release|ARM
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Release|Win32.ActiveCfg = Release|Win32
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Release|Win32.Build.0 = Release|Win32
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Release|Win32.Deploy.0 = Release|Win32
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Release|x64.ActiveCfg = Release|x64
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Release|x64.Build.0 = Release|x64
+ {A5555EA2-F9E8-4078-90F5-D428F2C0D6D1}.Release|x64.Deploy.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/App.xaml b/samples/winrt/OcvImageProcessing/OcvImageProcessing/App.xaml
new file mode 100644
index 0000000000..78409d5118
--- /dev/null
+++ b/samples/winrt/OcvImageProcessing/OcvImageProcessing/App.xaml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/App.xaml.cpp b/samples/winrt/OcvImageProcessing/OcvImageProcessing/App.xaml.cpp
new file mode 100644
index 0000000000..228e24a1fe
--- /dev/null
+++ b/samples/winrt/OcvImageProcessing/OcvImageProcessing/App.xaml.cpp
@@ -0,0 +1,107 @@
+//
+// App.xaml.cpp
+// Implementation of the App class.
+//
+
+#include "pch.h"
+#include "MainPage.xaml.h"
+
+using namespace OcvImageProcessing;
+
+using namespace Platform;
+using namespace Windows::ApplicationModel;
+using namespace Windows::ApplicationModel::Activation;
+using namespace Windows::Foundation;
+using namespace Windows::Foundation::Collections;
+using namespace Windows::UI::Xaml;
+using namespace Windows::UI::Xaml::Controls;
+using namespace Windows::UI::Xaml::Controls::Primitives;
+using namespace Windows::UI::Xaml::Data;
+using namespace Windows::UI::Xaml::Input;
+using namespace Windows::UI::Xaml::Interop;
+using namespace Windows::UI::Xaml::Media;
+using namespace Windows::UI::Xaml::Navigation;
+
+// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=234227
+
+///
+/// Initializes the singleton application object. This is the first line of authored code
+/// executed, and as such is the logical equivalent of main() or WinMain().
+///
+App::App()
+{
+ InitializeComponent();
+ Suspending += ref new SuspendingEventHandler(this, &App::OnSuspending);
+}
+
+///
+/// Invoked when the application is launched normally by the end user. Other entry points
+/// will be used when the application is launched to open a specific file, to display
+/// search results, and so forth.
+///
+/// Details about the launch request and process.
+void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ args)
+{
+ auto rootFrame = dynamic_cast(Window::Current->Content);
+
+ // Do not repeat app initialization when the Window already has content,
+ // just ensure that the window is active
+ if (rootFrame == nullptr)
+ {
+ // Create a Frame to act as the navigation context and associate it with
+ // a SuspensionManager key
+ rootFrame = ref new Frame();
+
+ if (args->PreviousExecutionState == ApplicationExecutionState::Terminated)
+ {
+ // TODO: Restore the saved session state only when appropriate, scheduling the
+ // final launch steps after the restore is complete
+
+ }
+
+ if (rootFrame->Content == nullptr)
+ {
+ // When the navigation stack isn't restored navigate to the first page,
+ // configuring the new page by passing required information as a navigation
+ // parameter
+ if (!rootFrame->Navigate(TypeName(MainPage::typeid), args->Arguments))
+ {
+ throw ref new FailureException("Failed to create initial page");
+ }
+ }
+ // Place the frame in the current Window
+ Window::Current->Content = rootFrame;
+ // Ensure the current window is active
+ Window::Current->Activate();
+ }
+ else
+ {
+ if (rootFrame->Content == nullptr)
+ {
+ // When the navigation stack isn't restored navigate to the first page,
+ // configuring the new page by passing required information as a navigation
+ // parameter
+ if (!rootFrame->Navigate(TypeName(MainPage::typeid), args->Arguments))
+ {
+ throw ref new FailureException("Failed to create initial page");
+ }
+ }
+ // Ensure the current window is active
+ Window::Current->Activate();
+ }
+}
+
+///
+/// Invoked when application execution is being suspended. Application state is saved
+/// without knowing whether the application will be terminated or resumed with the contents
+/// of memory still intact.
+///
+/// The source of the suspend request.
+/// Details about the suspend request.
+void App::OnSuspending(Object^ sender, SuspendingEventArgs^ e)
+{
+ (void) sender; // Unused parameter
+ (void) e; // Unused parameter
+
+ //TODO: Save application state and stop any background activity
+}
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/App.xaml.h b/samples/winrt/OcvImageProcessing/OcvImageProcessing/App.xaml.h
new file mode 100644
index 0000000000..8e16532bce
--- /dev/null
+++ b/samples/winrt/OcvImageProcessing/OcvImageProcessing/App.xaml.h
@@ -0,0 +1,24 @@
+//
+// App.xaml.h
+// Declaration of the App class.
+//
+
+#pragma once
+
+#include "App.g.h"
+
+namespace OcvImageProcessing
+{
+ ///
+ /// Provides application-specific behavior to supplement the default Application class.
+ ///
+ ref class App sealed
+ {
+ public:
+ App();
+ virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ args) override;
+
+ private:
+ void OnSuspending(Platform::Object^ sender, Windows::ApplicationModel::SuspendingEventArgs^ e);
+ };
+}
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/Lena.png b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/Lena.png
new file mode 100644
index 0000000000..3e8668734a
Binary files /dev/null and b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/Lena.png differ
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/Logo.png b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/Logo.png
new file mode 100644
index 0000000000..ea685d651a
Binary files /dev/null and b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/Logo.png differ
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/SmallLogo.png b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/SmallLogo.png
new file mode 100644
index 0000000000..efaf5468a1
Binary files /dev/null and b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/SmallLogo.png differ
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/SplashScreen.png b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/SplashScreen.png
new file mode 100644
index 0000000000..901c3b085a
Binary files /dev/null and b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/SplashScreen.png differ
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/StoreLogo.png b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/StoreLogo.png
new file mode 100644
index 0000000000..af64bf00ad
Binary files /dev/null and b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Assets/StoreLogo.png differ
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/Common/StandardStyles.xaml b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Common/StandardStyles.xaml
new file mode 100644
index 0000000000..4def039e59
--- /dev/null
+++ b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Common/StandardStyles.xaml
@@ -0,0 +1,1828 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mouse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/MainPage.xaml b/samples/winrt/OcvImageProcessing/OcvImageProcessing/MainPage.xaml
new file mode 100644
index 0000000000..86db7b8257
--- /dev/null
+++ b/samples/winrt/OcvImageProcessing/OcvImageProcessing/MainPage.xaml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/MainPage.xaml.cpp b/samples/winrt/OcvImageProcessing/OcvImageProcessing/MainPage.xaml.cpp
new file mode 100644
index 0000000000..4de13401d5
--- /dev/null
+++ b/samples/winrt/OcvImageProcessing/OcvImageProcessing/MainPage.xaml.cpp
@@ -0,0 +1,188 @@
+//
+// MainPage.xaml.cpp
+// Implementation of the MainPage class.
+//
+
+#include "pch.h"
+#include "MainPage.xaml.h"
+#include
+#include
+#include
+#include
+using namespace OcvImageProcessing;
+
+using namespace Microsoft::WRL;
+using namespace concurrency;
+using namespace Platform;
+using namespace Windows::Foundation;
+using namespace Windows::Storage::Streams;
+using namespace Windows::UI::Xaml::Media::Imaging;
+using namespace Windows::Graphics::Imaging;
+using namespace Windows::Foundation::Collections;
+using namespace Windows::UI::Xaml;
+using namespace Windows::UI::Xaml::Controls;
+using namespace Windows::UI::Xaml::Controls::Primitives;
+using namespace Windows::UI::Xaml::Data;
+using namespace Windows::UI::Xaml::Input;
+using namespace Windows::UI::Xaml::Media;
+using namespace Windows::UI::Xaml::Navigation;
+
+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
+
+MainPage::MainPage()
+{
+ InitializeComponent();
+
+ RandomAccessStreamReference^ streamRef = RandomAccessStreamReference::CreateFromUri(InputImageUri);
+
+ task (streamRef->OpenReadAsync()).
+ then([](task thisTask)
+ {
+ IRandomAccessStreamWithContentType^ fileStream = thisTask.get();
+ return BitmapDecoder::CreateAsync(fileStream);
+ }).
+ then([](task thisTask)
+ {
+ BitmapDecoder^ decoder = thisTask.get();
+ return decoder->GetFrameAsync(0);
+ }).
+ then([this](task thisTask)
+ {
+ BitmapFrame^ frame = thisTask.get();
+
+ // Save some information as fields
+ frameWidth = frame->PixelWidth;
+ frameHeight = frame->PixelHeight;
+
+ return frame->GetPixelDataAsync();
+ }).
+ then([this](task thisTask)
+ {
+ PixelDataProvider^ pixelProvider = thisTask.get();
+ Platform::Array^ srcPixels = pixelProvider->DetachPixelData();
+ Lena = cv::Mat(frameHeight, frameWidth, CV_8UC4);
+ memcpy(Lena.data, srcPixels->Data, 4*frameWidth*frameHeight);
+ UpdateImage(Lena);
+ });
+}
+
+///
+/// Invoked when this page is about to be displayed in a Frame.
+///
+/// Event data that describes how this page was reached. The Parameter
+/// property is typically used to configure the page.
+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(image.cols, image.rows);
+
+ // Get access to the pixels
+ IBuffer^ buffer = bitmap->PixelBuffer;
+ unsigned char* dstPixels;
+
+ // Obtain IBufferByteAccess
+ ComPtr pBufferByteAccess;
+ ComPtr pBuffer((IUnknown*)buffer);
+ pBuffer.As(&pBufferByteAccess);
+
+ // Get pointer to pixel bytes
+ pBufferByteAccess->Buffer(&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::cvtColor(image, intermediateMat, CV_RGBA2GRAY);
+ cv::cvtColor(intermediateMat, result, CV_GRAY2BGRA);
+ return result;
+}
+
+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 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);
+ }
+}
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/MainPage.xaml.h b/samples/winrt/OcvImageProcessing/OcvImageProcessing/MainPage.xaml.h
new file mode 100644
index 0000000000..79c1ac74c6
--- /dev/null
+++ b/samples/winrt/OcvImageProcessing/OcvImageProcessing/MainPage.xaml.h
@@ -0,0 +1,46 @@
+//
+// MainPage.xaml.h
+// Declaration of the MainPage class.
+//
+
+#pragma once
+
+#include "MainPage.g.h"
+#include
+#include
+#include
+
+namespace OcvImageProcessing
+{
+ ///
+ /// An empty page that can be used on its own or navigated to within a Frame.
+ ///
+ public ref class MainPage sealed
+ {
+ public:
+ MainPage();
+
+ 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;
+ };
+}
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/OcvImageProcessing.vcxproj b/samples/winrt/OcvImageProcessing/OcvImageProcessing/OcvImageProcessing.vcxproj
new file mode 100644
index 0000000000..1d862b71e1
--- /dev/null
+++ b/samples/winrt/OcvImageProcessing/OcvImageProcessing/OcvImageProcessing.vcxproj
@@ -0,0 +1,293 @@
+
+
+
+
+ Debug
+ ARM
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ ARM
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {a5555ea2-f9e8-4078-90f5-d428f2c0d6d1}
+ OcvImageProcessing
+ en-US
+ 11.0
+ true
+
+
+
+ Application
+ true
+ v110
+
+
+ Application
+ true
+ v110
+
+
+ Application
+ true
+ v110
+
+
+ Application
+ false
+ true
+ v110
+
+
+ Application
+ false
+ true
+ v110
+
+
+ Application
+ false
+ true
+ v110
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OcvImageProcessing_TemporaryKey.pfx
+ True
+
+
+
+ /bigobj %(AdditionalOptions)
+ 4453
+
+
+
+
+ /bigobj %(AdditionalOptions)
+ 4453
+
+
+
+
+ /bigobj %(AdditionalOptions)
+ 4453
+ $(OPENCV_DIR)\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)
+
+
+ $(OPENCV_DIR)\lib;%(AdditionalLibraryDirectories)
+ opencv_core247d.lib;opencv_imgproc247d.lib;opencv_features2d247d.lib;%(AdditionalDependencies)
+
+
+
+
+ /bigobj %(AdditionalOptions)
+ 4453
+ $(OPENCV_DIR)\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories)
+
+
+ $(OPENCV_DIR)\lib;%(AdditionalLibraryDirectories)
+ opencv_core247.lib;opencv_imgproc247.lib;opencv_features2d247.lib;%(AdditionalDependencies)
+
+
+
+
+ /bigobj %(AdditionalOptions)
+ 4453
+
+
+
+
+ /bigobj %(AdditionalOptions)
+ 4453
+
+
+
+
+
+ App.xaml
+
+
+ MainPage.xaml
+
+
+
+
+ Designer
+
+
+ Designer
+
+
+ Designer
+
+
+
+
+ Designer
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+ App.xaml
+
+
+ MainPage.xaml
+
+
+ Create
+ Create
+ Create
+ Create
+ Create
+ Create
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/OcvImageProcessing.vcxproj.filters b/samples/winrt/OcvImageProcessing/OcvImageProcessing/OcvImageProcessing.vcxproj.filters
new file mode 100644
index 0000000000..607c601c18
--- /dev/null
+++ b/samples/winrt/OcvImageProcessing/OcvImageProcessing/OcvImageProcessing.vcxproj.filters
@@ -0,0 +1,86 @@
+
+
+
+
+ a5555ea2-f9e8-4078-90f5-d428f2c0d6d1
+
+
+ 714bc2d8-fb65-4062-80fa-4d1822fe24e2
+
+
+ Common
+
+
+ Assets
+
+
+ Assets
+
+
+ Assets
+
+
+ Assets
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Assets
+
+
+
\ No newline at end of file
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/Package.appxmanifest b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Package.appxmanifest
new file mode 100644
index 0000000000..40f61cf768
--- /dev/null
+++ b/samples/winrt/OcvImageProcessing/OcvImageProcessing/Package.appxmanifest
@@ -0,0 +1,24 @@
+
+
+
+
+ OcvImageProcessing
+ asmorkalov
+ Assets\StoreLogo.png
+
+
+ 6.2.1
+ 6.2.1
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/pch.cpp b/samples/winrt/OcvImageProcessing/OcvImageProcessing/pch.cpp
new file mode 100644
index 0000000000..01484ff5aa
--- /dev/null
+++ b/samples/winrt/OcvImageProcessing/OcvImageProcessing/pch.cpp
@@ -0,0 +1,6 @@
+//
+// pch.cpp
+// Include the standard header and generate the precompiled header.
+//
+
+#include "pch.h"
diff --git a/samples/winrt/OcvImageProcessing/OcvImageProcessing/pch.h b/samples/winrt/OcvImageProcessing/OcvImageProcessing/pch.h
new file mode 100644
index 0000000000..fadf910de3
--- /dev/null
+++ b/samples/winrt/OcvImageProcessing/OcvImageProcessing/pch.h
@@ -0,0 +1,9 @@
+//
+// pch.h
+// Header for standard system include files.
+//
+
+#pragma once
+
+#include
+#include "App.xaml.h"