Any code that modifies visual components in JavaFX needs to be run from the JavaFX application thread -- it can't be run directly from a separate thread.
However, the separate thread (e.g. the Runnable you've created) can ask the JavaFX thread to run some code the next chance it gets. This is done using:
Platform.runLater(() -> { /* set label text or do other gui stuff here */ }).
Note: We did this in the early lab that involved having a separate thread causing the video to auto-play. We also used this code in the handleTrackedFrame(...) method that gets called by the AutoTracker's separate thread.