μ¬κΈ°μμ 곡μ μμ μ½λλ₯Ό μ¬μ©νμ¬ Kivyμμ μΉ΄λ©λΌλ₯Ό μ¬μ©νκ³ μΆμ΅λλ€.
https://github.com/kivy/kivy/blob/1.10.0/examples/camera/main.py
κ·Έλ¬λ opencv-3.3.0|. If I compile
opencv-2.4.13.3`μμ cv2.soλ₯Ό μ¬μ©ν λλ§ ν°μ νλ©΄μ΄ λνλ©λλ€.
λ κ²½μ° λͺ¨λ μΉ΄λ©λΌκ° μ΄κΈ°νλ κ²μ²λΌ 보μ΄μ§λ§(LED μΌμ§) opencv-2μμλ λΉλμ€κ° νμλκ³ opencv-3μμλ νλ©΄μ΄ ν°μμΌλ‘ μ μ§λλ€λ μ μ μ£Όλͺ©νλ κ²μ΄ ν₯λ―Έλ‘μ μ΅λλ€.
λλ λν μλμ λ λ―Έλλ©ν μλ₯Ό μλνμ΅λλ€.
import kivy
from kivy.app import App
from kivy.uix.camera import Camera
class MainApp(App):
def build(self):
return Camera(play=True, resolution=(640, 480))
if __name__== "__main__":
MainApp().run()
κ·Έλ¦¬κ³ λμΌν κ²°κ³Όλ₯Ό μ»μ΅λλ€. μ¦ opencv-2.4.13.3
μλ opencv-3.3.0
ν©λλ€.
https://github.com/opencv/opencv/releases μμ λ λ²μ μ λͺ¨λ λ€μ΄λ‘λνμ΅λλ€
κ·Έλ¦¬κ³ λ λ€ κΈ°λ³Έ νλκ·Έλ‘ μ»΄νμΌλμμ΅λλ€(λ¨μν cmake
λ€μ make -j4
).
λν μλμ μμν OpenCV μμ κ° λͺ¨λ μλν©λλ€.
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Display the resulting frame
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
λ°λΌμ Kivyμμ ν΅ν©μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€.
λ¬Έμ λ₯Ό νμΈν μ μμ΅λλ€
λλ λν opencv 3μ ν°μ νλ©΄μ΄ μμ΅λλ€.
λλ κ·Έκ²μ λλ²κΉ
νκ³ λ€μ΄μ€λ νλ μμ΄ λΉμ΄ μμ§ μμ κ²μ 보μμ§λ§ μ¬μ ν νλ©΄μ μ νμλμ§ μμ΅λλ€.
ν΄κ²°νμ΅λλ€. .../lib/python3.6/site-packages/kivy/core/camera/camera_opencv.py
νμΌμ μ΄ν΄λ΄
λλ€.
121ν:
if self.fps <= 0:
self.fps = 1 / 30.
λλ²κ·Έ λͺ¨λμμ κ±°κΈ°μ λλ¬νλ©΄ fps κ°μ΄ μ€μ λ‘ 30(1/30μ΄ μλλΌ)μμ μ μ μμ΅λλ€.
μ΄ κ°μ νλ μ μ
λ°μ΄νΈ μ€μΌμ€λ§μ μ¬μ©λ©λλ€.
self._update_ev = Clock.schedule_interval(self._update, self.fps)
μ΄ μ€μ λ€μκ³Ό κ°μ΄ λ³κ²½ν©λλ€.
self._update_ev = Clock.schedule_interval(self._update, 1/self.fps)
λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€. λ¬Όλ‘ μμ ν μ루μ
μ μλλ©° μ½λμ λ€λ₯Έ μμΉλ λ³κ²½λμ΄μΌ ν©λλ€.
μ΄κ²μ΄ λΉμ μκ²λ ν¨κ³Όκ° μκΈ°λ₯Ό λ°λλλ€.
μμ 'μ루μ
' μ€ μ΄λ κ²λ Python 2.7.14 λ° opencv 3μ΄ μλ Ubuntu 18.04(λ² ν 릴리μ€)μμ μλνμ§ μμ΅λλ€.
μΉμΊ μ μΉμ¦μ κ°μ λ°μ€ν¬ν± μ±κ³Ό ν¨κ» μλν©λλ€.
μ°λ¦¬ braintrainerplus.nlμ μΉμΊ μλμ΄ μ λ§ νμνλ©° κ΄μ¬μ΄ μλ μ¬λμ΄ μμΌλ©΄ μ΄ λ¬Έμ μ νμκΈμ κ±Έ μ€λΉκ° λμ΄ μμ΅λλ€.
λλ κ·Έκ²μ νμνκΈ° μ μ opencvμμ λ°νλ numpy λ°°μ΄ λ°μ΄ν°λ₯Ό μ¬μ μ²λ¦¬νκ³ μΆμμ΅λλ€. λΆννλ kivyμ μΉ΄λ©λΌ μΆμνλ ν μ€μ² λ°μ΄λ리 λ°μ΄ν°λ§ μ 곡νμ΅λλ€.
μ΄ μμ§λ μΉ΄λ©λΌμ μ§μ μ‘μΈμ€νλ λ° μ μ©νμ΅λλ€.
μ°Έκ³ : opencv 2.4.13μ Ubuntu 18.04μ kivy 1.10μμ μλν©λλ€.
(μ 첫 λ²μ§Έ μλκ° μ€ν¨νλμ§ νμ€νμ§ μμ§λ§ λ€λ₯Έ μ»΄νμΌ νμλ μλνμ΅λλ€)
@yoelk μ "μμ "μ΄ κ°μ νκ²½ λ΄μμ Python 3.6.5 λ° OpenCV 3.3.0μ μ¬μ©νλ Arch Linuxμμ μλνλμ§ νμΈν μ μμ΅λλ€.
μ΄κ²μ https://github.com/kivy/kivy/issues/5146 κ³Ό κ°μ λ¬Έμ μ²λΌ 보μ λλ€.
@yoelk λ΄ λΌμΈ 121μ
if self.fps <= 0:
self.fps = 1 / 30
κ·Έλ¦¬κ³ ν°μ νλ©΄μ΄ λνλ©λλ€. λ€μ΄κ·Έλ μ΄λλ₯Ό μλν λ pip λλ condaλ₯Ό μ¬μ©νμ¬ opencv2λ₯Ό λ€μ΄λ‘λν μ μμ΅λλ€.
λ΄μ₯ λ€μ λ° usb logitechλ‘ ν
μ€νΈν μΉμΊ μ΄ μ΄μ @yoelkμ μμ μ¬νμΌλ‘ μμ μ μΈ kivy 1.10.1μμ μλνκ³ μμμ νμΈν μ μμ΅λλ€.
μμ€ν
: ppa:kivy-team/kivyμ Ubuntu 18.04/Mint 19, openvc 3.2.0 λ° kivy 1.10.1
λν kivy/core/camera/__init__.pyμμ opencvλ₯Ό μ μΈν λͺ¨λ 곡κΈμλ₯Ό μ£Όμ μ²λ¦¬νμ¬ λλ¨Έμ§λ μ€ν¨νκ³ λͺ¨λ μ’ λ₯μ μ΄μν μ€λ₯λ₯Ό μ 곡νλ―λ‘ opencvλ₯Ό κ°μ λ‘ μ¬μ©ν΄μΌ ν©λλ€.
@CurtlyCritchlow μμ μ¬νμ 152νμ μμ΅λλ€. self._update_ev = Clock.schedule_interval(self._update, 1/self.fps)
κ°μ₯ μ μ©ν λκΈ
ν΄κ²°νμ΅λλ€.
.../lib/python3.6/site-packages/kivy/core/camera/camera_opencv.py
νμΌμ μ΄ν΄λ΄ λλ€.121ν:
λλ²κ·Έ λͺ¨λμμ κ±°κΈ°μ λλ¬νλ©΄ fps κ°μ΄ μ€μ λ‘ 30(1/30μ΄ μλλΌ)μμ μ μ μμ΅λλ€.
μ΄ κ°μ νλ μ μ λ°μ΄νΈ μ€μΌμ€λ§μ μ¬μ©λ©λλ€.
μ΄ μ€μ λ€μκ³Ό κ°μ΄ λ³κ²½ν©λλ€.
λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€. λ¬Όλ‘ μμ ν μ루μ μ μλλ©° μ½λμ λ€λ₯Έ μμΉλ λ³κ²½λμ΄μΌ ν©λλ€.
μ΄κ²μ΄ λΉμ μκ²λ ν¨κ³Όκ° μκΈ°λ₯Ό λ°λλλ€.