https://github.com/elicdavis/sfm
Utilities for interacting with SFM Data in golang
https://github.com/elicdavis/sfm
colmap meshroom opensfm photogrammetry sfm
Last synced: 6 months ago
JSON representation
Utilities for interacting with SFM Data in golang
- Host: GitHub
- URL: https://github.com/elicdavis/sfm
- Owner: EliCDavis
- License: mit
- Created: 2024-01-10T03:38:33.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-11T15:19:55.000Z (about 1 year ago)
- Last Synced: 2024-06-21T20:09:49.501Z (11 months ago)
- Topics: colmap, meshroom, opensfm, photogrammetry, sfm
- Language: Go
- Homepage:
- Size: 9.77 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SFM
Structs for interacting with reconstruction data from different SFM programs
* COLMAP
* Cameras
* Points
* OpenSFM
* reconstruction.json
* Meshroom
* cameras.sfm## COLMAP
### Point Data
Interact with COLMAPS's `points3D.bin` file output under the sparse reconstruction data.
```golang
package exampleimport (
"fmt""github.com/EliCDavis/sfm/colmap"
)func main() {
points, err := colmap.LoadPoints3DBinary("ColmapProject/sparse/0/points3D.bin")
if err != nil {
panic(err)
}fmt.Printf("File contains %d points", len(points))
}```
### Cameras
Interact with COLMAPS's `cameras.bin` file output under the sparse reconstruction data.
```golang
package exampleimport (
"fmt""github.com/EliCDavis/sfm/colmap"
)func main() {
cameras, err := colmap.LoadCamerasBinary("ColmapProject/sparse/0/cameras.bin")
if err != nil {
panic(err)
}fmt.Printf("File contains %d cameras", len(cameras))
}```
## Meshroom
Interact with Meshroom's `cameras.sfm` file output from the `StructureFromMotion` step.
```golang
package exampleimport (
"fmt""github.com/EliCDavis/sfm/meshroom"
)func main() {
cameras, err := meshroom.LoadCameras("MeshroomProject/MeshroomCache/StructureFromMotion/abc123/cameras.sfm")
if err != nil {
panic(err)
}fmt.Printf("File contains %d Poses", len(cameras.Poses))
}
```## OpenSFM
Interact with OpenSFM's `reconstruction.json` file output from the `reconstruct` step.
```golang
package exampleimport (
"fmt""github.com/EliCDavis/sfm/opensfm"
)func main() {
reconstructions, err := opensfm.LoadReconstruction("MyOpenSFMProject/reconstruction.json")
if err != nil {
panic(err)
}fmt.Printf("File contains %d reconstructions", len(reconstructions))
}
```