我正在尝试使用http://www.uco.es/investiga/grupos/ava/node/40
中的raspicam C ++库进行基本图像捕获图像捕获通常有效,但似乎我无法在程序结束后再次运行程序,或者它挂在grab_retrieve上。系统需要重启。我的猜测是,某些东西没有释放资源,但我不确定如何诊断它。 我怎样才能让这个实用程序自行清理?
代码如下。我也欢迎其他建议,因为我不依赖于这个图书馆。
#include <iostream>
#include <fstream>
#include <unistd.h>
#include <stdio.h>
#include "../raspicam-0.1.3/src/raspicam.h"
#include "../raspicam-0.1.3/src/raspicam_still.h"
#include "../raspicam-0.1.3/src/raspicamtypes.h"
using namespace std;
int main ( int argc, char *argv[] ) {
raspicam::RaspiCam_Still still;
still.setEncoding ( raspicam::RASPICAM_ENCODING_JPEG );
int length=still.getImageBufferSize();
unsigned char *data=new unsigned char[length];
cout<<"Capturing image at size " << length <<endl;
if(!still.grab_retrieve(data, length)) {
cerr<<"Error in grab"<<endl;
return -1;
}
still.release();
cout<< "Got it" << endl;
ofstream file ( "picture.jpg",ios::binary );
file.write ( ( char* ) data, length );
delete[] data;
return 0;
}