使用OpenCV的Raspberry Pi CGI脚本不保存图像

时间:2014-02-25 18:54:59

标签: c++ opencv apache2 cgi raspberry-pi

我正在尝试创建一个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    

1 个答案:

答案 0 :(得分:0)

我解决了自己的问题。 imwrite()方法保存了一个没有写权限的已存在的图像。