Ubuntu下使用OpenCV库保存摄相头数据为图片(x86/x64)

6 篇文章 0 订阅
5 篇文章 0 订阅

编写使用OpenCV库保存WEBCAM的数据为图片的代码,下面是相应的源码和编译配置文件(都保存在SaveCamPic目录下):

1.源码scp.cpp

#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>
#include <sys/timeb.h>
#include <stdlib.h>
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

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(&tp.time);
         snprintf(filename, 40, "./Alert/%04d%02d%02d%02d%02d%02d%04d.jpg", 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,tp.millitm);
         cvResize(pFrame,pSaveFrame,CV_INTER_LINEAR);
         cvSaveImage(filename,pSaveFrame,p);
         cvReleaseImage(&pSaveFrame);
    }
    cvDestroyWindow("video");
    cvReleaseCapture(&pCapture);

    return 0;
}

2.编译配置文件CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
PROJECT(SaveCamPic)

find_package(OpenCV REQUIRED)
set(NAME_SRC scp.cpp)
ADD_EXECUTABLE(scp ${NAME_SRC})

target_link_libraries(scp ${OpenCV_LIBS})

3.编译测试

进入到SaveCamPic目录下,执行如下命令进行编译:

cmake .
make

再执行如下命令则进行测试:

./scp

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stxinu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值