【问题标题】:Crontab camera capture using python-opencv使用 python-opencv 捕获 Crontab 相机
【发布时间】:2013-12-05 21:16:14
【问题描述】:

这是我的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 没有获取相机信息吗? 感谢您的帮助!

【问题讨论】:

  • 是的,试试像 /home/camera.jpg 这样的绝对路径。还要检查 cv.SaveImage() 的返回值。最后但并非最不重要的一点是,将来不会支持旧的 cv api,所以从长远来看,请移至 cv2

标签: python opencv crontab


【解决方案1】:

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

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() 提供文件的完整路径

【讨论】:

  • @karlphilip 感谢您的帮助! :) 实际上这是我的长代码的一部分。它只是为了展示我在做什么。我已经测试了这个程序(在终端上)。我得到了输出。我的问题是从 cron 运行那个程序。Cron 不是连接到我的网络摄像头。这就是为什么我没有得到任何输出。如果您知道将摄像头与 cron 链接,请帮助我!
  • 在正常执行中(从终端),一切都很好。我的原始代码中有这些检查。
  • 在加载相机驱动程序之前是否有可能发生这种情况?您的第一条评论为问题添加了重要信息。很明显,这不是与编程相关的问题。
  • 是的,这是 cron.OK 的问题!这可能是一个原因。我会在程序中添加一些延迟,以便加载网络摄像头驱动程序。非常感谢您的帮助!
  • 我添加了延迟,但什么也没发生! :(
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2017-04-14
    • 2011-07-20
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    相关资源
    最近更新 更多