Refactor GestureRecognizerResult conversion for default initialization
This commit is contained in:
		
							parent
							
								
									d19d5a50be
								
							
						
					
					
						commit
						9a5aa1b360
					
				| 
						 | 
					@ -47,18 +47,15 @@ void CppConvertToGestureRecognizerResult(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      CppCategory cpp_category;
 | 
					      CppCategory cpp_category;
 | 
				
			||||||
      // Set fields from the Classification protobuf
 | 
					      // Set fields from the Classification protobuf
 | 
				
			||||||
      if (classification.has_index()) {
 | 
					      cpp_category.index =
 | 
				
			||||||
        cpp_category.index = classification.index();
 | 
					          classification.has_index() ? classification.index() : 0;
 | 
				
			||||||
      }
 | 
					      cpp_category.score =
 | 
				
			||||||
      if (classification.has_score()) {
 | 
					          classification.has_score() ? classification.score() : 0.0f;
 | 
				
			||||||
        cpp_category.score = classification.score();
 | 
					      cpp_category.category_name =
 | 
				
			||||||
      }
 | 
					          classification.has_label() ? classification.label() : "";
 | 
				
			||||||
      if (classification.has_label()) {
 | 
					      cpp_category.display_name = classification.has_display_name()
 | 
				
			||||||
        cpp_category.category_name = classification.label();
 | 
					                                      ? classification.display_name()
 | 
				
			||||||
      }
 | 
					                                      : "";
 | 
				
			||||||
      if (classification.has_display_name()) {
 | 
					 | 
				
			||||||
        cpp_category.display_name = classification.display_name();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      CppConvertToCategory(cpp_category, &out->gestures[i][j]);
 | 
					      CppConvertToCategory(cpp_category, &out->gestures[i][j]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -78,18 +75,15 @@ void CppConvertToGestureRecognizerResult(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      CppCategory cpp_category;
 | 
					      CppCategory cpp_category;
 | 
				
			||||||
      // Set fields from the Classification protobuf
 | 
					      // Set fields from the Classification protobuf
 | 
				
			||||||
      if (classification.has_index()) {
 | 
					      cpp_category.index =
 | 
				
			||||||
        cpp_category.index = classification.index();
 | 
					          classification.has_index() ? classification.index() : 0;
 | 
				
			||||||
      }
 | 
					      cpp_category.score =
 | 
				
			||||||
      if (classification.has_score()) {
 | 
					          classification.has_score() ? classification.score() : 0.0f;
 | 
				
			||||||
        cpp_category.score = classification.score();
 | 
					      cpp_category.category_name =
 | 
				
			||||||
      }
 | 
					          classification.has_label() ? classification.label() : "";
 | 
				
			||||||
      if (classification.has_label()) {
 | 
					      cpp_category.display_name = classification.has_display_name()
 | 
				
			||||||
        cpp_category.category_name = classification.label();
 | 
					                                      ? classification.display_name()
 | 
				
			||||||
      }
 | 
					                                      : "";
 | 
				
			||||||
      if (classification.has_display_name()) {
 | 
					 | 
				
			||||||
        cpp_category.display_name = classification.display_name();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      CppConvertToCategory(cpp_category, &out->handedness[i][j]);
 | 
					      CppConvertToCategory(cpp_category, &out->handedness[i][j]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -138,10 +138,10 @@ GestureRecognizer* CppGestureRecognizerCreate(
 | 
				
			||||||
  return recognizer->release();
 | 
					  return recognizer->release();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int CppGestureRecognizerRecognize(void* recognizer, const MpImage* image,
 | 
					int CppGestureRecognizerRecognize(void* recognizer, const MpImage& image,
 | 
				
			||||||
                                  GestureRecognizerResult* result,
 | 
					                                  GestureRecognizerResult* result,
 | 
				
			||||||
                                  char** error_msg) {
 | 
					                                  char** error_msg) {
 | 
				
			||||||
  if (image->type == MpImage::GPU_BUFFER) {
 | 
					  if (image.type == MpImage::GPU_BUFFER) {
 | 
				
			||||||
    const absl::Status status =
 | 
					    const absl::Status status =
 | 
				
			||||||
        absl::InvalidArgumentError("GPU Buffer not supported yet.");
 | 
					        absl::InvalidArgumentError("GPU Buffer not supported yet.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -150,9 +150,9 @@ int CppGestureRecognizerRecognize(void* recognizer, const MpImage* image,
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const auto img = CreateImageFromBuffer(
 | 
					  const auto img = CreateImageFromBuffer(
 | 
				
			||||||
      static_cast<ImageFormat::Format>(image->image_frame.format),
 | 
					      static_cast<ImageFormat::Format>(image.image_frame.format),
 | 
				
			||||||
      image->image_frame.image_buffer, image->image_frame.width,
 | 
					      image.image_frame.image_buffer, image.image_frame.width,
 | 
				
			||||||
      image->image_frame.height);
 | 
					      image.image_frame.height);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!img.ok()) {
 | 
					  if (!img.ok()) {
 | 
				
			||||||
    ABSL_LOG(ERROR) << "Failed to create Image: " << img.status();
 | 
					    ABSL_LOG(ERROR) << "Failed to create Image: " << img.status();
 | 
				
			||||||
| 
						 | 
					@ -170,11 +170,11 @@ int CppGestureRecognizerRecognize(void* recognizer, const MpImage* image,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int CppGestureRecognizerRecognizeForVideo(void* recognizer,
 | 
					int CppGestureRecognizerRecognizeForVideo(void* recognizer,
 | 
				
			||||||
                                          const MpImage* image,
 | 
					                                          const MpImage& image,
 | 
				
			||||||
                                          int64_t timestamp_ms,
 | 
					                                          int64_t timestamp_ms,
 | 
				
			||||||
                                          GestureRecognizerResult* result,
 | 
					                                          GestureRecognizerResult* result,
 | 
				
			||||||
                                          char** error_msg) {
 | 
					                                          char** error_msg) {
 | 
				
			||||||
  if (image->type == MpImage::GPU_BUFFER) {
 | 
					  if (image.type == MpImage::GPU_BUFFER) {
 | 
				
			||||||
    absl::Status status =
 | 
					    absl::Status status =
 | 
				
			||||||
        absl::InvalidArgumentError("GPU Buffer not supported yet");
 | 
					        absl::InvalidArgumentError("GPU Buffer not supported yet");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -183,9 +183,9 @@ int CppGestureRecognizerRecognizeForVideo(void* recognizer,
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const auto img = CreateImageFromBuffer(
 | 
					  const auto img = CreateImageFromBuffer(
 | 
				
			||||||
      static_cast<ImageFormat::Format>(image->image_frame.format),
 | 
					      static_cast<ImageFormat::Format>(image.image_frame.format),
 | 
				
			||||||
      image->image_frame.image_buffer, image->image_frame.width,
 | 
					      image.image_frame.image_buffer, image.image_frame.width,
 | 
				
			||||||
      image->image_frame.height);
 | 
					      image.image_frame.height);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!img.ok()) {
 | 
					  if (!img.ok()) {
 | 
				
			||||||
    ABSL_LOG(ERROR) << "Failed to create Image: " << img.status();
 | 
					    ABSL_LOG(ERROR) << "Failed to create Image: " << img.status();
 | 
				
			||||||
| 
						 | 
					@ -202,9 +202,9 @@ int CppGestureRecognizerRecognizeForVideo(void* recognizer,
 | 
				
			||||||
  return 0;
 | 
					  return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int CppGestureRecognizerRecognizeAsync(void* recognizer, const MpImage* image,
 | 
					int CppGestureRecognizerRecognizeAsync(void* recognizer, const MpImage& image,
 | 
				
			||||||
                                       int64_t timestamp_ms, char** error_msg) {
 | 
					                                       int64_t timestamp_ms, char** error_msg) {
 | 
				
			||||||
  if (image->type == MpImage::GPU_BUFFER) {
 | 
					  if (image.type == MpImage::GPU_BUFFER) {
 | 
				
			||||||
    absl::Status status =
 | 
					    absl::Status status =
 | 
				
			||||||
        absl::InvalidArgumentError("GPU Buffer not supported yet");
 | 
					        absl::InvalidArgumentError("GPU Buffer not supported yet");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -213,9 +213,9 @@ int CppGestureRecognizerRecognizeAsync(void* recognizer, const MpImage* image,
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const auto img = CreateImageFromBuffer(
 | 
					  const auto img = CreateImageFromBuffer(
 | 
				
			||||||
      static_cast<ImageFormat::Format>(image->image_frame.format),
 | 
					      static_cast<ImageFormat::Format>(image.image_frame.format),
 | 
				
			||||||
      image->image_frame.image_buffer, image->image_frame.width,
 | 
					      image.image_frame.image_buffer, image.image_frame.width,
 | 
				
			||||||
      image->image_frame.height);
 | 
					      image.image_frame.height);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!img.ok()) {
 | 
					  if (!img.ok()) {
 | 
				
			||||||
    ABSL_LOG(ERROR) << "Failed to create Image: " << img.status();
 | 
					    ABSL_LOG(ERROR) << "Failed to create Image: " << img.status();
 | 
				
			||||||
| 
						 | 
					@ -257,7 +257,7 @@ void* gesture_recognizer_create(struct GestureRecognizerOptions* options,
 | 
				
			||||||
      CppGestureRecognizerCreate(*options, error_msg);
 | 
					      CppGestureRecognizerCreate(*options, error_msg);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int gesture_recognizer_recognize_image(void* recognizer, const MpImage* image,
 | 
					int gesture_recognizer_recognize_image(void* recognizer, const MpImage& image,
 | 
				
			||||||
                                       GestureRecognizerResult* result,
 | 
					                                       GestureRecognizerResult* result,
 | 
				
			||||||
                                       char** error_msg) {
 | 
					                                       char** error_msg) {
 | 
				
			||||||
  return mediapipe::tasks::c::vision::gesture_recognizer::
 | 
					  return mediapipe::tasks::c::vision::gesture_recognizer::
 | 
				
			||||||
| 
						 | 
					@ -265,7 +265,7 @@ int gesture_recognizer_recognize_image(void* recognizer, const MpImage* image,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int gesture_recognizer_recognize_for_video(void* recognizer,
 | 
					int gesture_recognizer_recognize_for_video(void* recognizer,
 | 
				
			||||||
                                           const MpImage* image,
 | 
					                                           const MpImage& image,
 | 
				
			||||||
                                           int64_t timestamp_ms,
 | 
					                                           int64_t timestamp_ms,
 | 
				
			||||||
                                           GestureRecognizerResult* result,
 | 
					                                           GestureRecognizerResult* result,
 | 
				
			||||||
                                           char** error_msg) {
 | 
					                                           char** error_msg) {
 | 
				
			||||||
| 
						 | 
					@ -274,7 +274,7 @@ int gesture_recognizer_recognize_for_video(void* recognizer,
 | 
				
			||||||
                                            result, error_msg);
 | 
					                                            result, error_msg);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int gesture_recognizer_recognize_async(void* recognizer, const MpImage* image,
 | 
					int gesture_recognizer_recognize_async(void* recognizer, const MpImage& image,
 | 
				
			||||||
                                       int64_t timestamp_ms, char** error_msg) {
 | 
					                                       int64_t timestamp_ms, char** error_msg) {
 | 
				
			||||||
  return mediapipe::tasks::c::vision::gesture_recognizer::
 | 
					  return mediapipe::tasks::c::vision::gesture_recognizer::
 | 
				
			||||||
      CppGestureRecognizerRecognizeAsync(recognizer, image, timestamp_ms,
 | 
					      CppGestureRecognizerRecognizeAsync(recognizer, image, timestamp_ms,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -100,7 +100,7 @@ MP_EXPORT void* gesture_recognizer_create(
 | 
				
			||||||
// an error message (if `error_msg` is not `nullptr`). You must free the memory
 | 
					// an error message (if `error_msg` is not `nullptr`). You must free the memory
 | 
				
			||||||
// allocated for the error message.
 | 
					// allocated for the error message.
 | 
				
			||||||
MP_EXPORT int gesture_recognizer_recognize_image(
 | 
					MP_EXPORT int gesture_recognizer_recognize_image(
 | 
				
			||||||
    void* recognizer, const MpImage* image, GestureRecognizerResult* result,
 | 
					    void* recognizer, const MpImage& image, GestureRecognizerResult* result,
 | 
				
			||||||
    char** error_msg);
 | 
					    char** error_msg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Performs gesture recognition on the provided video frame.
 | 
					// Performs gesture recognition on the provided video frame.
 | 
				
			||||||
| 
						 | 
					@ -113,7 +113,7 @@ MP_EXPORT int gesture_recognizer_recognize_image(
 | 
				
			||||||
// an error message (if `error_msg` is not `nullptr`). You must free the memory
 | 
					// an error message (if `error_msg` is not `nullptr`). You must free the memory
 | 
				
			||||||
// allocated for the error message.
 | 
					// allocated for the error message.
 | 
				
			||||||
MP_EXPORT int gesture_recognizer_recognize_for_video(
 | 
					MP_EXPORT int gesture_recognizer_recognize_for_video(
 | 
				
			||||||
    void* recognizer, const MpImage* image, int64_t timestamp_ms,
 | 
					    void* recognizer, const MpImage& image, int64_t timestamp_ms,
 | 
				
			||||||
    GestureRecognizerResult* result, char** error_msg);
 | 
					    GestureRecognizerResult* result, char** error_msg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Sends live image data to gesture recognition, and the results will be
 | 
					// Sends live image data to gesture recognition, and the results will be
 | 
				
			||||||
| 
						 | 
					@ -135,7 +135,7 @@ MP_EXPORT int gesture_recognizer_recognize_for_video(
 | 
				
			||||||
// an error message (if `error_msg` is not `nullptr`). You must free the memory
 | 
					// an error message (if `error_msg` is not `nullptr`). You must free the memory
 | 
				
			||||||
// allocated for the error message.
 | 
					// allocated for the error message.
 | 
				
			||||||
MP_EXPORT int gesture_recognizer_recognize_async(void* recognizer,
 | 
					MP_EXPORT int gesture_recognizer_recognize_async(void* recognizer,
 | 
				
			||||||
                                                 const MpImage* image,
 | 
					                                                 const MpImage& image,
 | 
				
			||||||
                                                 int64_t timestamp_ms,
 | 
					                                                 int64_t timestamp_ms,
 | 
				
			||||||
                                                 char** error_msg);
 | 
					                                                 char** error_msg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -116,7 +116,7 @@ TEST(GestureRecognizerTest, ImageModeTest) {
 | 
				
			||||||
                      .height = image_frame->Height()}};
 | 
					                      .height = image_frame->Height()}};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GestureRecognizerResult result;
 | 
					  GestureRecognizerResult result;
 | 
				
			||||||
  gesture_recognizer_recognize_image(recognizer, &mp_image, &result,
 | 
					  gesture_recognizer_recognize_image(recognizer, mp_image, &result,
 | 
				
			||||||
                                     /* error_msg */ nullptr);
 | 
					                                     /* error_msg */ nullptr);
 | 
				
			||||||
  MatchesGestureRecognizerResult(&result, kScorePrecision, kLandmarkPrecision);
 | 
					  MatchesGestureRecognizerResult(&result, kScorePrecision, kLandmarkPrecision);
 | 
				
			||||||
  gesture_recognizer_close_result(&result);
 | 
					  gesture_recognizer_close_result(&result);
 | 
				
			||||||
| 
						 | 
					@ -166,7 +166,7 @@ TEST(GestureRecognizerTest, VideoModeTest) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (int i = 0; i < kIterations; ++i) {
 | 
					  for (int i = 0; i < kIterations; ++i) {
 | 
				
			||||||
    GestureRecognizerResult result;
 | 
					    GestureRecognizerResult result;
 | 
				
			||||||
    gesture_recognizer_recognize_for_video(recognizer, &mp_image, i, &result,
 | 
					    gesture_recognizer_recognize_for_video(recognizer, mp_image, i, &result,
 | 
				
			||||||
                                           /* error_msg */ nullptr);
 | 
					                                           /* error_msg */ nullptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    MatchesGestureRecognizerResult(&result, kScorePrecision,
 | 
					    MatchesGestureRecognizerResult(&result, kScorePrecision,
 | 
				
			||||||
| 
						 | 
					@ -242,7 +242,7 @@ TEST(GestureRecognizerTest, LiveStreamModeTest) {
 | 
				
			||||||
                      .height = image_frame->Height()}};
 | 
					                      .height = image_frame->Height()}};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (int i = 0; i < kIterations; ++i) {
 | 
					  for (int i = 0; i < kIterations; ++i) {
 | 
				
			||||||
    EXPECT_GE(gesture_recognizer_recognize_async(recognizer, &mp_image, i,
 | 
					    EXPECT_GE(gesture_recognizer_recognize_async(recognizer, mp_image, i,
 | 
				
			||||||
                                                 /* error_msg */ nullptr),
 | 
					                                                 /* error_msg */ nullptr),
 | 
				
			||||||
              0);
 | 
					              0);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -311,8 +311,7 @@ TEST(GestureRecognizerTest, FailedRecognitionHandling) {
 | 
				
			||||||
  const MpImage mp_image = {.type = MpImage::GPU_BUFFER, .gpu_buffer = {}};
 | 
					  const MpImage mp_image = {.type = MpImage::GPU_BUFFER, .gpu_buffer = {}};
 | 
				
			||||||
  GestureRecognizerResult result;
 | 
					  GestureRecognizerResult result;
 | 
				
			||||||
  char* error_msg;
 | 
					  char* error_msg;
 | 
				
			||||||
  gesture_recognizer_recognize_image(recognizer, &mp_image, &result,
 | 
					  gesture_recognizer_recognize_image(recognizer, mp_image, &result, &error_msg);
 | 
				
			||||||
                                     &error_msg);
 | 
					 | 
				
			||||||
  EXPECT_THAT(error_msg, HasSubstr("GPU Buffer not supported yet"));
 | 
					  EXPECT_THAT(error_msg, HasSubstr("GPU Buffer not supported yet"));
 | 
				
			||||||
  free(error_msg);
 | 
					  free(error_msg);
 | 
				
			||||||
  gesture_recognizer_close(recognizer, /* error_msg */ nullptr);
 | 
					  gesture_recognizer_close(recognizer, /* error_msg */ nullptr);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user