Added iOS region of interest helpers
This commit is contained in:
parent
4137dbcbf5
commit
4c02980b3f
|
@ -16,6 +16,7 @@ package(default_visibility = ["//mediapipe/tasks:internal"])
|
||||||
|
|
||||||
licenses(["notice"])
|
licenses(["notice"])
|
||||||
|
|
||||||
|
|
||||||
objc_library(
|
objc_library(
|
||||||
name = "MPPCategoryHelpers",
|
name = "MPPCategoryHelpers",
|
||||||
srcs = ["sources/MPPCategory+Helpers.mm"],
|
srcs = ["sources/MPPCategory+Helpers.mm"],
|
||||||
|
@ -84,3 +85,15 @@ objc_library(
|
||||||
"//mediapipe/tasks/ios/components/containers:MPPLandmark",
|
"//mediapipe/tasks/ios/components/containers:MPPLandmark",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
objc_library(
|
||||||
|
name = "MPPRegionOfInterestHelpers",
|
||||||
|
srcs = ["sources/MPPRegionOfInterest+Helpers.mm"],
|
||||||
|
hdrs = ["sources/MPPRegionOfInterest+Helpers.h"],
|
||||||
|
deps = [
|
||||||
|
"//mediapipe/util:render_data_cc_proto",
|
||||||
|
"//mediapipe/tasks/ios/common:MPPCommon",
|
||||||
|
"//mediapipe/tasks/ios/common/utils:MPPCommonUtils",
|
||||||
|
"//mediapipe/tasks/ios/components/containers:MPPRegionOfInterest",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
// Copyright 2023 The MediaPipe Authors.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "mediapipe/util/render_data.pb.h"
|
||||||
|
|
||||||
|
#import "mediapipe/tasks/ios/components/containers/sources/MPPRegionOfInterest.h"
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface MPPRegionOfInterest (Helpers)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a `RenderData` from the region of interest.
|
||||||
|
*
|
||||||
|
* @param error Pointer to the memory location where errors if any should be saved. If @c NULL, no
|
||||||
|
* error will be saved.
|
||||||
|
*
|
||||||
|
* @return A `RenderData1 proto created from the region of interest.
|
||||||
|
*/
|
||||||
|
- (std::optional<mediapipe::RenderData>)getRenderDataWithError:(NSError **)error;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
|
@ -0,0 +1,56 @@
|
||||||
|
// Copyright 2023 The MediaPipe Authors.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#import "mediapipe/tasks/ios/common/sources/MPPCommon.h"
|
||||||
|
#import "mediapipe/tasks/ios/common/utils/sources/MPPCommonUtils.h"
|
||||||
|
#import "mediapipe/tasks/ios/components/containers/utils/sources/MPPRegionOfInterest+Helpers.h"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
using RenderData = ::mediapipe::RenderData;
|
||||||
|
using RenderAnnotation = ::mediapipe::RenderAnnotation;
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
@implementation MPPRegionOfInterest (Helpers)
|
||||||
|
|
||||||
|
- (std::optional<mediapipe::RenderData>)getRenderDataWithError:(NSError**)error {
|
||||||
|
RenderData result;
|
||||||
|
if (self.keypoint) {
|
||||||
|
auto* annotation = result.add_render_annotations();
|
||||||
|
annotation->mutable_color()->set_r(255);
|
||||||
|
auto* point = annotation->mutable_point();
|
||||||
|
point->set_normalized(true);
|
||||||
|
point->set_x(self.keypoint.location.x);
|
||||||
|
point->set_y(self.keypoint.location.y);
|
||||||
|
return result;
|
||||||
|
} else if (self.scribbles) {
|
||||||
|
auto* annotation = result.add_render_annotations();
|
||||||
|
annotation->mutable_color()->set_r(255);
|
||||||
|
for (MPPNormalizedKeypoint* keypoint in self.scribbles) {
|
||||||
|
auto* point = annotation->mutable_scribble()->add_point();
|
||||||
|
point->set_normalized(true);
|
||||||
|
point->set_x(self.keypoint.location.x);
|
||||||
|
point->set_y(self.keypoint.location.y);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
[MPPCommonUtils createCustomError:error
|
||||||
|
withCode:MPPTasksErrorCodeInvalidArgumentError
|
||||||
|
description:@"RegionOfInterest does not include a valid user interaction."];
|
||||||
|
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
Loading…
Reference in New Issue
Block a user