Google Cloud Vision客户端库(PHP)图像标签 - 结果数



我正在使用PHP中的上述图书馆(Google Cloud Vision Cliber v1)将标签分配给图像...到目前为止还不错。一切都起作用,除了它比在Google测试页面上返回的结果要少...据我所知,它与默认为10的" max_results"参数有关它手动...Python上这里也有一个类似的问题,它就像将其传递到参数一样简单 - 我尝试了许多选择在PHP中执行此操作,但显然我做错了什么...

这是文档的链接:https://googleapis.github.io/google-cloud-php/#/docs/cloud-vision/vision/vision.19.3/vision/vision/v1/imageannotatorclient?我猜我必须将其传递给"可选的"参数...但不确定如何做到这一点...

这或多或少是我的代码:

require __DIR__ . '/vendor/autoload.php';
use GoogleCloudVisionV1ImageAnnotatorClient;
$this->client = new ImageAnnotatorClient();
$response = $this->client->labelDetection(...THE IMAGE...);
$labels = $response->getLabelAnnotations();
if ($labels) {
    foreach ($labels as $label) {
        // do something with $label->getDescription()
    }
}

任何人都知道如何在$标签数组中获得更多结果?

新方法

由于我提供的另一个答案似乎已弃用,因此我将提供一个在功能对象上使用setMaxResults方法的示例。

$imageAnnotatorClient = new ImageAnnotatorClient();
$gcsImageUri = 'some/image.jpg';
$source = new ImageSource();
$source->setGcsImageUri($gcsImageUri);
$image = new Image();
$image->setSource($source);
$type = Feature_Type::FACE_DETECTION;
$featuresElement = new Feature();
$featuresElement->setType($type);
$featuresElement->setMaxResults(100); // SET MAX RESULTS HERE
$features = [$featuresElement];
$requestsElement = new AnnotateImageRequest();
$requestsElement->setImage($image);
$requestsElement->setFeatures($features);
$requests = [$requestsElement];
$imageAnnotatorClient->batchAnnotateImages($requests);

弃用方法

MaxResults值在图像构造函数中指定

该代码的一个示例可以在图像对象的源代码中找到。

 $imageResource = fopen(__DIR__ . '/assets/family-photo.jpg', 'r');
 $image = new Image($imageResource, [
   'FACE_DETECTION',
   'LOGO_DETECTION'
 ], [
     'maxResults' => [
         'FACE_DETECTION' => 1
     ],
     'imageContext' => [
          ....
     ]
   ]
]);

好的,所以对于任何仍然需要这个的人来说,这是一个有效的示例

    use GoogleCloudVisionImage;
    use GoogleCloudVisionVisionClient;
    $imageResource = fopen(__DIR__ .'/'. $fileIMG, 'r');
    $thePic = new Image($imageResource, [
         'LABEL_DETECTION',
          'LOGO_DETECTION',
          'TEXT_DETECTION'
     ], [
         'maxResults' => [
             'LABEL_DETECTION' => 20,
             'LOGO_DETECTION' => 20,
             'TEXT_DETECTION' => 20
         ],
         'imageContext' => []
     ]);

    $vision = new VisionClient();
    $result = $vision->annotate($thePic);
    $finalLabels = array();
    // do the same for $results->text(), $results->logos()
    if($result->labels()){
        foreach ($result->labels() as $key => $annonObj) {
            $tmp = $annonObj->info();
            $finalLabels[] = $tmp['description'];
        }
    }

但是...正如官方文档中所说的那样

  • 请注意,该客户将在我们的下一个版本中被弃用。按顺序
  • 要接收最新功能和更新,请
  • 熟悉{@See Google Cloud Vision V1 ImageAnnotatorClient}的时间

所以我仍然需要一种使用ImageAnnotatorClient类来完成此操作的方法...任何人?

相关内容

  • 没有找到相关文章

最新更新