Added MPPObjectDetectionResultHelpers
This commit is contained in:
		
							parent
							
								
									79c8cfb730
								
							
						
					
					
						commit
						b01b3b84c4
					
				|  | @ -30,3 +30,13 @@ objc_library( | |||
|     ], | ||||
| ) | ||||
| 
 | ||||
| objc_library( | ||||
|     name = "MPPObjectDetectionResultHelpers", | ||||
|     srcs = ["sources/MPPObjectDetectionResult+Helpers.mm"], | ||||
|     hdrs = ["sources/MPPObjectDetectionResult+Helpers.h"], | ||||
|     deps = [ | ||||
|         "//mediapipe/framework:packet", | ||||
|         "//mediapipe/tasks/ios/components/containers/utils:MPPDetectionHelpers", | ||||
|         "//mediapipe/tasks/ios/vision/object_detector:MPPObjectDetectionResult", | ||||
|     ], | ||||
| ) | ||||
|  |  | |||
|  | @ -0,0 +1,38 @@ | |||
| // 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/vision/object_detector/sources/MPPObjectDetectionResult.h" | ||||
| 
 | ||||
| #include "mediapipe/framework/packet.h" | ||||
| 
 | ||||
| NS_ASSUME_NONNULL_BEGIN | ||||
| 
 | ||||
| static const int kMicroSecondsPerMilliSecond = 1000; | ||||
| 
 | ||||
| @interface MPPObjectDetectionResult (Helpers) | ||||
| 
 | ||||
| /**
 | ||||
|  * Creates an `MPPObjectDetectionResult` from a MediaPipe packet containing a | ||||
|  * `std::vector<DetectionProto>`. | ||||
|  * | ||||
|  * @param packet a MediaPipe packet wrapping a `std::vector<DetectionProto>`. | ||||
|  * | ||||
|  * @return  An `MPPObjectDetectionResult` object that contains a list of detections. | ||||
|  */ | ||||
| + (nullable MPPObjectDetectionResult *)objectDetectionResultWithDetectionsPacket: | ||||
|     (const mediapipe::Packet &)packet; | ||||
| 
 | ||||
| @end | ||||
| 
 | ||||
| NS_ASSUME_NONNULL_END | ||||
|  | @ -0,0 +1,45 @@ | |||
| // 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/vision/object_detector/utils/sources/MPPObjectDetectionResult+Helpers.h" | ||||
| 
 | ||||
| #import "mediapipe/tasks/ios/components/containers/utils/sources/MPPDetection+Helpers.h" | ||||
| 
 | ||||
| namespace { | ||||
| using DetectionProto = ::mediapipe::Detection; | ||||
| using ::mediapipe::Packet; | ||||
| }  // namespace | ||||
| 
 | ||||
| @implementation MPPObjectDetectionResult (Helpers) | ||||
| 
 | ||||
| + (nullable MPPObjectDetectionResult *)objectDetectionResultWithDetectionsPacket: | ||||
|     (const Packet &)packet { | ||||
|   if (!packet.ValidateAsType<std::vector<DetectionProto>>().ok()) { | ||||
|     return nil; | ||||
|   } | ||||
| 
 | ||||
|   const std::vector<DetectionProto> &detectionProtos = packet.Get<std::vector<DetectionProto>>(); | ||||
| 
 | ||||
|   NSMutableArray<MPPDetection *> *detections = | ||||
|       [NSMutableArray arrayWithCapacity:(NSUInteger)detectionProtos.size()]; | ||||
|   for (const auto &detectionProto : detectionProtos) { | ||||
|     [detections addObject:[MPPDetection detectionWithProto:detectionProto]]; | ||||
|   } | ||||
| 
 | ||||
|   return [[MPPObjectDetectionResult alloc] | ||||
|       initWithDetections:detections | ||||
|              timestampMs:(NSInteger)(packet.Timestamp().Value() / kMicroSecondsPerMilliSecond)]; | ||||
| } | ||||
| 
 | ||||
| @end | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user