我正在尝试创建一个CGI脚本,它将拍摄照片并将其保存到我给它的位置。我正在使用带有uv4l驱动程序的Raspberry Pi和Pi相机模块。我也选择使用Apache2。
目前,脚本运行时没有给出错误,Apache错误日志中没有错误,但图像没有保存。相机打开是因为它上面出现红灯。我还检查图像是否为空,但不是。
到目前为止,我已尝试更改文件夹权限,以便用户pi拥有所有内容。我还试图保存已经存在的文件,但它永远不会更新。我以前从未使用过Apache2或CGI脚本,所以我觉得问题出在那里,但我不完全确定要搜索什么,因为我没有错误。任何建议都将不胜感激。
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv){
cv::VideoCapture cap(-1);
if (!cap.isOpened()){
cout << "Content-type:text/html\r\n\r\n";
cout << "<html>";
cout << "<h1> Camera didn't open </h1>";
cout << "</html>";
return -1;
}
//cap.set(CV_CAP_PROP_FRAME_WIDTH, 320);
//cap.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
int count = 40;
cv::Mat frame;
bool bSuccess = cap.read(frame);
while (count != 0){
count--;
}
if (!bSuccess){
cout << "Content-type:text/html\r\n\r\n";
cout << "<html>";
cout << "<h1> Photo did't work get read in</h1>";
cout << "</html>";
return 0;
}
cout << "Content-type:text/html\r\n\r\n";
cout << "<html>";
cout << "<h1> Photo Taken + Saved</h1>";
cout << "</html>";
cv::imwrite("/var/www/photos/Current.png", frame);
return 0;
}
我正在使用此命令编译:
g++ -lopencv_core -lopencv_highgui -L/usr/lib/uv4l/uv4lext/armv6l -luv4lext -Wl,- rpath,'/usr/lib/uv4l/uv4lext/armv6l' time.cpp -o test_script.cgi
答案 0 :(得分:0)
我解决了自己的问题。 imwrite()方法保存了一个没有写权限的已存在的图像。