Beispiel #1
0
def api_view(request, tags=""):
    # Return the current time
    if request.GET.get("time"):
        return HttpResponse(time.time())

    # Post an image and get clarifai tags for it.
    # If the image is a url, download it into a temp file and then return the tags from clarifai
    # For debugging.
    if request.method == "POST":
        file = None
        t0 = time.time()
        if "uri" in request.POST:
            uri_data = request.POST.get("uri")
            b64_data = uri_data.split("data:image/jpeg,base64;")
            if len(b64_data) > 1:
                b64_data = b64_data[1]
                bin_data = a2b_base64(b64_data)
                file = tempfile.TemporaryFile()
                file.write(bin_data)
        elif "file" in request.FILES:
            file = request.FILES["file"]

        if file:
            print(time.time(), "loadAPI")
            clarifai_api = ClarifaiApi()
            print(time.time(), "sendAPI")
            if (tags == ""):
                json_resp = clarifai_api.tag(file)
            else:
                json_resp = clarifai_api.tag(file, select_classes=tags)
            queue.push(json_resp)
            print(queue.size())
            print(time.time(), "doneAPI")

            t1 = time.time()

            json_resp["timing"] = [t0, t1]

            return JsonResponse(json_resp)

    return JsonResponse({"error": "InvalidRequest"})
Beispiel #2
0
def post_clarifai(imagepath):
    """
    @return person(bool), pretty(bool), tags(list)
    """
    print "START_CLARIFAI"
    app_id = "J-1HVOns4pAe61vumq7NFHvf-TpHXrX54WaKyVyD"
    app_secret = "sY9cM9tyklkhcNv_6gWPs9_ihqv9Amxw5H_1wxiH"
    api = ClarifaiApi(app_id, app_secret)
    with open(imagepath,'rb') as image_file:
        res0 = api.tag(image_file, select_classes="bottle,crow,food")
        #print json.dumps(res0, indent=2)
        
        res0_tags = res0.get("results",{})[0].get("result",{}).get("tag",{})
        #res0_classes = res0_tags.get("classes")
        bottle_probs = res0_tags.get("probs")[0]
        crow_probs = res0_tags.get("probs")[1]
        food_probs = res0_tags.get("probs")[2]
        #print "food_probs"
        #print food_probs
        #if "bird" in res0_classes or "bottle" in res0_classes:
        if (bottle_probs > 0.15):  
            print "bottle"
            return False, "pretty" in res0_classes, res0_classes, u"おーいお茶"
        elif (crow_probs > 0.15):
            print "crow"
            return False, "pretty" in res0_classes, res0_classes, None
        elif (food_probs > 0.3):
            print "food"
            return False, "pretty" in res0_classes, res0_classes, u"チョコパイ"
        res1 = api.tag(image_file, select_classes="pretty,smile")
        print json.dumps(res1, indent=2)
        res1_tags = res1.get("results",{})[0].get("result",{}).get("tag",{})
        res1_classes = res1_tags.get("classes")
        # TODO pretty thre
        pretty_val = res1_tags.get("probs")[0]
	smile_val = res1_tags.get("probs")[1]
        print "PRETTY VAL=%s" % pretty_val
        
        #data["person"], data["pretty"], data["tags"], data["item"]
        return True, pretty_val>0.5, res0_classes, None
Beispiel #3
0
def check_pretty(imageurl):
    api = ClarifaiApi()
    #api.set_model("")
    if imageurl.startswith('http'):
        response = api.tag_image_urls(imageurl, select_classes="pretty,human")
    elif os.path.isdir(imageurl):
        response = tag_images_in_directory(imageurl)
    elif os.path.isfile(imageurl):
        with open(imageurl,'rb') as image_file:
            response = api.tag(image_file, select_classes="pretty,human,man,woman")
    else:
        raise Exception("Must input url, directory path, or file path")
    
    print json.dumps(response, indent=2)
    return response
Beispiel #4
0
def main(argv):
  if len(argv) > 1:
    imageurl = argv[1]
  else:
    imageurl = 'http://clarifai-img.s3.amazonaws.com/test/toddler-flowers.jpeg'

  api = ClarifaiApi()
  #api.set_model("")
  if imageurl.startswith('http'):
    response = api.tag_image_urls(imageurl)
  elif os.path.isdir(imageurl):
    response = tag_images_in_directory(imageurl)
  elif os.path.isfile(imageurl):
    with open(imageurl,'rb') as image_file:
      response = api.tag(image_file, select_classes="pretty,man,woman")
  else:
    raise Exception("Must input url, directory path, or file path")

  resultCode = json.dumps(response, indent=2
                          )
  print resultCode