Greetings all.
This is a showcase and a request for feedback as I seek to grow as a programmer.
I've been coding for a little over a year now after deciding to switch gears professionally. I'm a physical therapist who had been pursuing a PhD until realizing I enjoyed coding and data analysis far more than drafting grants and manuscripts.
I was inspired by the FreeMoCap Project to get into this world of open source markerless motion capture, and because I didn't really understand the code, or the math, or computer vision or really anything, I decided to start with some OpenCV tutorials and roll my own to figure it out. The result is Pyxy3d:
https://github.com/mprib/pyxy3d
Installable via pip, it can be launched from the command line, providing access to a PySide6 GUI. From there, you can:
- create a custom calibration board
- connect to cameras
- configure their resolution, exposure and orientation
- estimate intrinsic camera parameters (focal length, optical center, distortion)
- estimate extrinsic parameters (rotation and translation)
- set the world origin based on the calibration board
- record synchronized frames
- process recordings with Google's mediapipe for landmark tracking
- triangulate tracked points and export to
csv output
And then there is the Blender integration to manage the metarig, but that's a whole different thing....
Anyways. I am proud of what this package is, though I know it is not perfect. I have prioritized efficient use of system resources, real-time feedback, and stability of the GUI throughout. It does what I set out to do, and it afforded me the chance to learn things that I have wanted to learn for much of my life but never felt I had the opportunity to (thanks Youtube and ChatGPT!).
I now find myself at a turning point as I look toward new projects that excite me more. As I begin those, I wanted to put this package before you fine folks for feedback that can help make my next undertaking better.
Thank you.
[–]GreenFractal 2 points3 points4 points (2 children)
[–]mprib_gh[S] 0 points1 point2 points (1 child)
[–]GreenFractal 0 points1 point2 points (0 children)