I’d highly recommend my tutorial on fSpy, which explains the whole workflow:
https://www.youtube.com/watch?v=daiMOYR8GS8
But to give you some hints:
1/ determine if your image has a 1-point, 2-point or 3-point perspective
2/ align the red/green/blue lines (depending on how many vanishing points you have) with the image
3/ validate your perspective by matching the X,Y,Z vectors against various areas of the image; if they don’t match:
a) in case of a 1-point perspective - change Principal Point mode to Manual and move the principal point onto the only vanishing point your image has
b) in case of a 3-point perspective - change Principal Point mode to From 3rd vanishing point and align the third pair of lines with the image (remember that all three pairs of lines have to be mutually orthogonal in 3d space)
c) in case of a 2-point perspective - change Principal Point mode to Manual and place it somewhere on the line connecting two other vanishing points (usually this is the horizon) - it’s easy to determine the vertical coordinate, but much harder to figure out its horizontal value
4/ if you have 1-point perspective, you’ll have to set the focal length manualy; don’t do it in fSpy, because it lacks precision tools; go to Blender instead and
a) switch to fSpy camera perspective view
b) add a basic shape (such as a circle, rectangle etc.)
c) try to match it against a circle/rectangle in the image (preferably as far from the principal point as possible - usually, image edges work best)
d) if it doesn’t align well - change the focal length/FOV value of your fSpy (you have to „guess” it, there’s no automated way)
e) your guess from point (d) is probably wrong, so repeat steps c, d, e until it looks good
5/ set the origin to an object whose dimensions are known
6/ change the reference distance to the appropriate axis, align the ruler and set the dimensions (remember fSpy has this bug - you have to press enter otherwise, the value you typed disappears)
7/ import your fSpy file to Blender using the fSpy addon
8/ start modeling with objects at the origin (by setting one of their coordinates to 0) - it’s convenient to place the origin at the floor level and begin with the floor by setting its Z position to 0) - otherwise, your match will have wrong dimensions (despite proper reference distance set in fSpy)
But again - it’s best to watch my tutorial as it covers all these points and much more.
best,
bartek