Debian下使用OpenCV库保存摄相头数据为图片(arm)

时间:2025-02-14 21:18:31
#include <>
#include <sys/>
#include <sys/>
#include <>
#include <sys/>
#include <>
#include <>
#include <>
//#include <>

int main( int argc,char ** argv )
{
    //声明IplImage指针
    IplImage* pFrame=NULL;
    IplImage* pSaveFrame=NULL;

    CvCapture* pCapture=NULL;

    static char filename[40];
    struct tm * tm_ptr;
    struct timeb tp;

    int p[3];
    p[0] = CV_IMWRITE_JPEG_QUALITY;
    p[1] = 10;  //质量值
    p[2] = 0;

    //cvNamedWindow("video",1);
    if( !(pCapture=cvCaptureFromCAM(0 /*-1*/)) ) //此处值为-1表示自动搜索到的第一个摄象头,而0则表示第一个,1则表示第2个,以此类推。
    {
        fprintf(stderr,"Can not open camera.\n");
        return -1;
    }

    if(mkdir("./Alert",0755)==-1)
    {
        //创建时存在该目录会返回错误码,如不存在则创建它,但由于我们需要该目录,则出错也不处理
    }

    //逐帧读取视频
    while(pFrame=cvQueryFrame(pCapture))
    {
         //cvShowImage("video",pFrame);
         //if(cvWaitKey(2)>=0) break;
         pSaveFrame=cvCreateImage(cvSize(1024,768),pFrame->depth,pFrame->nChannels);

         //get file name
         ftime(&tp);
         tm_ptr=localtime(&);
         snprintf(filename, 40, "./Alert/%04d%02d%02d%02d%02d%02d%", tm_ptr->tm_year-100+2000, tm_ptr->tm_mon + 1, tm_ptr->tm_mday, tm_ptr->tm_hour,tm_ptr->tm_min, tm_ptr->tm_sec,);
         cvResize(pFrame,pSaveFrame,CV_INTER_LINEAR);
         cvSaveImage(filename,pSaveFrame,p);
         cvReleaseImage(&pSaveFrame);
    }

    //cvDestroyWindow("video");
    cvReleaseCapture(&pCapture);

    return 0;
}