Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as Python by xxxd ( 7 years ago )
#!/usr/bin/python
'''
	orig author: Igor Maculan - [email protected]
	A Simple mjpg stream http server
'''
import cv2
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
import time
from SocketServer import ThreadingMixIn
from threading import Thread
import os

capture=None

class CamHandler(BaseHTTPRequestHandler):
	def do_GET(self):
		print self.path
		if self.path.endswith('.mjpg'):
			self.send_response(200)
			self.send_header('Content-type','multipart/x-mixed-replace; boundary=--jpgboundary')
			self.end_headers()
			while True:
				try:
					'''
					rc,img = capture.read()
					if not rc:
						continue
					#imgRGB = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
					r, buf = cv2.imencode(".jpg",img)
					'''
					buf = open(imgPath, 'rb').read()
					self.wfile.write("--jpgboundary\r\n")
					self.send_header('Content-type','image/jpeg')
					self.send_header('Content-length',str(len(buf)))
					self.end_headers()
					self.wfile.write(bytearray(buf))
					self.wfile.write('\r\n')
					time.sleep(0.3)
				except KeyboardInterrupt:
					break
			return
		if self.path.endswith('.html') or self.path=="/":
			self.send_response(200)
			self.send_header('Content-type','text/html')
			self.end_headers()
			self.wfile.write('<html><head></head><body>')
			self.wfile.write('<img src="http://127.0.0.1:9090/cam.mjpg"/>')
			self.wfile.write('</body></html>')
			return

def capturer():
	stopCap = False
	while not stopCap:
		rc,img = capture.read()
		if not rc:
			continue
		#cv2.imwrite(imgPath, img)
		r,buf = cv2.imencode(".jpg", img)
		open(imgPath, 'wb').write(buf)
		time.sleep(0.5)

class ThreadingHTTPServer(ThreadingMixIn, HTTPServer):
	pass

def main():
	global capture, imgPath, stopCap
	imgPath = "/tmp/img.mjpg"
	capture = cv2.VideoCapture(0)
	capture.set(cv2.CAP_PROP_FRAME_WIDTH, 320);
	capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 240);
	Thread(target=capturer).start()
	try:
		server = ThreadingHTTPServer(('0.0.0.0',9090),CamHandler)
		print "server started"
		server.serve_forever()
	except KeyboardInterrupt:
		stopCap = True
		capture.release()
		#server.socket.close()
		server.shutdown()
		os._exit(0)

if __name__ == '__main__':
	main()

 

Revise this Paste

Your Name: Code Language: