Raspberry Pi script CGI com OpenCV não salvando imagens
-
21-12-2019 - |
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
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.