전에 발생한 에러로 인해 나는 웹캠 이미지 프레임을 읽어오는 함수를 따로 thread로 돌리기로 했다.
def Read_Camera_frame() :
global CamerModule
global detectState
ret, frame = CameraModule.read()
if not ret :
return
if detectState == 1 :
time.sleep(0.5)
ret, frame = CameraModule.read()
imgFileName = videoCapture.saveImage(ret, frame, nodeID)
print("Capture Complete")
threading.Timer(0.1, Read_Camera_frame).start()
while을 사용하면 CPU 사용량도 많아지고 발열도 심해질 것 같아, 쓰레드로 0.1초마다 돌게끔 설정해주었다.
전역변수인 detectState를 Main()루프와 Read_Camera_frame thread가 공유하고 있으므로 나는 감지가 되서 detectState가 1이되면 사진을 찍어주면 되겠다! 라는 생각과 함께 저렇게 코드를 작성했다. 근데 저기에 왜 time.sleep(0.5)를 주었냐면 레이더센서와 카메라 모듈의 위치가 약간 오차가 있고, 레이더센서의 감지 범위가 카메라 찍는 화각의 범위보다 많기 때문에 조금 delay를 줘서 카메라에 담기게끔 찍고 싶었기 때문이다.
하지만 역시 카메라에는 찍히지가 않는다.. 화각의 문제인가, 레이더 감지 범위가 문제인것인가.. 레이더 센서는 방위 120도, 높이 120도 라는데.. 좀 더 데이터시트던지 참고 자료를 많이 찾아봐야겠다!
결국 돌고 돌아 레이더센서 datasheet를 다시 보려고 한다..! 아직 많이 멀었다..