Pergunta

Eu estou tentando criar um script CGI que vai tirar uma foto e salvá-lo para o local que eu dê a ele.Eu estou usando o Raspberry Pi e Pi módulo de câmera com o uv4l driver.Eu tenho também a escolhida para usar o Apache2.

Atualmente o script é executado sem erros determinado e sem erros no registro de erros do Apache, mas a imagem não fica guardado.A câmera faz abrir porque a luz vermelha aparece sobre ele.Eu também verificar para ver se a imagem está vazio, o que não é.

Até então eu tentei mudar as permissões de pasta, de modo que o usuário pi é dono de tudo.Eu também tentei salvar mais de um arquivo já existente, mas nunca é atualizado.Eu nunca usei o Apache2 ou scripts CGI antes, então eu sinto que o problema está lá, mas eu não sou inteiramente certo o que procura, porque eu estou ficando sem erros.Todas as sugestões serão muito apreciados.

#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;
}

Eu estou usando este comando para compilar:

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    
Foi útil?

Solução

Eu fixo meu próprio problema.O método imwrite() foi de poupança de mais de um já existente imagem sem permissões de escrita.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top