Qrcode decoder¶
Do I see a qrcode ? What is the content ?
Getting Started¶
You can use this qrcode for example:
Using Angus python SDK:
# -*- coding: utf-8 -*-
import angus.client
from pprint import pprint
conn = angus.client.connect()
service = conn.services.get_service('qrcode_decoder', version=1)
job = service.process({'image': open('./qrcode.jpg', 'rb')})
pprint(job.result)
Input¶
The API takes a stream of 2d still images as input, of format jpg or png, without constraints on resolution.
Note however that the bigger the resolution, the longer the API will take to process and give a result.
The function process() takes a dictionary as input formatted as follows:
{'image' : file}
image: a pythonFile Objectas returned for example byopen()or aStringIObuffer.
Output¶
Events will be pushed to your client following that format:
{
"type": "QRCODE",
"data": "http://www.angus.ai"
}
type: qrcode data typedata: content
Code Sample¶
requirements: opencv2, opencv2 python bindings
This code sample retrieves the stream of a webcam and print on standard output the qrcode content data.
# -*- coding: utf-8 -*-
import StringIO
import cv2
import numpy as np
from pprint import pprint
import angus.client
def main(stream_index):
camera = cv2.VideoCapture(stream_index)
camera.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 640)
camera.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 480)
camera.set(cv2.cv.CV_CAP_PROP_FPS, 10)
if not camera.isOpened():
print("Cannot open stream of index {}".format(stream_index))
exit(1)
print("Input stream is of resolution: {} x {}".format(camera.get(3), camera.get(4)))
conn = angus.client.connect()
service = conn.services.get_service("qrcode_decoder", version=1)
service.enable_session()
while camera.isOpened():
ret, frame = camera.read()
if not ret:
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
ret, buff = cv2.imencode(".jpg", gray, [cv2.IMWRITE_JPEG_QUALITY, 80])
buff = StringIO.StringIO(np.array(buff).tostring())
job = service.process({"image": buff})
if "data" in job.result:
pprint(job.result["data"])
cv2.imshow('original', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
service.disable_session()
camera.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
### Web cam index might be different from 0 on your setup.
### To grab a given video file instead of the host computer cam, try:
### main("/path/to/myvideo.avi")
main(0)