웹캠을 잡고 60 초마다 실행되는 셀러리 작업을 수행하고 서버에서 파일을 가져 와서 서버에 저장할 수 있도록 파일에 쓸 수 있습니다. 나중에 웹 페이지에 게재하십시오. 이미지 촬영은 python에서 cv2 라이브러리를 통해 opencv를 사용합니다.셀 비트 작업 중지가 몇 비트 (opencv) 이후에 실패합니다.
@app.task # a task to get and save a webcam image
def getWebCamImage()
logger.debug("capturing image attempt")
c = cv2.VideoCapture(0) #returns a videocapture object
flag, frame = c.read() #grabs and decodes the next frame
cv2.imwrite('file/loc/img.jpg, frame) #writes the frame to a file
logger.debug('saved image...hopefully')
c.release() #releases the videocapture object
return 0
모든 것이 처음 몇 분 동안 좋은 간다, 그러나 그것은 웹캠 속성을 얻을 수 없다는 대한 일반적인 오류를 뱉어 그냥 중지 :
그것은 다음과 같습니다. 그리고 그것은 결코 다시 시작하지 않는다!
...DEBUG/BEAT] celerytest.getwebcamimage[process]:capturing image attempt
VIDOC_QUERYMENU:Invalid argument
VIDOC_QUERYMENU:Invalid argument
VIDOC_QUERYMENU:Invalid argument
이것은 작동 할 때의 모습과 동일하게 유지됩니다. 어떤 아이디어가 그걸 막을 수 있니? 필자는 팔 코어에 240Mb를, 그래픽에 16MB를 사용하여 rasperry pi에서 실행하고 있습니다.
상황이 내가 그것을 해결하기 위해 시도했던 :
$sudo sysctl vm.overvommit_memory=1
는 그래서 던져 MEM을 doesent. 할당 오류 $ sudo rmmod ucvideo $ sudo modprobe ucvideo nodrop = 1 timeout = 5000 quirks = 0x80 그래서 드라이버는 캠에 더 참을성이 있습니다. 나는 약간의 카메라를 시험해 보았다. 그래서 그것은 문제가되지 않을 것이다.
의견이나 제안이 있으시면 언제든지 도와주십시오. 이것은 까다로운 것입니다 : 왜냐하면 그것은 파이이고, 파이/셀러리 크로스입니다. guvcview로 스크립트를 실행 해보려고 합니다만, py/opencv 옵션이 설치가 더 쉽기 때문에 더 깨끗해졌습니다. 그리고 이것이 작동하지 않는 이유를 알고 싶습니다.
뉴스 :
dmesg 명령이 메모리 부족 때문에 셀러리 프로세스가 살해되고 있음을 알 수있다. 이 문제를 해결할 방법이 있습니까? 어떻게하면, 작업에서 생성 된 객체가 어떻게 파괴됩니까?