Beispiel #1
0
def transmit():
    global frameHandlerThread
    global IP_RTP
    global RTP_PORT
    print('Start transmit...')
    #проверка наличия камеры в системе  
    assert rpicam.checkCamera(), 'Raspberry Pi camera not found'
    print('Raspberry Pi camera found')

    print('OpenCV version: %s' % cv2.__version__)


    FORMAT = rpicam.VIDEO_MJPEG #поток MJPEG
    WIDTH, HEIGHT = 320, 240
    RESOLUTION = (WIDTH, HEIGHT)
    FRAMERATE = 30


    rpiCamStreamer = rpicam.RPiCamStreamer(FORMAT, RESOLUTION, FRAMERATE)
    rpiCamStreamer.setPort(RTP_PORT)
    rpiCamStreamer.setHost(IP_RTP)
    
    rpiCamStreamer.start() #запускаем трансляцию

    #поток обработки кадров    
    frameHandlerThread = FrameHandlerThread(rpiCamStreamer)
    frameHandlerThread.start() #запускаем обработку
Beispiel #2
0
    def setFrame(self, frame): #задание нового кадра для обработки
        if not self._newFrameEvent.is_set(): #если обработчик готов принять новый кадр
            self._frame = frame
            self._newFrameEvent.set() #задали событие
        return self._newFrameEvent.is_set()

                
def onFrameCallback(frame): #обработчик события 'получен кадр'
    #print('New frame')
    frameHandlerThread.setFrame(frame) #задали новый кадр

print('Start program')

#проверка наличия камеры в системе  
assert rpicam.checkCamera(), 'Raspberry Pi camera not found'
print('Raspberry Pi camera found')

print('OpenCV version: %s' % cv2.__version__)



#главный цикл программы
def run():
    #создаем трансляцию с камеры (тип потока h264/mjpeg, разрешение, частота кадров, хост куда шлем, функция обрабтчик кадров)
    rpiCamStreamer = rpicam.RPiCamStreamer(FORMAT, RESOLUTION, FRAMERATE, (IP, RTP_PORT), onFrameCallback)
    #robotCamStreamer.setFlip(False, True) #отражаем кадр (вертикальное отражение, горизонтальное отражение)
    rpiCamStreamer.setRotation(180) #поворачиваем кадр на 180 град, доступные значения 90, 180, 270
    rpiCamStreamer.start() #запускаем трансляцию

    #поток обработки кадров