What is this?
fSpy is an open source, cross platform app for still image camera matching. See fspy.io for more info. The source code is available under the GPL license.
Once upon a time I wrote BLAM, a Blender add-on for still image camera calibration that, despite its clunky UI, has gained some popularity in the Blender community. fSpy is an attempt to bring BLAM's functionality to a wider audience in the form of a stand alone app.
Using the computed camera parameters in other applications
In theory, camera parameters computed by fSpy could be used in any application that has a notion of a 3D camera and provides some way of setting the camera parameters. If you're a Blender user, have a look at the offical fSpy importer add-on. If you're using an application without a dedicated importer, you may still be able to manually copy the camera parameters from fSpy.
Interested in writing an importer for your favorite application? Then the fSpy project file format spec is a good starting point.
Building and running
The following instructions are for developers. If you just want to run the app, download the latest executable for your platform.
To install necessary dependencies, run
src folder contains two subfolders
gui, containing code for the Electron main and renderer processes respectively.
Here's how to run the app in development mode
yarn dev-serverin a separate terminal tab to start the dev server
yarn build-devto build both the main and GUI code. This build step is needed to generate main process code used to start up the app.
yarn electron-devin a separate terminal tab to start an Electron instance which uses the dev server to provide automatic reloading on GUI code changes.
Creating binaries for distribution
To create executables for distribution, run
which invokes Electron builder.