Skip to content

Commit

Permalink
Merge pull request #112 from GoogleCloudPlatform/landmark
Browse files Browse the repository at this point in the history
Add Cloud Vision landmark detection sample.
  • Loading branch information
jmdobry committed May 13, 2016
2 parents 1b8513e + c26583f commit 18d8e96
Show file tree
Hide file tree
Showing 5 changed files with 123 additions and 1 deletion.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,8 @@ __Other Examples__
## Google Cloud Vision

- Face detection - [Source code][vision_1] | [Documentation][vision_2]
- Label detection - [Source code][vision_3] | [Documentation][vision_4]
- Landmark detection - [Source code][vision_5] | [Documentation][vision_6]

## Google Prediction API

Expand Down Expand Up @@ -322,6 +324,10 @@ See [LICENSE](https://github.com/GoogleCloudPlatform/nodejs-docs-samples/blob/ma

[vision_1]: https://github.com/GoogleCloudPlatform/nodejs-docs-samples/blob/master/vision/faceDetection.js
[vision_2]: https://cloud.google.com/vision/docs/face-tutorial
[vision_3]: https://github.com/GoogleCloudPlatform/nodejs-docs-samples/blob/master/vision/labelDetection.js
[vision_4]: https://cloud.google.com/vision/docs/label-tutorial
[vision_5]: https://github.com/GoogleCloudPlatform/nodejs-docs-samples/blob/master/vision/landmarkDetection.js
[vision_6]: https://cloud.google.com/vision/docs/landmark-tutorial

[predictionapi_1]: https://github.com/GoogleCloudPlatform/nodejs-docs-samples/blob/master/prediction/hostedmodels.js
[predictionapi_2]: https://cloud.google.com/prediction/docs/developer-guide#predictionfromappengine
Expand Down
29 changes: 29 additions & 0 deletions test/vision/landmarkDetection.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// Copyright 2016, Google, Inc.
// 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.

'use strict';

var test = require('ava');

var landmarkDetectionSample = require('../../vision/landmarkDetection');

test.cb('should detect landmarks', function (t) {
landmarkDetectionSample.main(
'https://cloud-samples-tests.storage.googleapis.com/vision/water.jpg',
function (err, landmarks) {
t.ifError(err);
t.ok(landmarks.length > 0);
t.end();
}
);
});
6 changes: 6 additions & 0 deletions vision/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,9 @@ Execute the sample:
Execute the sample:

node labelDetection "/path/to/image.jpg"

### Landmark detection sample

Execute the sample:

node landmarkDetection "https://cloud-samples-tests.storage.googleapis.com/vision/water.jpg"
80 changes: 80 additions & 0 deletions vision/landmarkDetection.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
// Copyright 2016, Google, Inc.
// 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.

'use strict';

// [START app]
// [START import_libraries]
var gcloud = require('gcloud');
// [END import_libraries]

// [START authenticate]
// You must set the GOOGLE_APPLICATION_CREDENTIALS and GCLOUD_PROJECT
// environment variables to run this sample. See:
// https://github.com/GoogleCloudPlatform/gcloud-node/blob/master/docs/authentication.md
var projectId = process.env.GCLOUD_PROJECT;

// Initialize gcloud
gcloud = gcloud({
projectId: projectId
});

// Get a reference to the vision component
var vision = gcloud.vision();
// [END authenticate]

/**
* Uses the Vision API to detect landmarks in the given file.
*/
// [START construct_request]
function detectLandmarks(inputFile, callback) {
var options = { verbose: true };

// Make a call to the Vision API to detect the landmarks
vision.detectLandmarks(inputFile, options, function (err, landmarks) {
if (err) {
return callback(err);
}
console.log('result:', JSON.stringify(landmarks, null, 2));
callback(null, landmarks);
});
}
// [END construct_request]

// Run the example
function main(inputFile, callback) {
detectLandmarks(inputFile, function (err, landmarks) {
if (err) {
return callback(err);
}

// [START parse_response]
console.log('Found landmark: ' + landmarks[0].desc + ' for ' + inputFile);
// [END parse_response]
callback(null, landmarks);
});
}

// [START run_application]
if (module === require.main) {
if (process.argv.length < 3) {
console.log('Usage: node landmarkDetection <inputFile>');
process.exit(1);
}
var inputFile = process.argv[2];
main(inputFile, console.log);
}
// [END run_application]
// [END app]

exports.main = main;
3 changes: 2 additions & 1 deletion vision/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
},
"scripts": {
"faceDetection": "node faceDetection.js",
"labelDetection": "node labelDetection.js"
"labelDetection": "node labelDetection.js",
"landmarkDetection": "node landmarkDetection.js"
},
"dependencies": {
"gcloud": "^0.32.0",
Expand Down

0 comments on commit 18d8e96

Please sign in to comment.