【问题标题】:Google cloud vision - product search return null for base64 image谷歌云视觉 - base64 图像的产品搜索返回 null
【发布时间】:2021-11-01 15:44:42
【问题描述】:

我是第一次实施谷歌云愿景。 成功创建产品集、产品并为产品分配图像。 当我尝试执行发送 base64 编码图像的产品搜索时,结果始终为空。但是当我尝试使用来自谷歌云存储的图像时,它正在工作。知道为什么它不起作用吗?

    $productSearchClient = new ProductSearchClient();
    $productSetPath = $productSearchClient->productSetName(config('web.google_vision.project_id'), config('web.google_vision.location'), 2);

    # product search specific parameters
    $productSearchParams = (new ProductSearchParams())
        ->setProductSet($productSetPath)
        ->setProductCategories(['general-v1']);

    # search products similar to the image
    $imageAnnotatorClient = new ImageAnnotatorClient(); 
    //$image = 'gs://picfly-bucket/wendys-5.jpeg';
    $image = base64_encode(file_get_contents(public_path('gallery/test/wendy-search.png')));
    $response = $imageAnnotatorClient->productSearch($image, $productSearchParams);
    dd($response->getProductSearchResults());

【问题讨论】:

  • 嗨@general666,如果您发现我的回答对您的问题有帮助,请考虑按照Stack Overflow guidelines 接受/投票。

标签: base64 google-cloud-vision google-product-search


【解决方案1】:

根据doc,您的代码读取本地文件并通过在请求中包含内联原始图像字节(base64 编码图像)来查询 API。因此,您不应显式调用 base64_encode()。 Vision 库默认使用 base64 编码。您只需调用 fopen() 即可打开本地图像数据。代码如下所示:

$image = fopen('gallery/test/wendy-search.png', 'r');
$response = $imageAnnotatorClient->productSearch($image, $productSearchParams);

【讨论】:

  • 谢谢它有效!
猜你喜欢
  • 2020-02-22
  • 2019-12-14
  • 2021-12-30
  • 2018-01-23
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 2021-01-03
相关资源
最近更新 更多