尝试访问应用中的文件时出错

时间:2018-04-10 17:32:01

标签: android reactjs react-native tensorflow expo

我正在构建一个使用张量流来识别图像的本机应用程序,我按照此tutorial中的步骤进行操作。

我根据解释做了一切,包括"获取文件" 的部分。我创建了assets文件夹并将文件放入其中(路径正确)。

但是当我运行这段代码时:

const tfImageRecognition = new TfImageRecognition({
    model: require('./assets/tensorflow_inception_graph.pb'),
    labels: require('./assets/tensorflow_labels.txt'),
});

该应用程序出现以下错误:

enter image description here

我已经尝试创建一个新项目,我导入了react-native-tensorflow import { TfImageRecognition } from 'react-native-tensorflow';,我更新了缓存,删除了文件夹node_modules,还创建了文件" rn -cli.config.js "本教程中要求提供对assets文件夹中文件的访问权限。知道如何解决这个问题吗?

我使用expo在移动设备上运行应用程序(android)。

  • npm:5.51
  • 世博会:51.4.0
  • react-native:0.54.0
  • react-native-cli:2.0.1

5 个答案:

答案 0 :(得分:1)

这个问题并没有发生在我身上。尝试react-native start --reset-cache,然后再次运行该应用。

答案 1 :(得分:1)

有一种更好的方法。

import model from './assets/tensorflow_inception_graph.pb';
import labels from './assets/tensorflow_labels.txt';

const tfImageRecognition = new TfImageRecognition({
    model,
    labels
});

重新启动服务器。

答案 2 :(得分:1)

我尝试了与你提到的相同的例子我访问了图像和文本。 我将assets内的文件存储在同一目录中。您可以共享代码以产生您遇到的错误吗?

  async recognizeImage() {

    try {
      const tfImageRecognition = new TfImageRecognition({
        model:require('./assets/tensorflow_inception_graph.pb'),
        labels: require('./assets/tensorflow_labels.txt')
      })

      const results = await tfImageRecognition.recognize({
        image: this.image
      })

      const resultText = `Name: ${results[0].name} - Confidence: ${results[0].confidence}`
      this.setState({result: resultText})

      await tfImageRecognition.close()
    } catch(err) {
      alert(err)
    }
  }

正如您提到的使用expo,我假设已经运行npm eject。由于react-native-tensorflow此库需要原生更改

答案 3 :(得分:1)

您必须在rn-cli.config.js中添加扩展名,以便要求tensorflow_inception_graph.pb和tensorflow_labels.txt

module.exports = {
  getAssetExts() {
    return ['pb', 'txt']
  }
}

答案 4 :(得分:0)

用./替换./,所以最终代码为 -

  model: require('../assets/tensorflow_inception_graph.pb'),
  labels: require('../assets/tensorflow_labels.txt')