接入FaceMesh 美颜渲染 70%
This commit is contained in:
parent
3437d9fd73
commit
6bd85ac487
|
@ -1,4 +1,8 @@
|
|||
#include "face_mesh_beauty_render.h"
|
||||
#include "mediapipe/render/core/CVFramebuffer.hpp"
|
||||
#if defined(__APPLE__)
|
||||
#import <Foundation/Foundation.h>
|
||||
#endif
|
||||
|
||||
namespace Opipe
|
||||
{
|
||||
|
@ -10,10 +14,38 @@ namespace Opipe
|
|||
|
||||
_outputFilter = OlaShareTextureFilter::create(context);
|
||||
_olaBeautyFilter->addTarget(_outputFilter);
|
||||
|
||||
#if defined(__APPLE__)
|
||||
|
||||
NSBundle *bundle = [NSBundle bundleForClass:NSClassFromString(@"OlaFaceUnity")];
|
||||
|
||||
NSURL *lutURL = [bundle URLForResource:@"whiten" withExtension:@"png"];
|
||||
_lutImage = SourceImage::create(context, lutURL);
|
||||
|
||||
#endif
|
||||
|
||||
_olaBeautyFilter->setLUTImage(_lutImage);
|
||||
}
|
||||
|
||||
FaceMeshBeautyRender::~FaceMeshBeautyRender()
|
||||
{
|
||||
if (_lutImage)
|
||||
{
|
||||
_lutImage->release();
|
||||
_lutImage = nullptr;
|
||||
}
|
||||
_olaBeautyFilter->removeAllTargets();
|
||||
if (_olaBeautyFilter)
|
||||
{
|
||||
_olaBeautyFilter->release();
|
||||
_olaBeautyFilter = nullptr;
|
||||
}
|
||||
|
||||
if (_outputFilter)
|
||||
{
|
||||
_outputFilter->release();
|
||||
_outputFilter = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void FaceMeshBeautyRender::suspend()
|
||||
|
@ -29,7 +61,7 @@ namespace Opipe
|
|||
TextureInfo FaceMeshBeautyRender::renderTexture(TextureInfo inputTexture)
|
||||
{
|
||||
TextureInfo outputTexture;
|
||||
|
||||
outputTexture.frameTime = inputTexture.frameTime;
|
||||
if (!_inputFramebuffer)
|
||||
{
|
||||
_inputFramebuffer = new Framebuffer(_context, inputTexture.width, inputTexture.height,
|
||||
|
@ -46,6 +78,27 @@ namespace Opipe
|
|||
inputTexture.textureId);
|
||||
}
|
||||
|
||||
_olaBeautyFilter->setInputFramebuffer(_inputFramebuffer);
|
||||
_olaBeautyFilter->update(inputTexture.frameTime);
|
||||
|
||||
auto *outputFramebuffer = _outputFilter->getFramebuffer();
|
||||
if (outputFramebuffer) {
|
||||
outputTexture.width = outputFramebuffer->getWidth();
|
||||
outputTexture.height = outputFramebuffer->getHeight();
|
||||
outputTexture.textureId = outputFramebuffer->getTexture();
|
||||
#if defined(__APPLE__)
|
||||
auto *cvFramebuffer = dynamic_cast<CVFramebuffer *>(outputFramebuffer);
|
||||
IOSurfaceRef surface = cvFramebuffer->renderIOSurface;
|
||||
outputTexture.ioSurfaceId = IOSurfaceGetID(surface);
|
||||
#endif
|
||||
} else {
|
||||
outputTexture.width = inputTexture.width;
|
||||
outputTexture.height = inputTexture.height;
|
||||
outputTexture.textureId = inputTexture.textureId;
|
||||
outputTexture.ioSurfaceId = inputTexture.ioSurfaceId;
|
||||
}
|
||||
|
||||
|
||||
return outputTexture;
|
||||
}
|
||||
|
||||
|
@ -62,11 +115,19 @@ namespace Opipe
|
|||
void FaceMeshBeautyRender::setSmoothing(float smoothing)
|
||||
{
|
||||
_smoothing = smoothing;
|
||||
if (_olaBeautyFilter)
|
||||
{
|
||||
_olaBeautyFilter->setSmoothing(smoothing);
|
||||
}
|
||||
}
|
||||
|
||||
void FaceMeshBeautyRender::setWhitening(float whitening)
|
||||
{
|
||||
_whitening = whitening;
|
||||
if (_olaBeautyFilter)
|
||||
{
|
||||
_olaBeautyFilter->setWhitening(whitening);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -3,6 +3,7 @@
|
|||
#include "face_mesh_common.h"
|
||||
#include "mediapipe/render/module/beauty/filters/OlaBeautyFilter.hpp"
|
||||
#include "mediapipe/render/core/OlaShareTextureFilter.hpp"
|
||||
#include "mediapipe/render/core/SourceImage.hpp"
|
||||
|
||||
namespace Opipe {
|
||||
class FaceMeshBeautyRender {
|
||||
|
@ -39,6 +40,7 @@ namespace Opipe {
|
|||
float _whitening = 0.0;
|
||||
bool _isRendering = false;
|
||||
Context *_context = nullptr;
|
||||
SourceImage *_lutImage = nullptr;
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -118,6 +118,16 @@ namespace Opipe {
|
|||
FilterGroup::update(frameTime);
|
||||
}
|
||||
|
||||
void OlaBeautyFilter::setLUTImage(SourceImage *lutImage) {
|
||||
_lutImage = lutImage;
|
||||
if (_lutFilter) {
|
||||
auto *framebuffer = _lutFilter->getFramebuffer();
|
||||
framebuffer->resetRetainCount();
|
||||
_lutImage->retain();
|
||||
_lutImage->addTarget(_lutFilter, 1, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void OlaBeautyFilter::setInputFramebuffer(Framebuffer *framebuffer,
|
||||
RotationMode rotationMode,
|
||||
|
|
|
@ -98,7 +98,7 @@ namespace Opipe {
|
|||
_blurFilter = GaussianBlurFilter::create(context);
|
||||
addFilter(_blurFilter);
|
||||
|
||||
_unsharpMaskFilter = UnSharpMaskFilter::create(context);
|
||||
_unsharpMaskFilter = UnSharpFilter::create(context);
|
||||
addFilter(_unsharpMaskFilter);
|
||||
|
||||
_blurFilter->addTarget(_unsharpMaskFilter,1);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -249,6 +249,7 @@ AVCaptureAudioDataOutputSampleBufferDelegate> {
|
|||
{
|
||||
|
||||
[[OlaFaceUnity sharedInstance] processVideoFrame:onScreenTexture.renderTarget timeStamp:frameTime];
|
||||
|
||||
return onScreenTexture.surfaceID;
|
||||
|
||||
}
|
||||
|
|
|
@ -3,13 +3,13 @@ load("@build_bazel_rules_apple//apple:ios.bzl", "ios_framework", "ios_static_fra
|
|||
# 用上面这条指令build
|
||||
|
||||
|
||||
ios_static_framework(
|
||||
ios_framework(
|
||||
name = "OlaFaceUnityFramework",
|
||||
hdrs = [
|
||||
"OlaFaceUnity.h",
|
||||
],
|
||||
# infoplists = ["Info.plist"],
|
||||
# bundle_id = "com.ola.olarender.develop",
|
||||
infoplists = ["Info.plist"],
|
||||
bundle_id = "com.ola.olarender.develop",
|
||||
families = ["iphone", "ipad"],
|
||||
minimum_os_version = "11.0",
|
||||
deps = [
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -1,29 +1,29 @@
|
|||
|
||||
<Scheme version="1.3" LastUpgradeVersion="1000">
|
||||
<Scheme LastUpgradeVersion="1000" version="1.3">
|
||||
<BuildAction parallelizeBuildables="YES" buildImplicitDependencies="YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry buildForTesting="YES" buildForRunning="YES" buildForProfiling="YES" buildForArchiving="YES" buildForAnalyzing="YES">
|
||||
<BuildableReference BuildableName="OlaFaceUnityFramework.framework" BuildableIdentifier="primary" BlueprintIdentifier="F2FE34CE0C5C7AFE00000000" BlueprintName="OlaFaceUnityFramework" ReferencedContainer="container:FaceUnityFramework.xcodeproj"></BuildableReference>
|
||||
<BuildActionEntry buildForArchiving="YES" buildForAnalyzing="YES" buildForRunning="YES" buildForProfiling="YES" buildForTesting="YES">
|
||||
<BuildableReference BuildableIdentifier="primary" BlueprintIdentifier="F2FE34CE0C5C7AFE00000000" ReferencedContainer="container:FaceUnityFramework.xcodeproj" BuildableName="OlaFaceUnityFramework.framework" BlueprintName="OlaFaceUnityFramework"></BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction buildConfiguration="__TulsiTestRunner_Debug" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv="YES" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" customLLDBInitFile="$(PROJECT_FILE_PATH)/.tulsi/Utils/lldbinit">
|
||||
<TestAction shouldUseLaunchSchemeArgsEnv="YES" customLLDBInitFile="$(PROJECT_FILE_PATH)/.tulsi/Utils/lldbinit" buildConfiguration="__TulsiTestRunner_Debug" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB">
|
||||
<Testables></Testables>
|
||||
<BuildableProductRunnable runnableDebuggingMode="0">
|
||||
<BuildableReference BlueprintIdentifier="F2FE34CE0C5C7AFE00000000" BlueprintName="OlaFaceUnityFramework" BuildableName="OlaFaceUnityFramework.framework" ReferencedContainer="container:FaceUnityFramework.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
|
||||
<BuildableReference BlueprintName="OlaFaceUnityFramework" BuildableName="OlaFaceUnityFramework.framework" ReferencedContainer="container:FaceUnityFramework.xcodeproj" BuildableIdentifier="primary" BlueprintIdentifier="F2FE34CE0C5C7AFE00000000"></BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</TestAction>
|
||||
<LaunchAction launchStyle="0" buildConfiguration="Debug" allowLocationSimulation="YES" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" useCustomWorkingDirectory="NO" ignoresPersistentStateOnLaunch="NO" debugDocumentVersioning="YES" debugServiceExtension="internal" customLLDBInitFile="$(PROJECT_FILE_PATH)/.tulsi/Utils/lldbinit">
|
||||
<LaunchAction debugDocumentVersioning="YES" launchStyle="0" ignoresPersistentStateOnLaunch="NO" allowLocationSimulation="YES" debugServiceExtension="internal" useCustomWorkingDirectory="NO" customLLDBInitFile="$(PROJECT_FILE_PATH)/.tulsi/Utils/lldbinit" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" buildConfiguration="Debug" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB">
|
||||
<EnvironmentVariables></EnvironmentVariables>
|
||||
<BuildableProductRunnable runnableDebuggingMode="0">
|
||||
<BuildableReference BuildableName="OlaFaceUnityFramework.framework" BuildableIdentifier="primary" ReferencedContainer="container:FaceUnityFramework.xcodeproj" BlueprintIdentifier="F2FE34CE0C5C7AFE00000000" BlueprintName="OlaFaceUnityFramework"></BuildableReference>
|
||||
<BuildableReference BuildableName="OlaFaceUnityFramework.framework" BlueprintName="OlaFaceUnityFramework" ReferencedContainer="container:FaceUnityFramework.xcodeproj" BlueprintIdentifier="F2FE34CE0C5C7AFE00000000" BuildableIdentifier="primary"></BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
<ProfileAction useCustomWorkingDirectory="NO" buildConfiguration="__TulsiTestRunner_Release" shouldUseLaunchSchemeArgsEnv="YES" debugDocumentVersioning="YES">
|
||||
<ProfileAction useCustomWorkingDirectory="NO" debugDocumentVersioning="YES" shouldUseLaunchSchemeArgsEnv="YES" buildConfiguration="__TulsiTestRunner_Release">
|
||||
<BuildableProductRunnable runnableDebuggingMode="0">
|
||||
<BuildableReference BlueprintName="OlaFaceUnityFramework" BuildableIdentifier="primary" BuildableName="OlaFaceUnityFramework.framework" BlueprintIdentifier="F2FE34CE0C5C7AFE00000000" ReferencedContainer="container:FaceUnityFramework.xcodeproj"></BuildableReference>
|
||||
<BuildableReference BuildableName="OlaFaceUnityFramework.framework" BuildableIdentifier="primary" BlueprintName="OlaFaceUnityFramework" BlueprintIdentifier="F2FE34CE0C5C7AFE00000000" ReferencedContainer="container:FaceUnityFramework.xcodeproj"></BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction buildConfiguration="Debug"></AnalyzeAction>
|
||||
<ArchiveAction buildConfiguration="Release" revealArchiveInOrganizer="YES"></ArchiveAction>
|
||||
<ArchiveAction revealArchiveInOrganizer="YES" buildConfiguration="Release"></ArchiveAction>
|
||||
</Scheme>
|
File diff suppressed because it is too large
Load Diff
|
@ -2,26 +2,26 @@
|
|||
<Scheme version="1.3" LastUpgradeVersion="1000">
|
||||
<BuildAction parallelizeBuildables="YES" buildImplicitDependencies="YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry buildForProfiling="YES" buildForRunning="YES" buildForTesting="YES" buildForAnalyzing="YES" buildForArchiving="YES">
|
||||
<BuildableReference BlueprintIdentifier="F2FE34CED4660C9200000000" BlueprintName="mediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary" ReferencedContainer="container:FaceUnityFramework.xcodeproj" BuildableName="libmediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary.a" BuildableIdentifier="primary"></BuildableReference>
|
||||
<BuildActionEntry buildForProfiling="YES" buildForTesting="YES" buildForRunning="YES" buildForAnalyzing="YES" buildForArchiving="YES">
|
||||
<BuildableReference BuildableIdentifier="primary" BlueprintName="mediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary" ReferencedContainer="container:FaceUnityFramework.xcodeproj" BlueprintIdentifier="F2FE34CED4660C9200000000" BuildableName="libmediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary.a"></BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction buildConfiguration="__TulsiTestRunner_Debug" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" customLLDBInitFile="$(PROJECT_FILE_PATH)/.tulsi/Utils/lldbinit" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv="YES">
|
||||
<TestAction selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" customLLDBInitFile="$(PROJECT_FILE_PATH)/.tulsi/Utils/lldbinit" buildConfiguration="__TulsiTestRunner_Debug" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" shouldUseLaunchSchemeArgsEnv="YES">
|
||||
<Testables></Testables>
|
||||
<BuildableProductRunnable runnableDebuggingMode="0">
|
||||
<BuildableReference BuildableIdentifier="primary" ReferencedContainer="container:FaceUnityFramework.xcodeproj" BlueprintName="mediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary" BlueprintIdentifier="F2FE34CED4660C9200000000" BuildableName="libmediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary.a"></BuildableReference>
|
||||
<BuildableReference BuildableName="libmediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary.a" ReferencedContainer="container:FaceUnityFramework.xcodeproj" BuildableIdentifier="primary" BlueprintIdentifier="F2FE34CED4660C9200000000" BlueprintName="mediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary"></BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</TestAction>
|
||||
<LaunchAction ignoresPersistentStateOnLaunch="NO" debugDocumentVersioning="YES" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" allowLocationSimulation="YES" launchStyle="0" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" useCustomWorkingDirectory="NO" debugServiceExtension="internal" buildConfiguration="Debug" customLLDBInitFile="$(PROJECT_FILE_PATH)/.tulsi/Utils/lldbinit">
|
||||
<LaunchAction debugDocumentVersioning="YES" allowLocationSimulation="YES" debugServiceExtension="internal" useCustomWorkingDirectory="NO" launchStyle="0" buildConfiguration="Debug" customLLDBInitFile="$(PROJECT_FILE_PATH)/.tulsi/Utils/lldbinit" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" ignoresPersistentStateOnLaunch="NO">
|
||||
<EnvironmentVariables></EnvironmentVariables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference BuildableIdentifier="primary" BlueprintIdentifier="F2FE34CED4660C9200000000" BuildableName="libmediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary.a" BlueprintName="mediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary" ReferencedContainer="container:FaceUnityFramework.xcodeproj"></BuildableReference>
|
||||
<BuildableReference BlueprintIdentifier="F2FE34CED4660C9200000000" BuildableName="libmediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary.a" BlueprintName="mediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary" BuildableIdentifier="primary" ReferencedContainer="container:FaceUnityFramework.xcodeproj"></BuildableReference>
|
||||
</MacroExpansion>
|
||||
</LaunchAction>
|
||||
<ProfileAction debugDocumentVersioning="YES" buildConfiguration="__TulsiTestRunner_Release" useCustomWorkingDirectory="NO" shouldUseLaunchSchemeArgsEnv="YES">
|
||||
<ProfileAction shouldUseLaunchSchemeArgsEnv="YES" buildConfiguration="__TulsiTestRunner_Release" useCustomWorkingDirectory="NO" debugDocumentVersioning="YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference BlueprintName="mediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary" ReferencedContainer="container:FaceUnityFramework.xcodeproj" BuildableIdentifier="primary" BlueprintIdentifier="F2FE34CED4660C9200000000" BuildableName="libmediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary.a"></BuildableReference>
|
||||
<BuildableReference BuildableName="libmediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary.a" BlueprintName="mediapipe-render-module-beauty-ios-framework-OlaFaceUnityLibrary" BuildableIdentifier="primary" BlueprintIdentifier="F2FE34CED4660C9200000000" ReferencedContainer="container:FaceUnityFramework.xcodeproj"></BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction buildConfiguration="Debug"></AnalyzeAction>
|
||||
|
|
Loading…
Reference in New Issue
Block a user