Created
April 1, 2018 06:01
-
-
Save walchko/5c5245508e78dc342d23b086186e1457 to your computer and use it in GitHub Desktop.
bottle cv2 mjpeg server
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python2 | |
| # https://gist.github.com/ph1ee/58d55a736462cc2f4f2d | |
| from gevent import monkey; monkey.patch_all() | |
| from bottle import route, run, template, request, response | |
| import cv2 | |
| from bottle import debug | |
| debug(True) | |
| CRLF = "\r\n" | |
| class MJPEG(object): | |
| def __init__(self): | |
| self.cap = cv2.VideoCapture(0) | |
| def __del__(self): | |
| self.cap.release() | |
| def __iter__(self): | |
| return self | |
| def next(self): | |
| try: | |
| ret, img = self.cap.read() | |
| if ret: | |
| ret, jpg = cv2.imencode('.jpg', img) | |
| if ret: | |
| out = "--jpgboundary" | |
| out += "Content-type: image/jpeg" + CRLF | |
| out += "Content-length: " + str(jpg.size) + CRLF + CRLF | |
| print('loop') | |
| return out + jpg.tostring() | |
| return "error" | |
| except: | |
| exit() | |
| def stop(self): | |
| pass | |
| @route('/ip') | |
| def show_ip(): | |
| ip = request.environ.get('REMOTE_ADDR') | |
| # or ip = request.get('REMOTE_ADDR') | |
| # or ip = request['REMOTE_ADDR'] | |
| return template("Your IP is: {{ip}}", ip=ip) | |
| @route('/hello/<name>') | |
| def index(name): | |
| return template('<b>Hello {{name}}</b>!', name=name) | |
| @route('/image') | |
| def capture(): | |
| response.headers['Content-Type'] = 'multipart/x-mixed-replace; boundary=--jpgboundary' | |
| return iter(MJPEG()) | |
| @route('/bye') | |
| def ret(): | |
| d = {'a': 5} | |
| return d # automagically converts to json | |
| run(host='localhost', port=8080, server='gevent') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment