这是我的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寻求帮助!
答案 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.ShowImage
或cv2.imshow
。当我评论此行时,一切正常!以前程序卡在这一行。(通过cron
执行。)[我在原始程序中写的]