Skip to content

Commit

Permalink
All done
Browse files Browse the repository at this point in the history
  • Loading branch information
meyertst-aws committed Jun 13, 2024
1 parent 5ea707f commit 3af9f47
Show file tree
Hide file tree
Showing 9 changed files with 334 additions and 40 deletions.
27 changes: 27 additions & 0 deletions .doc_gen/metadata/rekognition_metadata.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,23 @@
# zexi 0.4.0
rekognition_Hello:
title: Hello &REK;
title_abbrev: Hello &REK;
synopsis: get started using &REK;.
category: Hello
languages:
C++:
versions:
- sdk_version: 1
github: cpp/example_code/rekognition/hello_rekognition
excerpts:
- description: Code for the CMakeLists.txt CMake file.
snippet_tags:
- cpp.example_code.rekognition.hello_rekognition.cmake
- description: Code for the hello_rekognition.cpp source file.
snippet_tags:
- cpp.example_code.rekognition.hello_rekognition
services:
rekognition: {ListCollections}
rekognition_DescribeCollection:
guide_topic:
title: Describing a collection
Expand Down Expand Up @@ -555,6 +574,14 @@ rekognition_DetectLabels:
snippet_tags:
- python.example_code.rekognition.RekognitionImage
- python.example_code.rekognition.DetectLabels
C++:
versions:
- sdk_version: 1
github: cpp/example_code/rekognition
excerpts:
- description:
snippet_tags:
- cpp.example_code.rekognition.DetectLabels
services:
rekognition: {DetectLabels}
rekognition_DetectModerationLabels:
Expand Down
5 changes: 2 additions & 3 deletions cpp/example_code/rekognition/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ set(CMAKE_CXX_STANDARD 11)
set(WINDOWS_BUILD ${MSVC})

# Set the location of where Windows can find the installed libraries of the SDK.
if (WINDOWS_BUILD )
if (WINDOWS_BUILD)
string(REPLACE ";" "/aws-cpp-sdk-all;" SYSTEM_MODULE_PATH "${CMAKE_SYSTEM_PREFIX_PATH}/aws-cpp-sdk-all")
list(APPEND CMAKE_PREFIX_PATH ${SYSTEM_MODULE_PATH})
endif ()
Expand Down Expand Up @@ -50,8 +50,7 @@ foreach (file ${AWSDOC_SOURCE})
# Build the code example executables.
set(EXAMPLE_EXE run_${EXAMPLE})

add_executable(${EXAMPLE_EXE} ${file}
hello_rekognition/hello_rekognition.cpp)
add_executable(${EXAMPLE_EXE} ${file})

target_link_libraries(${EXAMPLE_EXE} ${AWSSDK_LINK_LIBRARIES}
${AWSSDK_PLATFORM_DEPS})
Expand Down
117 changes: 117 additions & 0 deletions cpp/example_code/rekognition/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Amazon Rekognition code examples for the SDK for C++

## Overview

Shows how to use the AWS SDK for C++ to work with Amazon Rekognition.

<!--custom.overview.start-->
<!--custom.overview.end-->

_Amazon Rekognition makes it easy to add image and video analysis to your applications._

## ⚠ Important

* Running this code might result in charges to your AWS account. For more details, see [AWS Pricing](https://aws.amazon.com/pricing/) and [Free Tier](https://aws.amazon.com/free/).
* Running the tests might result in charges to your AWS account.
* We recommend that you grant your code least privilege. At most, grant only the minimum permissions required to perform the task. For more information, see [Grant least privilege](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).
* This code is not tested in every AWS Region. For more information, see [AWS Regional Services](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services).

<!--custom.important.start-->
<!--custom.important.end-->

## Code examples

### Prerequisites



Before using the code examples, first complete the installation and setup steps
for [Getting started](https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/getting-started.html) in the AWS SDK for
C++ Developer Guide.
This section covers how to get and build the SDK, and how to build your own code by using the SDK with a
sample Hello World-style application.

Next, for information on code example structures and how to build and run the examples, see [Getting started with the AWS SDK for C++ code examples](https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/getting-started-code-examples.html).


<!--custom.prerequisites.start-->
<!--custom.prerequisites.end-->

### Get started

- [Hello Amazon Rekognition](hello_rekognition/CMakeLists.txt)


### Single actions

Code excerpts that show you how to call individual service functions.

- [DetectLabels](detect_labels.cpp#L22)

### Cross-service examples

Sample applications that work across multiple AWS services.

- [Create a serverless application to manage photos](../../example_code/cross-service/photo_asset_manager)


<!--custom.examples.start-->
<!--custom.examples.end-->

## Run the examples

### Instructions

An executable is built for each source file in this folder. These executables are located in the build folder and have
"run_" prepended to the source file name, minus the suffix. See the "main" function in the source file for further instructions.

For example, to run the action in the source file "my_action.cpp", execute the following command from within the build folder. The command
will display any required arguments.

```
./run_my_action
```

If the source file is in a different folder, instructions can be found in the README in that
folder.

<!--custom.instructions.start-->
<!--custom.instructions.end-->

#### Hello Amazon Rekognition

This example shows you how to get started using Amazon Rekognition.



### Tests

⚠ Running tests might result in charges to your AWS account.



```sh
cd <BUILD_DIR>
cmake <path-to-root-of-this-source-code> -DBUILD_TESTS=ON
make
ctest
```


<!--custom.tests.start-->
<!--custom.tests.end-->

## Additional resources

- [Amazon Rekognition Developer Guide](https://docs.aws.amazon.com/rekognition/latest/dg/what-is.html)
- [Amazon Rekognition API Reference](https://docs.aws.amazon.com/rekognition/latest/APIReference/Welcome.html)
- [SDK for C++ Amazon Rekognition reference](https://sdk.amazonaws.com/cpp/api/LATEST/aws-cpp-sdk-rekognition/html/annotated.html)

<!--custom.resources.start-->
<!--custom.resources.end-->

---

Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

SPDX-License-Identifier: Apache-2.0
11 changes: 3 additions & 8 deletions cpp/example_code/rekognition/detect_labels.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@
*/
bool AwsDoc::Rekognition::detectLabels(const Aws::String &imageBucket,
const Aws::String &imageKey,
const Aws::Client::ClientConfiguration &clientConfiguration)
{
const Aws::Client::ClientConfiguration &clientConfiguration) {
Aws::Rekognition::RekognitionClient rekognitionClient(clientConfiguration);

Aws::Rekognition::Model::DetectLabelsRequest request;
Expand All @@ -49,14 +48,12 @@ bool AwsDoc::Rekognition::detectLabels(const Aws::String &imageBucket,
const Aws::Vector<Aws::Rekognition::Model::Label> &labels = outcome.GetResult().GetLabels();
if (labels.empty()) {
std::cout << "No labels detected" << std::endl;
}
else {
} else {
for (const Aws::Rekognition::Model::Label &label: labels) {
std::cout << label.GetName() << ": " << label.GetConfidence() << std::endl;
}
}
}
else {
} else {
std::cerr << "Error while detecting labels: '"
<< outcome.GetError().GetMessage()
<< "'" << std::endl;
Expand All @@ -68,14 +65,12 @@ bool AwsDoc::Rekognition::detectLabels(const Aws::String &imageBucket,
// snippet-end:[cpp.example_code.rekognition.DetectLabels]

/*
*
* main function
*
* Usage: 'run_detect_labels <bucket> <image_key>'
*
* Prerequisites: An S3 bucket with an image.
*
*
*/

#ifndef TESTING_BUILD
Expand Down
25 changes: 12 additions & 13 deletions cpp/example_code/rekognition/rekognition_samples.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//
// Created by Meyer, Steve on 6/11/24.
//
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

#pragma once
#ifndef EXAMPLES_REKOGNITION_SAMPLES_H
#define EXAMPLES_REKOGNITION_SAMPLES_H

Expand All @@ -10,17 +10,16 @@
namespace AwsDoc {
namespace Rekognition {
//! Detect instances of real-world entities within an image by using Amazon Rekognition
/*!
\param image: The
\param clientConfiguration: AWS client configuration.
\return bool: Function succeeded.
*/

bool detectLabels(const Aws::String &imageBucket,
const Aws::String &imageKey,
const Aws::Client::ClientConfiguration &clientConfiguration);
/*!
\param imageBucket: The Amazon Simple Storage Service (Amazon S3) bucket containing an image.
\param imageKey: The Amazon S3 key of an image object.
\param clientConfiguration: AWS client configuration.
\return bool: Function succeeded.
*/
bool detectLabels(const Aws::String &imageBucket,
const Aws::String &imageKey,
const Aws::Client::ClientConfiguration &clientConfiguration);
} // Rekognition

}// AwsDoc

#endif //EXAMPLES_REKOGNITION_SAMPLES_H
5 changes: 3 additions & 2 deletions cpp/example_code/rekognition/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
# Set the minimum required version of CMake for this project.
cmake_minimum_required(VERSION 3.14)

set(EXAMPLE_SERVICE_NAME "ServiceTemplate")
set(EXAMPLE_SERVICE_NAME "rekognition")
set(CURRENT_TARGET "${EXAMPLE_SERVICE_NAME}_gtest")
set(CURRENT_TARGET_AWS_DEPENDENCIES)
set(CURRENT_TARGET_AWS_DEPENDENCIES rekognition s3)

# Set this project's name.
project("${EXAMPLE_SERVICE_NAME}-examples-gtests")
Expand Down Expand Up @@ -95,6 +95,7 @@ target_compile_definitions(
${CURRENT_TARGET}
PUBLIC
TESTING_BUILD
TESTS_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
)

target_link_libraries(
Expand Down
30 changes: 30 additions & 0 deletions cpp/example_code/rekognition/tests/gtest_detect_labels.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
/*
* Test types are indicated by the test label ending.
*
* _1_ Requires credentials, permissions, and AWS resources.
* _2_ Requires credentials and permissions.
* _3_ Does not require credentials.
*
*/

#include <gtest/gtest.h>
#include "rekognition_samples.h"
#include "rekognition_gtests.h"

namespace AwsDocTest {
// NOLINTNEXTLINE(readability-named-parameter)
TEST_F(Rekognition_GTests, detect_labels_2_) {
Aws::String bucketName = getImageBucket();
ASSERT_FALSE(bucketName.empty()) << preconditionError() << std::endl;
Aws::String fileName = getImageFileName();
Aws::String imageKey = "test_rekognition_cpp.jpg";

bool result = uploadImage(bucketName, fileName, imageKey);
ASSERT_TRUE(result) << preconditionError() << std::endl;

result = AwsDoc::Rekognition::detectLabels(bucketName, imageKey, *s_clientConfig);
ASSERT_TRUE(result);
}
} // namespace AwsDocTest
Loading

0 comments on commit 3af9f47

Please sign in to comment.