mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-22 22:01:08 +00:00
* learning model doesn't need lotusEnvironment and CPU shouldn't include dmlEP headers * User/xianz/win ml telemetry (#2410) * add option to enable winml telemetry * add option to enable winml telemetry * clean logs while developping * clean the log of GUID * compile onnxruntime_common with winml telemetry * use option for use_telemetry * rename option winml_use_telemetry to onnxruntime_use_telemetry * little change * Add opset and IR check when loading model (#2413) * Add opset and IR check. * Add test case for future opsets. https://github.com/microsoft/onnxruntime/issues/2371 * WinML CI (#2412) * Pass flags to build/test WinML in CI * Add initial CMake config for unit tests in WinML * Set winml_unittests standard to C++17 * Add WinML API tests and port them to googletest * Install WinML test collateral * Add LearningModelSessionAPITests ported to googletest * Fix WinML test files encoding * Add GPU tests * Add parameterized test, skip GPU tests * Enable precompiled header * Remove unused code and collateral * Remove brand images * Add dllload.cpp * Remove images not used in API tests * Add LICENSE.md to image collaterals * Add models with licenses * Remove FNS Candy tests * Add API test models * Add ModelInSubdirectory * Install collaterals post-build with copy_if_different, split common lib * fix warnings * Link to gtest_main * fix bad merge
67 lines
2.3 KiB
C++
67 lines
2.3 KiB
C++
#include "std.h"
|
|
#include "fileHelpers.h"
|
|
#include "winrt/Windows.Media.h"
|
|
#include "winrt/Windows.Storage.h"
|
|
|
|
EXTERN_C IMAGE_DOS_HEADER __ImageBase;
|
|
|
|
using namespace winrt;
|
|
using namespace winrt::Windows::AI::MachineLearning;
|
|
using namespace winrt::Windows::Graphics::Imaging;
|
|
using namespace winrt::Windows::Storage;
|
|
|
|
namespace FileHelpers
|
|
{
|
|
std::wstring GetModulePath()
|
|
{
|
|
std::wstring val;
|
|
wchar_t modulePath[MAX_PATH] = { 0 };
|
|
GetModuleFileNameW((HINSTANCE)&__ImageBase, modulePath, _countof(modulePath));
|
|
wchar_t drive[_MAX_DRIVE];
|
|
wchar_t dir[_MAX_DIR];
|
|
wchar_t filename[_MAX_FNAME];
|
|
wchar_t ext[_MAX_EXT];
|
|
_wsplitpath_s(modulePath, drive, _MAX_DRIVE, dir, _MAX_DIR, filename, _MAX_FNAME, ext, _MAX_EXT);
|
|
|
|
val = drive;
|
|
val += dir;
|
|
|
|
return val;
|
|
}
|
|
|
|
std::wstring GetWinMLPath()
|
|
{
|
|
// bool inboxDll = false;
|
|
// TODO Add command line parsing
|
|
// if (SUCCEEDED(WEX::TestExecution::RuntimeParameters::TryGetValue(L"inbox", inboxDll)) && inboxDll)
|
|
// {
|
|
// return L"";
|
|
// }
|
|
return GetModulePath();
|
|
}
|
|
|
|
|
|
winrt::Windows::Graphics::Imaging::SoftwareBitmap GetSoftwareBitmapFromFile(const std::wstring& filePath)
|
|
{
|
|
auto storageFile = StorageFile::GetFileFromPathAsync(filePath).get();
|
|
auto stream = storageFile.OpenAsync(FileAccessMode::Read).get();
|
|
auto decoder = BitmapDecoder::CreateAsync(stream).get();
|
|
IBitmapFrameWithSoftwareBitmap bitmapFrameWithSoftwareBitmap;
|
|
decoder.as(bitmapFrameWithSoftwareBitmap);
|
|
auto softwareBitmap = bitmapFrameWithSoftwareBitmap.GetSoftwareBitmapAsync(
|
|
BitmapPixelFormat::Bgra8,
|
|
BitmapAlphaMode::Ignore,
|
|
BitmapTransform::BitmapTransform(),
|
|
ExifOrientationMode::IgnoreExifOrientation,
|
|
ColorManagementMode::DoNotColorManage
|
|
).get();
|
|
return softwareBitmap;
|
|
}
|
|
|
|
ImageFeatureValue LoadImageFeatureValue(const std::wstring& imagePath)
|
|
{
|
|
auto softwareBitmap = FileHelpers::GetSoftwareBitmapFromFile(FileHelpers::GetModulePath() + imagePath);
|
|
auto videoFrame = winrt::Windows::Media::VideoFrame::CreateWithSoftwareBitmap(softwareBitmap);
|
|
return ImageFeatureValue::CreateFromVideoFrame(videoFrame);
|
|
}
|
|
}
|