import cv2
import time
import os
import numpy as np



# class VideoStreaming(object):
#     def __init__(self):
#         super(VideoStreaming, self).__init__()
#         self.VIDEO = cv2.VideoCapture('rtsp://astrodom:hdci12@192.168.170.73:554/stream1')

#         self.MODEL = ObjectDetection()

#         self._preview = True
#         self._flipH = False
#         self._detect = False
#         self._exposure = self.VIDEO.get(cv2.CAP_PROP_EXPOSURE)
#         self._contrast = self.VIDEO.get(cv2.CAP_PROP_CONTRAST)

#     @property
#     def preview(self):
#         return self._preview

#     @preview.setter
#     def preview(self, value):
#         self._preview = bool(value)

#     @property
#     def flipH(self):
#         return self._flipH

#     @flipH.setter
#     def flipH(self, value):
#         self._flipH = bool(value)

#     @property
#     def detect(self):
#         return self._detect

#     @detect.setter
#     def detect(self, value):
#         self._detect = bool(value)

#     @property
#     def exposure(self):
#         return self._exposure

#     @exposure.setter
#     def exposure(self, value):
#         self._exposure = value
#         self.VIDEO.set(cv2.CAP_PROP_EXPOSURE, self._exposure)

#     @property
#     def contrast(self):
#         return self._contrast

#     @contrast.setter
#     def contrast(self, value):
#         self._contrast = value
#         self.VIDEO.set(cv2.CAP_PROP_CONTRAST, self._contrast)

#     def show(self):
#         while(self.VIDEO.isOpened()):
#             ret, snap = self.VIDEO.read()
#             if self.flipH:
#                 snap = cv2.flip(snap, 1)

#             if ret == True:
#                 if self._preview:
#                     # snap = cv2.resize(snap, (0, 0), fx=0.5, fy=0.5)
#                     if self.detect:
#                         snap = self.MODEL.detectObj(snap)

#                 else:
#                     snap = np.zeros((
#                         int(self.VIDEO.get(cv2.CAP_PROP_FRAME_HEIGHT)),
#                         int(self.VIDEO.get(cv2.CAP_PROP_FRAME_WIDTH))
#                     ), np.uint8)
#                     label = "camera disabled"
#                     H, W = snap.shape
#                     font = cv2.FONT_HERSHEY_PLAIN
#                     color = (255, 255, 255)
#                     cv2.putText(snap, label, (W//2 - 100, H//2),
#                                 font, 2, color, 2)

#                 frame = cv2.imencode(".jpg", snap)[1].tobytes()
#                 yield (b'--frame\r\n'b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
#                 time.sleep(0.01)

#             else:
#                 break
#         print("off")


class VideoStreaming(object):
    def __init__(self):
        self.video = cv2.VideoCapture(0)
    def __del__(self):
        self.video.release()
    def get_frame(self):
        ret, frame = self.video.read()
        ret, jpg = cv2.imencode('.jpg', frame)
        return jpg.toByte()