python:mjpeg-server-from-webcam
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| python:mjpeg-server-from-webcam [2021/04/06 00:32] – created Wuff | python:mjpeg-server-from-webcam [2023/05/29 11:55] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 6: | Line 6: | ||
| < | < | ||
| pip3 install opencv-python pillow | pip3 install opencv-python pillow | ||
| + | </ | ||
| + | |||
| + | Usage: | ||
| + | < | ||
| + | Define camera in line 72 cv2.VideoCapture(2) refers to /dev/video2 | ||
| + | Define resolution in lines 73/74 | ||
| + | Define port in line 88 | ||
| + | |||
| + | Browser with embedded live feed: http:// | ||
| + | Direct live feed: http:// | ||
| + | Snapshot image: http:// | ||
| </ | </ | ||
| Line 21: | Line 32: | ||
| from socketserver import ThreadingMixIn | from socketserver import ThreadingMixIn | ||
| from io import StringIO, | from io import StringIO, | ||
| + | from urllib.parse import urljoin, urlparse | ||
| import time | import time | ||
| capture=None | capture=None | ||
| Line 26: | Line 38: | ||
| class CamHandler(BaseHTTPRequestHandler): | class CamHandler(BaseHTTPRequestHandler): | ||
| def do_GET(self): | def do_GET(self): | ||
| + | #remove query string from url | ||
| + | self.path=urljoin(self.path, | ||
| + | |||
| + | if self.path.endswith(' | ||
| + | self.send_response(200) | ||
| + | self.send_header(' | ||
| + | self.send_header(' | ||
| + | self.send_header(' | ||
| + | self.end_headers() | ||
| + | try: | ||
| + | rc,img = capture.read() | ||
| + | if not rc: | ||
| + | return | ||
| + | imgRGB=cv2.cvtColor(img, | ||
| + | jpg = Image.fromarray(imgRGB) | ||
| + | jpg.save(self.wfile,' | ||
| + | except: | ||
| + | return | ||
| if self.path.endswith(' | if self.path.endswith(' | ||
| self.send_response(200) | self.send_response(200) | ||
python/mjpeg-server-from-webcam.1617665536.txt.gz · Last modified: (external edit)