-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
41 changed files
with
6,323 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,28 @@ | ||
# faceswap_cxx | ||
FaceSwap, Realtime using cpu, 3D, c++ | ||
3D FaceSwap, Using cpu realtime | ||
# realtime face swap using cpu with 3D model | ||
|
||
## Introduction | ||
- c++版使用cpu实时换脸,参考git: https://github.com/MarekKowalski/FaceSwap | ||
- 换脸逻辑 | ||
- 初始化: 根据上传的src图片初始化人脸3D模型参数 | ||
- 检测识别: 摄像头读取每帧图,检测dst的脸和landmark位置 | ||
- 人脸关键点滤波: oneEuroFilter算法 | ||
- 计算3D模型顶点位置: 使用GaussNewton算法计算相关参数(共20个参数:0-5为缩放,平移,旋转相关, 6-20为shape相关) | ||
- 人脸融合贴回视频帧 | ||
|
||
## Directory structure | ||
- 外部依赖项: ./dep/ | ||
- 3D 画图依赖相关: ./deps, ./Eigen, ./GL, ./GLFW, ./zlib | ||
- 人脸检测,landmarks检测依赖相关:./onnxruntime | ||
- ./lib 依赖lib文件: Debug和Release | ||
- ./dll 依赖dll文件: Debug和Release | ||
- ./include 项目头文件目录 | ||
- ./src 项目cpp文件目录 | ||
- ./resource 人脸3D模型,网络模型等需要的资源路径 | ||
|
||
## Note | ||
- 本项目使用vs2019编译能成功, 如果需要更换编译器版本,遇到错误可能需要重新编译./lib中的依赖相关文件 | ||
- debug 模式下运行时会出现"__acrt_first_block == header", 由opencv中的convexHull()函数引起。具体原因是opencv使用MD编译, 本项目使用MT编译 | ||
- debug模式下, 使用 #include "vld.h" 对本项目进行内存泄漏检测。如果检测结果没有具体定位位置:需要设置Linker 下 Generate Debug Info 选为(/DEBUG:FULL)。\ | ||
注意一定要程序运行完退出时,才会在vs Output中显示内存检测信息 |
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
|
||
Microsoft Visual Studio Solution File, Format Version 12.00 | ||
# Visual Studio 15 | ||
VisualStudioVersion = 15.0.28307.757 | ||
MinimumVisualStudioVersion = 10.0.40219.1 | ||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "faceswap", "faceswap.vcxproj", "{9A48AB52-27BF-405F-B327-6252E9D7F536}" | ||
EndProject | ||
Global | ||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
Debug|x64 = Debug|x64 | ||
Debug|x86 = Debug|x86 | ||
Release|x64 = Release|x64 | ||
Release|x86 = Release|x86 | ||
EndGlobalSection | ||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
{9A48AB52-27BF-405F-B327-6252E9D7F536}.Debug|x64.ActiveCfg = Debug|x64 | ||
{9A48AB52-27BF-405F-B327-6252E9D7F536}.Debug|x64.Build.0 = Debug|x64 | ||
{9A48AB52-27BF-405F-B327-6252E9D7F536}.Debug|x86.ActiveCfg = Debug|Win32 | ||
{9A48AB52-27BF-405F-B327-6252E9D7F536}.Debug|x86.Build.0 = Debug|Win32 | ||
{9A48AB52-27BF-405F-B327-6252E9D7F536}.Release|x64.ActiveCfg = Release|x64 | ||
{9A48AB52-27BF-405F-B327-6252E9D7F536}.Release|x64.Build.0 = Release|x64 | ||
{9A48AB52-27BF-405F-B327-6252E9D7F536}.Release|x86.ActiveCfg = Release|Win32 | ||
{9A48AB52-27BF-405F-B327-6252E9D7F536}.Release|x86.Build.0 = Release|Win32 | ||
EndGlobalSection | ||
GlobalSection(SolutionProperties) = preSolution | ||
HideSolutionNode = FALSE | ||
EndGlobalSection | ||
GlobalSection(ExtensibilityGlobals) = postSolution | ||
SolutionGuid = {E6472A33-0C43-480B-B423-4E865D1A2706} | ||
EndGlobalSection | ||
EndGlobal |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,170 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
<ItemGroup Label="ProjectConfigurations"> | ||
<ProjectConfiguration Include="Debug|Win32"> | ||
<Configuration>Debug</Configuration> | ||
<Platform>Win32</Platform> | ||
</ProjectConfiguration> | ||
<ProjectConfiguration Include="Release|Win32"> | ||
<Configuration>Release</Configuration> | ||
<Platform>Win32</Platform> | ||
</ProjectConfiguration> | ||
<ProjectConfiguration Include="Debug|x64"> | ||
<Configuration>Debug</Configuration> | ||
<Platform>x64</Platform> | ||
</ProjectConfiguration> | ||
<ProjectConfiguration Include="Release|x64"> | ||
<Configuration>Release</Configuration> | ||
<Platform>x64</Platform> | ||
</ProjectConfiguration> | ||
</ItemGroup> | ||
<PropertyGroup Label="Globals"> | ||
<VCProjectVersion>15.0</VCProjectVersion> | ||
<ProjectGuid>{9A48AB52-27BF-405F-B327-6252E9D7F536}</ProjectGuid> | ||
<RootNamespace>faceswap</RootNamespace> | ||
<WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion> | ||
</PropertyGroup> | ||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> | ||
<ConfigurationType>Application</ConfigurationType> | ||
<UseDebugLibraries>true</UseDebugLibraries> | ||
<PlatformToolset>v142</PlatformToolset> | ||
<CharacterSet>MultiByte</CharacterSet> | ||
</PropertyGroup> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||
<ConfigurationType>Application</ConfigurationType> | ||
<UseDebugLibraries>false</UseDebugLibraries> | ||
<PlatformToolset>v142</PlatformToolset> | ||
<WholeProgramOptimization>true</WholeProgramOptimization> | ||
<CharacterSet>MultiByte</CharacterSet> | ||
</PropertyGroup> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||
<ConfigurationType>Application</ConfigurationType> | ||
<UseDebugLibraries>true</UseDebugLibraries> | ||
<PlatformToolset>v142</PlatformToolset> | ||
<CharacterSet>MultiByte</CharacterSet> | ||
</PropertyGroup> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||
<ConfigurationType>Application</ConfigurationType> | ||
<UseDebugLibraries>false</UseDebugLibraries> | ||
<PlatformToolset>v142</PlatformToolset> | ||
<WholeProgramOptimization>true</WholeProgramOptimization> | ||
<CharacterSet>MultiByte</CharacterSet> | ||
<UseOfMfc>false</UseOfMfc> | ||
</PropertyGroup> | ||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||
<ImportGroup Label="ExtensionSettings"> | ||
</ImportGroup> | ||
<ImportGroup Label="Shared"> | ||
</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> | ||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||
<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|x64'"> | ||
<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|x64'"> | ||
<IncludePath>.\dep\onnxruntime\include;.\include;.\dep\zlib;.\dep\GLFW;.\dep\GL;.\dep\;.\dep\deps\;$(IncludePath)</IncludePath> | ||
<LibraryPath>.\lib\Debug;$(LibraryPath)</LibraryPath> | ||
</PropertyGroup> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | ||
<IncludePath>.\dep\;.\dep\deps\;.\dep\zlib;.\dep\onnxruntime\include;.\include;.\dep\GL;.\dep\GLFW;$(IncludePath)</IncludePath> | ||
<LibraryPath>.\lib\Release\;$(LibraryPath)</LibraryPath> | ||
</PropertyGroup> | ||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||
<ClCompile> | ||
<WarningLevel>Level3</WarningLevel> | ||
<Optimization>Disabled</Optimization> | ||
<SDLCheck>true</SDLCheck> | ||
<ConformanceMode>true</ConformanceMode> | ||
</ClCompile> | ||
</ItemDefinitionGroup> | ||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||
<ClCompile> | ||
<WarningLevel>Level3</WarningLevel> | ||
<Optimization>Disabled</Optimization> | ||
<SDLCheck>true</SDLCheck> | ||
<ConformanceMode>true</ConformanceMode> | ||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> | ||
<WholeProgramOptimization>false</WholeProgramOptimization> | ||
<LanguageStandard>stdcpp14</LanguageStandard> | ||
</ClCompile> | ||
<Link> | ||
<AdditionalDependencies>onnxruntime.lib;opencv_world340d.lib;zlibd.lib;freeglutd.lib;ade.lib;glfw3.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||
<GenerateDebugInformation>DebugFull</GenerateDebugInformation> | ||
</Link> | ||
</ItemDefinitionGroup> | ||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||
<ClCompile> | ||
<WarningLevel>Level3</WarningLevel> | ||
<Optimization>MaxSpeed</Optimization> | ||
<FunctionLevelLinking>true</FunctionLevelLinking> | ||
<IntrinsicFunctions>true</IntrinsicFunctions> | ||
<SDLCheck>true</SDLCheck> | ||
<ConformanceMode>true</ConformanceMode> | ||
</ClCompile> | ||
<Link> | ||
<EnableCOMDATFolding>true</EnableCOMDATFolding> | ||
<OptimizeReferences>true</OptimizeReferences> | ||
</Link> | ||
</ItemDefinitionGroup> | ||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | ||
<ClCompile> | ||
<WarningLevel>Level3</WarningLevel> | ||
<Optimization>MaxSpeed</Optimization> | ||
<FunctionLevelLinking>true</FunctionLevelLinking> | ||
<IntrinsicFunctions>true</IntrinsicFunctions> | ||
<SDLCheck>true</SDLCheck> | ||
<ConformanceMode>true</ConformanceMode> | ||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> | ||
<WholeProgramOptimization>true</WholeProgramOptimization> | ||
<LanguageStandard> | ||
</LanguageStandard> | ||
</ClCompile> | ||
<Link> | ||
<EnableCOMDATFolding>true</EnableCOMDATFolding> | ||
<OptimizeReferences>true</OptimizeReferences> | ||
<AdditionalDependencies>onnxruntime.lib;opencv_world340.lib;zlibstatic.lib;freeglut.lib;ade.lib;glfw3.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||
<LinkTimeCodeGeneration>UseFastLinkTimeCodeGeneration</LinkTimeCodeGeneration> | ||
</Link> | ||
</ItemDefinitionGroup> | ||
<ItemGroup> | ||
<ClInclude Include="include\dllmain.h" /> | ||
<ClInclude Include="include\filter.h" /> | ||
<ClInclude Include="include\NonLinearLeastSquares.h" /> | ||
<ClInclude Include="include\cnpy.h" /> | ||
<ClInclude Include="include\FaceDetector.h" /> | ||
<ClInclude Include="include\FaceRender.h" /> | ||
<ClInclude Include="include\FaceSwap.h" /> | ||
<ClInclude Include="include\LandmarksDetector.h" /> | ||
<ClInclude Include="include\OrthographicProjectionBlendshapes.h" /> | ||
<ClInclude Include="include\PQ.Webcam.h" /> | ||
<ClInclude Include="include\util.h" /> | ||
<ClInclude Include="include\VideoDecode.h" /> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ClCompile Include="src\dllmain.cpp" /> | ||
<ClCompile Include="src\FaceRender.cpp" /> | ||
<ClCompile Include="src\filter.cpp" /> | ||
<ClCompile Include="src\glad_gl.c" /> | ||
<ClCompile Include="src\NonLinearLeastSquares.cpp" /> | ||
<ClCompile Include="src\cnpy.cpp" /> | ||
<ClCompile Include="src\FaceDetector.cpp" /> | ||
<ClCompile Include="src\LandmarksDetector.cpp" /> | ||
<ClCompile Include="src\main.cpp" /> | ||
<ClCompile Include="src\OrthographicProjectionBlendshapes.cpp" /> | ||
<ClCompile Include="src\util.cpp" /> | ||
</ItemGroup> | ||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||
<ImportGroup Label="ExtensionTargets"> | ||
</ImportGroup> | ||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
<?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;ipp;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> | ||
<ClInclude Include="include\cnpy.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="include\FaceDetector.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="include\LandmarksDetector.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="include\FaceRender.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="include\FaceSwap.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="include\OrthographicProjectionBlendshapes.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="include\NonLinearLeastSquares.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="include\util.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="include\filter.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="include\PQ.Webcam.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="include\dllmain.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="include\VideoDecode.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ClCompile Include="src\main.cpp"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="src\cnpy.cpp"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="src\FaceDetector.cpp"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="src\LandmarksDetector.cpp"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="src\OrthographicProjectionBlendshapes.cpp"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="src\NonLinearLeastSquares.cpp"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="src\FaceRender.cpp"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="src\util.cpp"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="src\filter.cpp"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="src\dllmain.cpp"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="src\glad_gl.c"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
</ItemGroup> | ||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> | ||
<LocalDebuggerEnvironment>PATH=.\dll\Debug</LocalDebuggerEnvironment> | ||
</PropertyGroup> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | ||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> | ||
<LocalDebuggerAttach>false</LocalDebuggerAttach> | ||
</PropertyGroup> | ||
<PropertyGroup> | ||
<ShowAllFiles>false</ShowAllFiles> | ||
</PropertyGroup> | ||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
#pragma once | ||
#include <onnxruntime_c_api.h> | ||
#include <opencv2/core/core.hpp> | ||
#include <opencv2/highgui/highgui.hpp> | ||
#include <opencv2/imgproc/imgproc.hpp> | ||
|
||
#include <vector> | ||
|
||
using namespace std; | ||
using namespace cv; | ||
|
||
typedef struct { | ||
float box[4]; | ||
float prob; | ||
} detection; | ||
|
||
class FaceDetector | ||
{ | ||
private: | ||
int img_width = 1920; | ||
int img_height = 1080; | ||
int net_w = 320; | ||
int net_h = 240; | ||
int net_c; | ||
float *input_data; | ||
float prob_threshold = 0.85; | ||
size_t boxes_size; // cls shape: [1,boxes_size, 2], boxes shape: [1, boxes_size, 4] | ||
size_t input_size; | ||
vector<int64_t> input_node_dims; | ||
vector<const char*> input_node_names; | ||
vector<const char*> output_node_names; | ||
OrtSession* session; | ||
detection *dets; | ||
const OrtApi* g_ort; | ||
|
||
public: | ||
~FaceDetector(); | ||
bool CheckStatus(OrtStatus* status); | ||
FaceDetector() {}; | ||
bool init(const OrtApi* g_ort_only, OrtEnv* env, const wchar_t *model_path); | ||
vector<vector<float>> predict(float *image); | ||
float* get_input(Mat& image); | ||
}; |
Oops, something went wrong.