Name | calicam JSON |
Version |
0.0.3
JSON |
| download |
home_page | |
Summary | GUI tool for calibrating motion capture systems composed of multiple standard webcams |
upload_time | 2023-01-30 17:41:04 |
maintainer | |
docs_url | None |
author | |
requires_python | >=3.10 |
license | |
keywords |
opencv
tracking
calibration
python
webcam
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Current Functionality
To launch the primary functionality of the repo, run `src\gui\main.py`. This will open an ugly dialog to begin a calibration session. Session data is stored in the `sessions` folder in the root directory. The session being launched is coded at the bottom of `main.py`. The general workflow:
1. Print out a charuco board from the Charuco Builder tab
2. Click "Find Additional Cameras" to connect to them
3. Go to the camera tabs and configure resolution/exposure before collecting calibration corners and calibrating.
4. Save calibration parameters on camera tab
5. Once all cameras intrinsic factors are estimated, click the stereocalibration button and calibrate each pair of cameras.
6. Save calibration to `config.toml`.
# Recording
The file `src\recording\video_recorder.py` will launch a VideoRecorder and store the mp4 and frametime data in the session folder.
# Triangulating
Recorded video can be played back through the synchronizer with synched frames passed to the PairedPointStream which uses the charuco tracker to identify the same point in space between paired frames. Point ID and (X,Y) position for each frame are passed to an `out_q`. The triangulator pulls from this queue, calculates values for ID: (X,Y,Z) and places that calculation on its own `out_q`
# Visualization
The Visualizer constructs camera meshes based on `config.toml` to allow a gut check of the stereocalibration parameters. The camera mesh shape is determined by the actual camera properties and provides another way of assessing reasonableness at a glance. (X,Y,Z) points are read from `triangulator.out_q` and updated to the scene.
Currently, the origin is the base camera from the stereocalibration pair. Next planned steps include a way to set the origin.
## Current Object Relationships
The general flow of processing is illustrated in the graph below. This does not represent any of the GUI elements which are still a work in progress. My immediate next steps are to stabilize the GUI, making it easier to incorporate the full set of actions that are currently permitted by the back-end of the code base.
```mermaid
graph TD
subgraph cameras
Camera --> LiveStream
LiveStream --> Synchronizer
end
subgraph calibration
Charuco --> CornerTracker
CornerTracker --> Monocalibrator
CornerTracker --> Stereocalibrator
end
Synchronizer --> Stereocalibrator
LiveStream --> Monocalibrator
subgraph calibration_data
config.toml
StereoCalRecordings
end
Stereocalibrator -.via Session.-> config.toml
calibration -.via Session.-> StereoCalRecordings
Monocalibrator -.via Session.-> config.toml
calibration_data --> ArrayConstructor
subgraph array
ArrayConstructor
end
Synchronizer --> PairedPointStream
subgraph recording
Synchronizer --> VideoRecorder
VideoRecorder --> port_#.mp4
VideoRecorder --> frame_time_history.csv
port_#.mp4 --> RecordedStream
frame_time_history.csv --> RecordedStream
RecordedStream --> Synchronizer
end
CornerTracker -.temporary for testing.- PairedPointStream
subgraph triangulate
PairedPointStream --> StereoTriangulator
end
subgraph visualization
CameraMesh --> Visualizer
StereoTriangulator --> Visualizer
end
```
Raw data
{
"_id": null,
"home_page": "",
"name": "calicam",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "",
"keywords": "opencv,tracking,calibration,python,webcam",
"author": "",
"author_email": "Mac Prible <prible@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/f5/1b/bd33e5c9c91e25483eccd2890d67337aec528a10aca53b0666b933087cc3/calicam-0.0.3.tar.gz",
"platform": null,
"description": "# Current Functionality\n\nTo launch the primary functionality of the repo, run `src\\gui\\main.py`. This will open an ugly dialog to begin a calibration session. Session data is stored in the `sessions` folder in the root directory. The session being launched is coded at the bottom of `main.py`. The general workflow:\n\n1. Print out a charuco board from the Charuco Builder tab\n2. Click \"Find Additional Cameras\" to connect to them\n3. Go to the camera tabs and configure resolution/exposure before collecting calibration corners and calibrating.\n4. Save calibration parameters on camera tab\n5. Once all cameras intrinsic factors are estimated, click the stereocalibration button and calibrate each pair of cameras.\n6. Save calibration to `config.toml`.\n\n# Recording\n\nThe file `src\\recording\\video_recorder.py` will launch a VideoRecorder and store the mp4 and frametime data in the session folder. \n\n# Triangulating\n\nRecorded video can be played back through the synchronizer with synched frames passed to the PairedPointStream which uses the charuco tracker to identify the same point in space between paired frames. Point ID and (X,Y) position for each frame are passed to an `out_q`. The triangulator pulls from this queue, calculates values for ID: (X,Y,Z) and places that calculation on its own `out_q`\n\n# Visualization\n\nThe Visualizer constructs camera meshes based on `config.toml` to allow a gut check of the stereocalibration parameters. The camera mesh shape is determined by the actual camera properties and provides another way of assessing reasonableness at a glance. (X,Y,Z) points are read from `triangulator.out_q` and updated to the scene. \n\nCurrently, the origin is the base camera from the stereocalibration pair. Next planned steps include a way to set the origin.\n\n## Current Object Relationships\n\nThe general flow of processing is illustrated in the graph below. This does not represent any of the GUI elements which are still a work in progress. My immediate next steps are to stabilize the GUI, making it easier to incorporate the full set of actions that are currently permitted by the back-end of the code base.\n\n```mermaid\ngraph TD\n\nsubgraph cameras\nCamera --> LiveStream\nLiveStream --> Synchronizer\nend\n\nsubgraph calibration\nCharuco --> CornerTracker\nCornerTracker --> Monocalibrator\nCornerTracker --> Stereocalibrator\nend\n\nSynchronizer --> Stereocalibrator\nLiveStream --> Monocalibrator\n\nsubgraph calibration_data\nconfig.toml\nStereoCalRecordings\nend\n\nStereocalibrator -.via Session.-> config.toml\ncalibration -.via Session.-> StereoCalRecordings\nMonocalibrator -.via Session.-> config.toml\ncalibration_data --> ArrayConstructor\n\nsubgraph array\nArrayConstructor\nend\n\nSynchronizer --> PairedPointStream \n\nsubgraph recording\nSynchronizer --> VideoRecorder\nVideoRecorder --> port_#.mp4\nVideoRecorder --> frame_time_history.csv\n\nport_#.mp4 --> RecordedStream\nframe_time_history.csv --> RecordedStream\nRecordedStream --> Synchronizer\nend\n\nCornerTracker -.temporary for testing.- PairedPointStream\n\nsubgraph triangulate\nPairedPointStream --> StereoTriangulator\nend\n\nsubgraph visualization\nCameraMesh --> Visualizer\nStereoTriangulator --> Visualizer\nend\n\n```\n\n",
"bugtrack_url": null,
"license": "",
"summary": "GUI tool for calibrating motion capture systems composed of multiple standard webcams",
"version": "0.0.3",
"split_keywords": [
"opencv",
"tracking",
"calibration",
"python",
"webcam"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6fc70fef037d790afa83293bdec4816992c4a09045a4a7cde7d135d1293a0595",
"md5": "bde84edfb1816d8ec7360ff9ce5972c5",
"sha256": "d8fa493891b7098ca2d1e5707095b58b027f212c1338247438b942269b5a7906"
},
"downloads": -1,
"filename": "calicam-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bde84edfb1816d8ec7360ff9ce5972c5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 159139,
"upload_time": "2023-01-30T17:41:02",
"upload_time_iso_8601": "2023-01-30T17:41:02.386701Z",
"url": "https://files.pythonhosted.org/packages/6f/c7/0fef037d790afa83293bdec4816992c4a09045a4a7cde7d135d1293a0595/calicam-0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f51bbd33e5c9c91e25483eccd2890d67337aec528a10aca53b0666b933087cc3",
"md5": "5c6513098ec97ef4f206d434e945d6e4",
"sha256": "31f6706424de32b86d5f15bf910dd9c78fb2b9b40069111e5ba6d080de8d3a3f"
},
"downloads": -1,
"filename": "calicam-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "5c6513098ec97ef4f206d434e945d6e4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 5318876,
"upload_time": "2023-01-30T17:41:04",
"upload_time_iso_8601": "2023-01-30T17:41:04.803462Z",
"url": "https://files.pythonhosted.org/packages/f5/1b/bd33e5c9c91e25483eccd2890d67337aec528a10aca53b0666b933087cc3/calicam-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-01-30 17:41:04",
"github": false,
"gitlab": false,
"bitbucket": false,
"lcname": "calicam"
}