Skip to content

Commit 4bedd4c

Browse files
committed
adding mime type for image part
1 parent 71d9ea0 commit 4bedd4c

File tree

2 files changed

+25
-30
lines changed

2 files changed

+25
-30
lines changed

examples/visual_recognition_v3.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
# print(json.dumps(visual_recognition.create_classifier('Cars vs Trucks', cars_positive_examples=cars,
1313
# negative_examples=trucks), indent=2))
1414

15-
# with open(join(dirname(__file__), '../resources/car.jpg'), 'rb') as image_file:
16-
# visual_recognition.classify(images_file=image_file)
15+
with open(join(dirname(__file__), '../resources/car.jpg'), 'rb') as image_file:
16+
visual_recognition.classify(images_file=image_file)
1717

1818
print(json.dumps(visual_recognition.classify(images_url=test_url), indent=2))
1919

@@ -23,8 +23,8 @@
2323

2424
print(json.dumps(visual_recognition.list_classifiers(), indent=2))
2525

26-
# with open(join(dirname(__file__), '../resources/test.jpg'), 'rb') as image_file:
27-
# print(json.dumps(visual_recognition.classify(images_file=image_file), indent=2))
26+
with open(join(dirname(__file__), '../resources/text.png'), 'rb') as image_file:
27+
print(json.dumps(visual_recognition.recognize_text(images_file=image_file), indent=2))
2828

29-
# with open(join(dirname(__file__), '../resources/test.jpg'), 'rb') as image_file:
30-
# print(json.dumps(visual_recognition.detect_faces(images_file=image_file), indent=2))
29+
with open(join(dirname(__file__), '../resources/face.jpg'), 'rb') as image_file:
30+
print(json.dumps(visual_recognition.detect_faces(images_file=image_file), indent=2))

watson_developer_cloud/visual_recognition_v3.py

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
(http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/visual-recognition/)
1717
"""
1818
import json
19+
import mimetypes
20+
1921
from .watson_developer_cloud_service import WatsonDeveloperCloudService
2022

2123

@@ -81,6 +83,20 @@ def create_classifier(self, name, **kwargs):
8183
return self.request(method='POST', url='/v3/classifiers', files=kwargs, data=data, params=params,
8284
accept_json=True)
8385

86+
def _image_call(self, url, images_file=None, images_url=None, params=None):
87+
if images_file is None and images_url is None:
88+
raise AssertionError('You must specify either a file or a url')
89+
90+
if images_url:
91+
params['url'] = images_url
92+
return self.request(method='GET', url=url, params=params, accept_json=True)
93+
else:
94+
filename = images_file.name
95+
mime_type = mimetypes.guess_type(filename)[0] or 'application/octet-stream'
96+
return self.request(method='POST', url=url,
97+
files={'images_file': (filename, images_file, mime_type)}, params=params,
98+
accept_json=True)
99+
84100
def classify(self, images_file=None, images_url=None, classifier_ids=None, owners=None, threshold=None):
85101
"""
86102
Returns a list of classification scores for one or more input images.
@@ -94,17 +110,8 @@ def classify(self, images_file=None, images_url=None, classifier_ids=None, owner
94110
if classifier_ids:
95111
classifier_ids = '{"classifier_ids": ' + classifier_ids + '}'
96112

97-
if images_file is None and images_url is None:
98-
raise AssertionError('You must specify either a file or a url')
99-
100113
params = {'version': self.version, 'classifier_ids': classifier_ids, 'owners': owners, 'threshold': threshold}
101-
# Params sent as url parameters here
102-
if images_url:
103-
params['url'] = images_url
104-
return self.request(method='GET', url='/v3/classify', params=params, accept_json=True)
105-
else:
106-
return self.request(method='POST', url='/v3/classify', files={'images_file': images_file}, params=params,
107-
accept_json=True)
114+
return self._image_call('/v3/classify', images_file, images_url, params)
108115

109116
def detect_faces(self, images_file=None, images_url=None):
110117
"""
@@ -114,13 +121,7 @@ def detect_faces(self, images_file=None, images_url=None):
114121
"""
115122

116123
params = {'version': self.version}
117-
# Params sent as url parameters here
118-
if images_url:
119-
params['url'] = images_url
120-
return self.request(method='GET', url='/v3/detect_faces', params=params, accept_json=True)
121-
else:
122-
return self.request(method='POST', url='/v3/detect_faces', files={'images_file': images_file},
123-
params=params, accept_json=True)
124+
return self._image_call('/v3/detect_faces', images_file, images_url, params)
124125

125126
def recognize_text(self, images_file=None, images_url=None):
126127
"""
@@ -130,10 +131,4 @@ def recognize_text(self, images_file=None, images_url=None):
130131
"""
131132

132133
params = {'version': self.version}
133-
# Params sent as url parameters here
134-
if images_url:
135-
params['url'] = images_url
136-
return self.request(method='GET', url='/v3/recognize_text', params=params, accept_json=True)
137-
else:
138-
return self.request(method='POST', url='/v3/recognize_text',
139-
files={'images_file': images_file}, params=params, accept_json=True)
134+
return self._image_call('/v3/recognize_text', images_file, images_url, params)

0 commit comments

Comments
 (0)