使用python-opencv捕获Crontab相机

时间:2013-12-04 10:08:56

标签: python opencv crontab

这是我的python程序:

 #!/usr/bin/env/ python
  import cv
  capture1=cv.CaptureFromCAM(0)
  cv.SetCaptureProperty(capture1,cv.CV_CAP_PROPER_FRAME_WIDTH,320)  
  cv.SetCaptureProperty(capture1,cv.CV_CAP_PROPER_FRAME_HEIGHT,240)
  while 1:
       cam1=cv.QueryFrame(capture1);
       cv.SaveImage("camera.jpg",cam1);
       cv.WaitKey(11)
       print 'Done!'

在crontab上:

@reboot sudo python /home/program.py >/home/result.txt

但它没有保存图像。无限期我做错了什么!我在阅读图片cv2.imread("image.jpg")时遇到了类似的问题,但它正在返回None,所以我添加了图片/home/image.jpg的完整路径。这个问题已经解决了!。是cron没有得到相机Feed ? Thanx寻求帮助!

2 个答案:

答案 0 :(得分:2)

首先,确保应用程序成功与相机通信:

import cv
capture1 = cv.CaptureFromCAM(0)
if not capture1 :
    print "!!! Failed to open a camera interface"
    # Ideally, exit the application.

cv.SetCaptureProperty(capture1,cv.CV_CAP_PROPER_FRAME_WIDTH,320)  
cv.SetCaptureProperty(capture1,cv.CV_CAP_PROPER_FRAME_HEIGHT,240)

请记住测试是否已成功从相机中检索到框架:

while 1:
     frame = cv.QueryFrame(capture1);
     if not frame:
         print "!!! Failed to retrieve frame"
         break

     # Right now, your code overwrites the same file at every iteration of the loop.
     # It might be better to add a BREAK at the end for testing purposes.
     cv.SaveImage("camera.jpg", frame);

     # There's no need to call WaitKey() if the image is not displayed on a window.
     #cv.WaitKey(11)    

     print 'Done!'
当应用程序无权在执行目录的目录中写入文件时,

SaveImage()将失败。由于 crontab 负责调用您的应用程序,我想它是从用户没有正确权限的目录中执行此操作。如果是这种情况,我强烈建议您SaveImage()提供文件的完整路径

答案 1 :(得分:0)

问题发生在cv.ShowImagecv2.imshow。当我评论此行时,一切正常!以前程序卡在这一行。(通过cron执行。)[我在原始程序中写的]