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() #запускаем трансляцию #поток обработки кадров frameHandlerThread = FrameHandlerThread(rpiCamStreamer) frameHandlerThread.start() #запускаем обработку try: while True: print ('CPU temp: %.2f°C. CPU use: %.2f%%' % (rpicam.getCPUtemperature(), psutil.cpu_percent())) time.sleep(1) except (KeyboardInterrupt, SystemExit): print('Ctrl+C pressed') #останавливаем обработку кадров frameHandlerThread.stop() #останов трансляции c камеры rpiCamStreamer.stop() rpiCamStreamer.close() print('End program')
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() #запускаем обработку
def start(self): print('SK_GStreamer started') # видеопоток с робота self.robotCamStreamer = rpicam.RPiCamStreamer( FORMAT, RESOLUTION, FRAMERATE, (IP_PULT, PORT_GS)) #, self.onFrameCallback) # self.robotCamStreamer.setRotation(180) self.robotCamStreamer.start()
def __init__(self, Format, resolution, framerate, host, port): super(SKVideo_RPicam_Transmiter, self).__init__() self.daemon = True self.Format = Format self.resolution = resolution self.framerate = framerate self.host = host self.port = port self.robotCamStreamer = rpicam.RPiCamStreamer(self.Format, self.resolution, self.framerate, (self.host, self.port), self.onFrameCallback)
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__) #создаем трансляцию с камеры (тип потока 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() #запускаем трансляцию #поток обработки кадров frameHandlerThread = FrameHandlerThread(rpiCamStreamer) frameHandlerThread.start() #запускаем обработку #главный цикл программы try: while True: print('CPU temp: %.2f°C. CPU use: %.2f%%' % (rpicam.getCPUtemperature(), psutil.cpu_percent())) time.sleep(1)
# Получаем свой IP адрес #ip = rpicam.getIP() ip = '10.42.0.69' assert ip != '', 'Invalid IP address' print('Robot IP address: %s' % ip) print('OpenCV version: %s' % cv2.__version__) print('initiating Serial communication with Arduino') try: ser = serial.Serial('/dev/ttyACM0', 115200, timeout=1) print('--conneced sucsesfuly') except: print('--cant connected to arduino(') rpiCamStreamer = rpicam.RPiCamStreamer(FORMAT, RESOLUTION, FRAMERATE) #задаем порт и хост куда шлем видео rpiCamStreamer.setPort(RTP_PORT) rpiCamStreamer.setHost(IP) #robotCamStreamer.setFlip(False, True) #отражаем кадр (вертикальное отражение, горизонтальное отражение) rpiCamStreamer.setRotation( 180) #поворачиваем кадр на 180 град, доступные значения 90, 180, 270 rpiCamStreamer.start() #запускаем тра #нужно для корректной работы системы GObject.threads_init() mainloop = GObject.MainLoop() # XML-RPC сервер управления в отдельном потоке serverControl = SimpleXMLRPCServer((ip, CONTROL_PORT)) #запуск XMLRPC сервера serverControl.logRequests = False #оключаем логирование