2017-06-02 8 views
-1

Ich kann Bild erkennen und auf Vorhersage wie Nsfw, Sfw usw. mit dem folgenden Beispielcode in objective-c überprüfen.Wie verwende ich Clarifai?

// Initialize the Clarifai app with your app's ID and Secret. 
ClarifaiApp *app = [[ClarifaiApp alloc] initWithAppID:@"" 
              appSecret:@""]; 

// Fetch Clarifai's general model. 
[app getModelByName:@"general-v1.3" completion:^(ClarifaiModel *model, NSError *error) { 
    // Create a Clarifai image from a uiimage. 
    ClarifaiImage *clarifaiImage = [[ClarifaiImage alloc] initWithImage:image]; 

    // Use Clarifai's general model to pedict tags for the given image. 
    [model predictOnImages:@[clarifaiImage] completion:^(NSArray<ClarifaiOutput *> *outputs, NSError *error) { 
     if (!error) { 
      ClarifaiOutput *output = outputs[0]; 

      // Loop through predicted concepts (tags), and display them on the screen. 
      NSMutableArray *tags = [NSMutableArray array]; 
      for (ClarifaiConcept *concept in output.concepts) { 
       [tags addObject:concept.conceptName]; 
      } 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       self.textView.text = [NSString stringWithFormat:@"Tags:\n%@", [tags componentsJoinedByString:@", "]]; 
      }); 
     } 

     dispatch_async(dispatch_get_main_queue(), ^{ 
     self.button.enabled = YES; 
     }); 

    }]; 
}]; 

Für diese I-Modell bekommen und von diesem Modell i Bilder vorhersagen kann.

Frage:

Wie kann ich die Ernte Funktion machen? Ich bekomme keine Möglichkeit, die in Clarifai verfügbare Crop-Funktionalität zu erreichen.

Irgendwelche Ideen.

Antwort

1

Sie können einen Zuschnitt mit der Klasse ClarifaiCrop erstellen und damit eine ClarifaiImage initialisieren.

ClarifaiCrop *crop = [[ClarifaiCrop alloc] initWithTop:0.1 
                left:0.1 
               bottom:0.1 
               right:0.1]; 

Wo oben, links, unten, rechts und Prozentsätze sind (zwischen 0 und 1) der Abstände von den Rändern des Bildes der interessierenden Region. Im obigen Beispiel würde das Bild um 10% von jedem Rand abgeschnitten werden.

ClarifaiImage *clarifaiImage = [[ClarifaiImage alloc] initWithImage:image 
                  andCrop:crop]; 
+0

@D Cirne danke für die Antwort –