예제 #1
0
 def readStream(self):
     gpCam = GoProCamera.GoPro()
     cap = cv2.VideoCapture("udp://127.0.0.1:10000")
     while True:
         ret, frame = cap.read()
         if ret == True:
             self.frame = frame
예제 #2
0
def main():
    wireless = Wireless()

    print("Switching to GoPro SSID={}...".format(Config.GoPro.SSID))
    wireless.connect(ssid=Config.GoPro.SSID, password=Config.GoPro.SSID_PASS)
    print("Connected to GoPro SSID")

    sleep(2)  # sleep since it takes time for network connection to establish

    print("Connecting to GoPro...")
    gopro = GoProCamera.GoPro()
    print("GoPro connected")

    print("Downloading media...")
    media = gopro.downloadAll(media_type=Config.MEDIA_TYPE,
                              dest_folder=Config.MEDIA_DEST_FOLDER)
    print("Download complete")

    if (Config.GoPro.is_power_off_when_done):
        print("Powering off GoPro...")
        gopro.power_off()
        print("GoPro powered off")

    print("Switching to Home SSID={}...".format(Config.HomeNetwork.SSID))
    wireless.connect(ssid=Config.HomeNetwork.SSID,
                     password=Config.HomeNetwork.SSID_PASS)
    print("Connected to Home SSID")

    sleep(2)

    print("Starting upload to Google Photos...")
    googlephotos.upload_folder(os.path.abspath(Config.MEDIA_DEST_FOLDER),
                               album=Config.GooglePhotos.DEST_ALBUM,
                               auth_file=Config.GooglePhotos.CREDENTIALS_PATH)
    print("Upload to Google Photos complete")
예제 #3
0
파일: main.py 프로젝트: congduy/gopropyapi
 def test_has_sd_card(self):
     print("Needs an SD card")
     time.sleep(SLEEP_SEC)
     self.gopro = GoProCamera.GoPro()
     self.assertFalse(
         self.gopro.getStatus(constants.Status.Status,
                              constants.Status.STATUS.RemainingSpace) == 0)
예제 #4
0
    def set(self, attempt=1):

        if (attempt > 5):
            return None

        try:
            print('%s: Connection attempt #%d ' %
                  (self.GoProWifiSSID, attempt))

            GoProNetworkSetup = "/usr/sbin/networksetup -setairportnetwork en0 '%s' '%s'" % (
                self.GoProWifiSSID, self.GoProWifiPassword)
            GoProNetworkSetupOutput = subprocess.run(GoProNetworkSetup,
                                                     stdout=subprocess.PIPE,
                                                     shell=True)

            # Settle to allow WIFI to connect to GoPro
            time.sleep(10)

            GoProNetworkGetSSID = "/usr/sbin/networksetup -listallhardwareports | /usr/bin/awk '/Wi-Fi/{getline; print $2}' | /usr/bin/xargs /usr/sbin/networksetup -getairportnetwork | /usr/bin/awk -F\"Network: \" '/Network:/{print $2}'"
            GoProNetworkGetSSIDOutput = subprocess.run(GoProNetworkGetSSID,
                                                       stdout=subprocess.PIPE,
                                                       shell=True)

            if (GoProNetworkGetSSIDOutput.stdout.strip().decode("utf-8") !=
                    self.GoProWifiSSID):
                raise Exception("Incorrect WIFI")
            # Connect to GoPro
            self.GoProCameraInstance = GoProCamera.GoPro()

            return self.GoProCameraInstance

        except Exception as e:
            return self.set((attempt + 1))
예제 #5
0
def main():
    while True:
        try:
            print("Connect to GoPro")
            gpCam = GoProCamera.GoPro()

            print(gpCam)
            if gpCam is None:
                continue

            print("Downloading all the files...")
            media = gpCam.downloadAll()

            print("Deleting all files")
            gpCam.delete(len(media))

            print("Copying files to Yandex.Disk")
            files = os.listdir()
            cwd = os.getcwd()
            videos = list(filter(lambda x: x.endswith('MP4'), files))
            local_videos = list(map(lambda x: os.path.join(cwd, x), videos))
            yandex_videos = list(
                map(lambda x: os.path.join(YANDEX_DISK_FOLDER, x), videos))

            paths = zip(local_videos, yandex_videos)

            for from_path, to_path in paths:
                print("Copying {} to {}".format(from_path, to_path))
                os.rename(from_path, to_path)

        except:
            print("Can't connect to GoPro")
            sleep(5)
            continue
예제 #6
0
def create_gopro(mock_image_paths):
    if mock_image_paths is None or len(mock_image_paths) == 0:
        gopro = GoProCamera.GoPro()
        gopro.mode(constants.Mode.PhotoMode)
        return RealGoPro(gopro)
    else:
        return MockGoPro(mock_image_paths)
예제 #7
0
def main_gopro(loopControl: threading.Event):
    # get GoPro
    logger.info("Connecting to GoPro ...")
    cam = GoProCamera.GoPro()
    if cam.getStatusRaw():
        # set GoPro to video mode
        setCamVideoMode(cam)

        # listen to gamecontroller
        logger.info("Listen to GameController")
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
        s.bind(('', 3838))
        s.settimeout(5)  # in sec

        # status monitor and cam keep alive thread
        status = CamStatus(cam, 1)
        status.start()

        # start main loop
        main_loop(cam, status, s, loopControl)

        # stop status listener
        status.stop()
        # close socket
        s.close()
예제 #8
0
 def __init__(self):
     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     gopro = GoProCamera.GoPro(ip_address=GoProCamera.GoPro.getWebcamIP("usb" + str(args[1])), camera=constants.gpcontrol, webcam_device="usb" + str(args[1]))
     gopro.webcamFOV(constants.Webcam.FOV.Narrow)
     gopro.startWebcam(resolution="720")
     self.cap = cv2.VideoCapture("udp://172.21.173.54:8554?overrun_nonfatal=1&fifo_size=50000000", cv2.CAP_FFMPEG)
     self.pub = rospy.Publisher('gopro_image', Image, queue_size=10)
예제 #9
0
 def __init__(self):
     self.gpCam = GoProCamera.GoPro()
     self.gpCam.video_settings("1080p", "60")
     self.CameraInfo = self.gpCam.infoCamera()
     self.CameraName = self.CameraInfo['serial_number']
     self.BarCodeScan = None
     self.Clip = None
예제 #10
0
    def connect_goPro(self):
        self.goproCamera = GoProCamera.GoPro()

        self.videosLeft.setText(
            self.get_status("video_left",
                            constants.Status.STATUS.RemVideoTime))
        self.currentMode.setText(
            self.get_status("mode", constants.Status.STATUS.Mode))
        self.currentResolution.setText(
            self.get_status("video_res", constants.Video.RESOLUTION))
        self.currentFramerate.setText(
            self.get_status("video_fr", constants.Video.FRAME_RATE))
        self.currentSubmode.setText(
            self.get_status("sub_mode", constants.Status.STATUS.SubMode))
        self.battery.setText(
            self.get_status("battery", constants.Status.STATUS.BatteryLevel))

        self.connection.setText("Connected")

        self.ip_to_stream_to.setText(self.get_ip_address())

        self.streamWorker = MainApp.StreamingWorker(
            self.goproCamera, self.ip_to_stream_to.text(),
            self.stream_quality.currentText().lower())

        self.streamWorker.moveToThread(self.thread)

        self.thread.started.connect(self.streamWorker.run)
        self.streamWorker.finished.connect(self.thread.quit)
        self.streamWorker.finished.connect(self.streamWorker.deleteLater)
        self.thread.finished.connect(self.thread.deleteLater)
예제 #11
0
파일: main.py 프로젝트: congduy/gopropyapi
 def test_photo_mode(self):
     print("PHOTO MODE")
     time.sleep(SLEEP_SEC)
     self.gopro = GoProCamera.GoPro()
     self.assertEqual(
         self.gopro.mode(constants.Mode.PhotoMode,
                         constants.Mode.SubMode.Photo.Single_H5), RESP_OK)
예제 #12
0
    def __init__(self):

        threading.Thread.__init__(self)

        self.cam = GoProCamera.GoPro()

        self.runningTime = 0
예제 #13
0
def init():
    global tests
    tests = pd.DataFrame(list(itertools.product(*list(settings.values()))),
                         columns=list(settings.keys()))
    print(tests.columns, tests.shape)
    gpCam = GoProCamera.GoPro()
    print(gpCam.getStatusRaw())
    return gpCam
예제 #14
0
    def test_init_pair(self):
        def fakepair(self):
            self.paired = True

        with self.monkeypatch.context() as m:
            m.setattr(GoProCamera.GoPro, 'pair', fakepair)
            self.goprocam = GoProCamera.GoPro(camera='startpair')
        assert self.goprocam.paired
예제 #15
0
def get_files_from_gopro():

    gpCam = GoProCamera.GoPro()
    try:
        gpCam.downloadAll()
    except:
        print("Looks like an error")
        get_files_from_gopro()
예제 #16
0
def startRecording(cameraNumber):
    connectToCamera(cameraNumber)
    gp1 = GoProCamera.GoPro()
    gp1.overview()
    if recordCmd == 'y':
        gp1.shutter(constants.start)
    if gp1.IsRecording() == 1:
        print('First camera IsRecording confirmation: YES, RECORDING NOW')
예제 #17
0
def takeVideo(time):
    signal(SIGINT, handler)
    gopro = GoProCamera.GoPro(ip_address=GoProCamera.GoPro.getWebcamIP())
    gopro.video_settings("480p", fps='30')
    gopro.shoot_video(time)
    gopro.downloadLowRes(custom_filename=(location + "plaintext/" +
                                          numFiles() + ".mp4"))
    gopro.delete("last")
예제 #18
0
파일: main.py 프로젝트: congduy/gopropyapi
 def test_shutter(self):
     print("SHUTTER START")
     time.sleep(SLEEP_SEC)
     self.gopro = GoProCamera.GoPro()
     self.assertEqual(self.gopro.shutter(constants.start), RESP_OK)
     time.sleep(4)
     self.assertEqual(self.gopro.hilight(), RESP_OK)
     time.sleep(2)
     self.assertEqual(self.gopro.shutter(constants.stop), RESP_OK)
 def take_a_photo(self):
     gpCam = GoProCamera.GoPro(constants.auth)
     gpCam.take_photo(1)
     time.sleep(2)
     save_path = self.visual_save_path
     filename = save_path + str(round(time.time())) + ".jpg"
     gpCam.downloadLastMedia(custom_filename=filename)
     time.sleep(1)
     gpCam.delete("all")
예제 #20
0
def take_photo(interface):
    gopro = GoProCamera.GoPro(
        ip_address=GoProCamera.GoPro.getWebcamIP(interface),
        camera=constants.gpcontrol,
        webcam_device=interface)
    while True:
        gopro.take_photo()
        time.sleep(2)
        print("Photo taken")
예제 #21
0
def ensureCamAlive(cameraNumber):
    connectToCamera(cameraNumber)
    gp1 = GoProCamera.GoPro()
    try:
        print('Attempting to send KeepAlive command...')
        gp1.KeepAlive()
        print('Keep Alive Sent')
    except:
        print('GoPro Definitely Dead or KeepAlive command DOES NOT WORK')
예제 #22
0
def setup_gopro():

    global goproCamera
    #initiating object for go pro camera
    goproCamera = GoProCamera.GoPro()
    #camera settings adjusted
    goproCamera.gpControlSet(constants.Photo.RESOLUTION,
                             constants.Photo.Resolution.R12W)
    goproCamera.locate(constants.Locate.Start)
    return
예제 #23
0
def connect_camera():
    """ Connect the camera, will return the object, it can be NoneType """

    from goprocam import GoProCamera, constants
    connect_wifi('GOPRO')
    time.sleep(20)
    gp = GoProCamera.GoPro(mac_address=_.DEFAULT_MAC)

    gp.mode('0')
    gp.mode('1')
    return gp
예제 #24
0
    def __init__(self):
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        gopro = GoProCamera.GoPro(
            ip_address=GoProCamera.GoPro.getWebcamIP("usb1"),
            camera=constants.gpcontrol,
            webcam_device="usb1")  #getWebCamIPにはGoProのネットワークインターフェース名を入力
        gopro.webcamFOV(constants.Webcam.FOV.Narrow)

        gopro.startWebcam(resolution="720")
        self.cap = cv2.VideoCapture(
            "udp://172.21.173.54:8554?overrun_nonfatal=1&fifo_size=50000000",
            cv2.CAP_FFMPEG)
예제 #25
0
 def connectGoProCamera(self):
     self.gopro = GoProCamera.GoPro()
     if self.gopro:
         self.connectionStatusLabel.setStyleSheet("QLabel {color: green}")
         self.connectionStatusLabel.setText("CONNECTED")
         self.gopro.mode(constants.Mode.PhotoMode)
         self.setWorkingDirectoryButton.setEnabled(True)
         self.getGoProImageButton.setEnabled(True)
         self.tagImageButton.setEnabled(True)
         self.saveImageButton.setEnabled(True)
         self.setGoProOffButton.setEnabled(True)
         self.setGoProOnButton.setEnabled(False)
예제 #26
0
def start_timelapse(interface):
    gopro = GoProCamera.GoPro(ip_address=GoProCamera.GoPro.getWebcamIP(
        interface), camera=constants.gpcontrol, webcam_device=interface)
    logging.info(
        "Started goprocam instance with interface {}".format(interface))
    gopro.gpControlSet(constants.Setup.VOICE_CONTROL,
                       constants.Setup.VoiceControl.OFF)
    gopro.gpControlSet(constants.Setup.AUTO_OFF, constants.Setup.AutoOff.Never)
    logging.info("All config set")
    gopro.mode(constants.Mode.MultiShotMode,
               constants.Mode.SubMode.MultiShot.NightLapse)
    gopro.shutter(constants.start)
    logging.info("Started timelapse")
예제 #27
0
    def __init__(self, starting_led_index, total_leds, background_interval):
        self.leds = []
        self.starting_led_index = starting_led_index
        self.background_interval = background_interval
        self.total_leds = total_leds

        self.cam = GoProCamera.GoPro()
        self.ser = serial.Serial(port=SERIAL_PORT,
                                 baudrate=9600,
                                 parity=serial.PARITY_NONE,
                                 stopbits=serial.STOPBITS_ONE,
                                 bytesize=serial.EIGHTBITS,
                                 timeout=1)
        self.clear_leds()
예제 #28
0
def processStream(q, a):
	gpCam = GoProCamera.GoPro()
	cap = cv2.VideoCapture("udp://127.0.0.1:10000")
	img = np.zeros((480,640,3))
	x = 280
	y = 280
	while True:
		for i in range(4):
			ret, frame = cap.read()
			
		if ret == True:
			pos = detect_spheres(frame)
			
			'''
			# Hack
			x += 1
			pos = (x, y)
			'''
			
			if (pos == (None, None)):
				continue
			
			x_b = int(pos[0] - a[0] * 1.4)
			y_b = int(pos[1])
			
			x_l = int(pos[0])
			y_l = int(pos[1] - a[1] * 1.4)
			
			x_r = int(pos[0])
			y_r = int(pos[1] + a[2] * 1.4)
			
			x_fl = int(pos[0] + a[3] * 1.4)
			y_fl = int(pos[1])
			
			x_fr = int(pos[0] + a[4] * 1.4)
			y_fr = int(pos[1])
			
			cv2.circle(img, (x_b, y_b), 3, (0, 255, 0), thickness=-1)
			cv2.circle(img, (x_l, y_l), 3, (0, 255, 0), thickness=-1)
			cv2.circle(img, (x_r, y_r), 3, (0, 255, 0), thickness=-1)
			cv2.circle(img, (x_fl, y_fl), 3, (0, 255, 0), thickness=-1)
			cv2.circle(img, (x_fr, y_fr), 3, (0, 255, 0), thickness=-1)
			
			q.put(img)
			# (480, 640, 3) -> ~138 pixels per meter
			# Or 1.4 pixels per cm
		
	cap.release()
	cv2.destroyAllWindows()
예제 #29
0
    def capture(self):
        #camera = self.ids['camera']
        takax = ObjectProperty(None)
        takan = ObjectProperty(None)


        gpc = GoProCamera.GoPro(constants.auth)
        gpc.mode(constants.Hero3Commands.Mode.PhotoMode)
        gpc.delete(option="all")
        gpc.downloadLastMedia(gpc.take_photo(), custom_filename="x.jpg")
        print("we took an image")

        file = "x.jpg"
        wimg = Image(source=file, width=480, allow_stretch=True)
        self.inside.add_widget(wimg)
예제 #30
0
def main():
    gopro = GoProCamera.GoPro()

    def gopro_thread():
        gopro.stream("udp://127.0.0.1:10000", quality="low")
        pass

    t1 = FuncThread(gopro_thread)
    t1.daemon = True
    t1.start()
    camera = Camera()

    port = int(os.environ.get("PORT", 8000))
    app = create_app(camera, gopro)
    app.run(host="0.0.0.0", port=port)