Классификация изображений с помощью Bluemix

После тщательных исследований я решил использовать Bluemix для классификации и распознавания изображений.

У меня есть начальный вопрос о том, как начать программирование с использованием среды выполнения node.js.

Я пытался следовать этому руководство. Однако это всего лишь фрагменты кода. Как вы запускаете их и видите, как они работают в среде Bluemix?

Мой прогресс:
— Я запустил начальное приложение node.js в Bluemix.
— Я добавил следующий код, и app.js выглядит так:

    /*eslint-env node*/

//--------------------------------------------------------------------------
// node.js starter application for Bluemix
//--------------------------------------------------------------------------

// This application uses express as its web server
// for more info, see: http://expressjs.com
var express = require('express');

// cfenv provides access to your Cloud Foundry environment
// for more info, see: https://www.npmjs.com/package/cfenv
var cfenv = require('cfenv');

// create a new express server
var app = express();

// serve the files out of ./public as our main files
app.use(express.static(__dirname + '/public'));

// get the app environment from Cloud Foundry
var appEnv = cfenv.getAppEnv();

// start server on the specified port and binding host
app.listen(appEnv.port, '0.0.0.0', function() {
  // print a message when the server starts listening
  console.log("server starting on " + appEnv.url);
});

var watson = require('watson-developer-cloud');
var fs = require('fs');

/*var visual_recognition = watson.visual_recognition({
  username: '<username>',
  password: '<password>',
  version: 'v2-beta',
  version_date: '2015-12-02'
});*/

 var visualRecognition = watson.visual_recognition({
   version: 'v3',
   api_key: process.env.API_KEY || 'my api key',
   version_date: '2015-05-19'
 });

var params = {
  images_file: fs.createReadStream('./resources/car.png')
};

visualRecognition.classify(params, function(err, res) {
  if (err)
    console.log(err);
  else
    console.log(JSON.stringify(res, null, 2));
});

Я пытаюсь запустить код в среде Bluemix (режим редактирования в реальном времени), а не локально. Когда я запускаю код, развертывание останавливается, и я даже не могу определить, какая строка кода вызывает это. Когда я захожу на веб-страницу, я получаю следующую ошибку:

404 Not Found: запрошенный маршрут ('myvisualapp.mybluemix.net') не существует.

Я не понимаю, что не так и как отлаживать код.

Уровень автора: начинающий


person skyrocket    schedule 25.05.2016    source источник
comment
Не могли бы вы сообщить мне, где находится кнопка «Выполнить код», о которой вы упоминали?   -  person Umberto Manganiello    schedule 26.05.2016


Ответы (2)


  1. Вам нужно «маршрутизировать» (или, по крайней мере, перехватывать) клиентские запросы в экспресс. Сейчас у запроса нет обработчика. Используйте вызов app.get() для этой цели
  2. Ваши вызовы службы Watson сейчас не привязаны к запросу пользователя. Вам нужно направить его через запрос пользователя.

Например:

app.get('/', function(req, res) {

// invoke watson services
// get the result.
// write back the result through the response object, res

}
person Gireesh Punathil    schedule 26.05.2016

Вы можете посмотреть демо-код по адресу https://github.com/watson-developer-cloud/visual-recognition-nodejs и получите хорошую отправную точку.

Кроме того, из командной строки вы можете увидеть журналы вашего приложения, развернутого в bluemix с помощью

$ cf logs YOURAPPNAME --recent

где YOURAPPNAME — это имя приложения, которое вы отправили в bluemix. Вы можете получить имя, используя

$ cf apps

если вы забудете имя, которое использовали (что со мной случается постоянно).

person Joshua Smith    schedule 28.07.2016