tae3lee/VisionVelocity
0
π κ°μ μ μ μΈ‘μ μ± (River Velocity Measurement App)
λΉλμ€μμ κ°λ¬Όμ νλ¦ μλλ₯Ό μλμΌλ‘ μΈ‘μ νλ μΉ μ ν리μΌμ΄μ μ λλ€.
π κΈ°λ₯
- π¬ λΉλμ€ μ λ‘λ: MP4, AVI, MOV, MKV λ± λͺ¨λ μΌλ° μμ νμ μ§μ
- π μλ μ μ μΈ‘μ : κ΄ν μ λ(Optical Flow) κΈ°μ μ μ΄μ©ν μ νν μΈ‘μ
- π κ²°κ³Ό λΆμ: μκ°λ³ μΆμ΄, λΆν¬ νμ€ν κ·Έλ¨, ν΅κ³ μ§ν
- π₯ λ°μ΄ν° λ΄λ³΄λ΄κΈ°: CSV νμμΌλ‘ μλ³Έ λ°μ΄ν° λ€μ΄λ‘λ
- π 리ν¬νΈ μμ±: μΈ‘μ κ²°κ³Ό λ° μ€μ μ 보 ν¬ν¨
π λΉ λ₯Έ μμ
1. μ€μΉ
git clone https://github.com/yourusername/river-velocity-app.git
cd river-velocity-app
pip install -r requirements.txt2. μ€ν
streamlit run app.pyκ·Έλ¬λ©΄ μλμΌλ‘ λΈλΌμ°μ κ° μ΄λ¦¬κ³ μΉ μ±μ΄ μμλ©λλ€. λ³΄ν΅ http://localhost:8501μμ μ€νλ©λλ€.
3. μ¬μ©νκΈ°
- πΉ λΉλμ€ μ λ‘λ: κ°λ¬Ό μμμ μ λ‘λν©λλ€
- βοΈ μ€μ : νλ μ μλμ μ€μΌμΌμ μ λ ₯ν©λλ€
- π μΈ‘μ μμ: "μ μ μΈ‘μ μμ" λ²νΌμ ν΄λ¦ν©λλ€
- π κ²°κ³Ό νμΈ: μΈ‘μ κ²°κ³Όλ₯Ό νμΈνκ³ λ€μ΄λ‘λν©λλ€
π μ€μΌμΌ μΈ‘μ λ°©λ² (μ€μ!)
μ νν μ μ μΈ‘μ μ μν΄μλ μ€μΌμΌ(ν½μ λΉ κ±°λ¦¬)μ μμμΌ ν©λλ€.
λ¨κ³λ³ κ°μ΄λ
- κ°μ μλ €μ§ κΈΈμ΄μ 물체 λ°°μΉ
- 1λ―Έν° κΈΈμ΄μ μ
- νμ λ§λ
- λλ λ€λ₯Έ μλ €μ§ ν¬κΈ°μ 물체
- λΉλμ€ μ΄¬μ
- μ λ©΄μμ 촬μ (45λ μ΄μ κ°λ νΌνκΈ°)
- μ€μΌμΌ λ¬Όμ²΄κ° λͺ ννκ² λ³΄μ΄λλ‘
- μ΅μ 10μ΄ μ΄μ 촬μ
- ν½μ 거리 μΈ‘μ
- μ΄λ―Έμ§ νΈμ§ νλ‘κ·Έλ¨ (Photoshop, GIMP λ±)μμ λΉλμ€μ ν νλ μ μ μ₯
- μ€μΌμΌ λ¬Όμ²΄κ° λͺ ν½μ μΈμ§ μΈ‘μ
- μ€μΌμΌ κ³μ°
μ€μΌμΌ = μ€μ 거리(λ―Έν°) / ν½μ
μμμ
- 1λ―Έν°κ° 100ν½μ
β
1 / 100 = 0.01 m/px = 1 cm/ν½μ μ λ ₯ - 1λ―Έν°κ° 50ν½μ
β
1 / 50 = 0.02 m/px = 2 cm/ν½μ μ λ ₯
π κΈ°μ μ¬ν
μκ³ λ¦¬μ¦
- κ΄ν μ λ (Lucas-Kanade): μ΄μν νλ μ κ°μ νΉμ§μ μΆμ
- μ€μκ° νν°: μ΄μμΉ μ κ±°λ₯Ό ν΅ν μμ μ μΈ μΈ‘μ
- κ²μ¦ λ²μ: 0~5 m/s (νλΉνμ§ μμ λ°μ΄ν° μλ μ κ±°)
μ£Όμ λΌμ΄λΈλ¬λ¦¬
- Streamlit: μΉ μΈν°νμ΄μ€
- OpenCV: λΉλμ€ μ²λ¦¬ λ° κ΄ν μ λ
- NumPy: μμΉ κ³μ°
- Matplotlib: κ·Έλν μκ°ν
π μΆλ ₯ κ²°κ³Ό
μ 곡λλ ν΅κ³
- νκ· μ μ: μ 체 μΈ‘μ ꡬκ°μ νκ·
- μ€μκ°: μ΄μμΉμ κ°κ±΄ν μ€μ¬κ°
- μ΅μ/μ΅λ μ μ: μΈ‘μ λ²μ
- νμ€νΈμ°¨: μ μ λ³λμ±
- λ°μ΄ν° κ°μ: μ ν¨ν μΈ‘μ ν¬μΈνΈ μ
κ·Έλν
- μκ°λ³ μ μ: μΈ‘μ μκ°μ λ°λ₯Έ μ μ λ³ν
- λΆν¬ νμ€ν κ·Έλ¨: μ μ λΆν¬λ
β οΈ μ νμ¬ν λ° μ£Όμμ¬ν
μΈ‘μ μ€μ°¨ μμΈ
- μΉ΄λ©λΌ μμ§μ
- μμ νμ§ (ν΄μλ, λ Έμ΄μ¦)
- λΆμ νν μ€μΌμΌ μ€μ
- λΉ λ₯Έ μΉ΄λ©λΌ ν¬λ
κ°μ λ°©λ²
- β μΌκ°λ μ¬μ© (μΉ΄λ©λΌ κ³ μ )
- β μΆ©λΆν ν΄μλ (720p μ΄μ κΆμ₯)
- β μ νν μ€μΌμΌ μΈ‘μ
- β μ μμ μΈ μ‘°λͺ 쑰건
- β λͺ νν μ μ λλ νλ¦ νΉμ§
π§ μ€μ νλΌλ―Έν°
π νλ‘μ νΈ κ΅¬μ‘°
river-velocity-app/
βββ app.py # Streamlit λ©μΈ μ ν리μΌμ΄μ
βββ requirements.txt # Python μμ‘΄μ±
βββ README.md # μ΄ νμΌ
βββ .gitignore # Git 무μ νμΌ
βββ uploads/ # μμ λΉλμ€ νμΌ ν΄λ (μλ μμ±)π λ¬Έμ ν΄κ²°
μ±μ΄ μμλμ§ μμ
# Python λ²μ νμΈ (3.8 μ΄μ)
python --version
# μμ‘΄μ± μ¬μ€μΉ
pip install -r requirements.txt --upgradeλΉλμ€λ₯Ό μ΄ μ μμ
- λΉλμ€ νμ νμΈ (MP4, AVI, MOV, MKV)
- νμΌ ν¬κΈ° νμΈ (λ무 ν¬λ©΄ μ€ν¨ κ°λ₯)
- λΉλμ€ μ½λ± νμΈ (μΌλ°μ μΈ μ½λ± μ¬μ©)
μΈ‘μ κ²°κ³Όκ° μ΄μν¨
- μ€μΌμΌ κ° νμΈ
- FPS κ° νμΈ
- μμ νμ§ νμΈ
- μμ λ΄ λͺ νν νλ¦ νΉμ§ νμΈ
π‘ μ¬μ© ν
- μ νν μ€μΌμΌ μΈ‘μ : κ°μ₯ μ€μν λΆλΆμ λλ€!
- μΆ©λΆν κΈΈμ΄ μ΄¬μ: μ΅μ 10μ΄, 30μ΄ μ΄μ κΆμ₯
- μ¬λ¬ λ² μΈ‘μ : κ°μ μ₯μμμ μ¬λ¬ λ² μ΄¬μ ν λΉκ΅
- λ©νλ°μ΄ν° νμΈ: νμΌ μ 보μμ μ νν FPS νμΈ
- λ°μ΄ν° λ°±μ : μ€μν κ²°κ³Όλ CSVλ‘ μ μ₯
π λΌμ΄μ μ€
MIT License - μμ λ‘κ² μ¬μ©, μμ , λ°°ν¬ κ°λ₯ν©λλ€.
π¨βπ» κΈ°μ¬
κ°μ μ¬νμ΄λ λ²κ·Έ 리ν¬νΈλ Issuesμμ μ μΆν΄μ£ΌμΈμ. Pull Requestλ νμν©λλ€!
π§ λ¬Έμ
λ¬Έμ κ° μμΌλ©΄ GitHub Issuesλ₯Ό ν΅ν΄ λ³΄κ³ ν΄μ£ΌμΈμ.
λ§μ§λ§ μ λ°μ΄νΈ: 2024λ
λ²μ : 1.0.0
