parser.add_argument('--quality', help='jpeg quality', type=int, default=30) args = parser.parse_args() QUALITY = args.quality def encode(frame): imgRGB = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) jpg = Image.fromarray(imgRGB) tmpFile = BytesIO() jpg.save(tmpFile, 'JPEG', quality=QUALITY) #print('encoded', tmpFile.getbuffer().nbytes) return tmpFile cam = Camera(args.size, args.dev, debug=False, transf=lambda s: map(encode, s)) stop = False def signal_handler(signal, frame): global stop cam.stop() stop = True sys.exit(0) signal.signal(signal.SIGINT, signal_handler) class CamHandler(BaseHTTPRequestHandler):
def getframe(): ret, frame = cap.read() return cv.cvtColor(frame, cv.COLOR_BGR2RGB) elif False: from umucv.stream import autoStream stream = autoStream() def getframe(): _, frame = next(stream) return cv.cvtColor(frame, cv.COLOR_BGR2RGB) else: # captura asíncrona en un hilo # para devolver siempre el frame más reciente from umucv.stream import Camera cam = Camera() def getframe(): return cv.cvtColor(cam.frame, cv.COLOR_BGR2RGB) def send_image(imgRGB): # para evitar un archivo intermedio en disco image = Image.fromarray(imgRGB, mode='RGB') byte_io = BytesIO() image.save(byte_io, 'PNG') byte_io.seek(0) return send_file(byte_io, mimetype='image/png') app = Flask(__name__)
if args.preview: for key, frame in autoStream(): cv.imshow("test", process(frame)) cv.destroyAllWindows() def encode(frame): imgRGB = cv.cvtColor(frame, cv.COLOR_BGR2RGB) jpg = Image.fromarray(imgRGB) tmpFile = BytesIO() jpg.save(tmpFile, 'JPEG', quality=args.quality) #print('encoded', tmpFile.getbuffer().nbytes) return tmpFile cam = Camera(debug=False) stop = False def signal_handler(signal, frame): global stop cam.stop() stop = True sys.exit(0) signal.signal(signal.SIGINT, signal_handler) class CamHandler(BaseHTTPRequestHandler):
from io import StringIO, BytesIO import time from umucv.stream import Camera from umucv.util import sourceArgs import signal import sys import argparse parser = argparse.ArgumentParser() sourceArgs(parser) parser.add_argument('--quality', help='jpeg quality', type=int, default=30) args = parser.parse_args() cam = Camera(args.size, args.dev) QUALITY = args.quality stop = False def signal_handler(signal, frame): global stop cam.stop() stop = True sys.exit(0) signal.signal(signal.SIGINT, signal_handler)
#!/usr/bin/env python import cv2 as cv from umucv.stream import Camera def work(img, n): r = img for _ in range(n): r = cv.medianBlur(r, 17) return r #cam = Camera((640,480),'0',debug=True) cam = Camera(debug=True) t = 0 while True: key = cv.waitKey(1) & 0xFF if key == 27: break if cam.time == t: continue t = cam.time cv.imshow('webcam', work(cam.frame, 20)) print('WORK {:.0f}'.format(cam.clock.time())) cam.stop() cv.destroyAllWindows()
import threading from io import BytesIO from PIL import Image import cv2 as cv from umucv.stream import Camera from dotenv import load_dotenv load_dotenv() updater = Updater(os.environ['TOKEN']) Bot = updater.bot cam = Camera() def shutdown(): updater.stop() updater.is_idle = False cam.stop() def stop(update, _): cid = update.message.chat_id if cid != os.environ['USER_ID']: return update.message.reply_text('Bye!') threading.Thread(target=shutdown).start()