opencv实现定时录像功能

2025-05-27 0 62

opencv作为一款强大的机器视觉库,以其简便性得到了各图像处理开发人员的青睐。现在就给大家介绍如何用opencv实现定时录像并以实际时间作为文件名保存。之前网上已经有一些类似的代码,但是大多数网友反映程序无法执行,主要分析有两个原因。电脑上未安装视频编码器,这里推荐大家XviD,网上不好下载可以私信我或是留下邮箱,我统一发送。然后在选择编码格式上,我选择的是'X', 'V', 'I', 'D'格式,也就是我们常见的avi格式。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93
#include "cv.h"

#include "cxcore.h"

#include "highgui.h"

#include <iostream>

#include <time.h>

#include <Windows.h>

#include <Mmsystem.h>

#include "stdio.h"

int timea=100000;

using namespace std;

/*void times()

{

SYSTEMTIME sys_time;

//将变量值设置为本地时间

GetLocalTime( &sys_time );

//输出时间

printf( "%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1d\\n",sys_time.wYear,

sys_time.wMonth,

sys_time.wDay,

sys_time.wHour,

sys_time.wMinute,

sys_time.wSecond,

sys_time.wMilliseconds,

sys_time.wDayOfWeek);

// system("time");

//

// system("pause");

return 0;

} */

int main()

{

CvCapture* capture=cvCaptureFromCAM(0);

CvVideoWriter* video=NULL;

IplImage* frame=NULL;

int n;

if(!capture) //如果不能打开摄像头给出警告

{

cout<<"Can not open the camera."<<endl;

return -1;

}

else

{

frame=cvQueryFrame(capture); //首先取得摄像头中的一帧

int c=0;

SYSTEMTIME sys_time;

//将变量值设置为本地时间

GetLocalTime( &sys_time );

char buf[1024];

sprintf(buf,"camera-%4d-%2d-%02d-%02d-%02d-%02d.avi",sys_time.wYear,sys_time.wMonth,sys_time.wDay,

sys_time.wHour,sys_time.wMinute, sys_time.wSecond);

video=cvCreateVideoWriter(buf, CV_FOURCC('X', 'V', 'I', 'D'), 25,

cvSize(frame->width,frame->height)); //创建CvVideoWriter对象并分配空间

//保存的文件名为camera.avi,编码要在运行程序时选择,大小就是摄像头视频的大小,帧频率是32

if(video) //如果能创建CvVideoWriter对象则表明成功

{

cout<<"VideoWriter has created."<<endl;

}

cout<<"set the record time\\n"<<endl;//设置录像时间

cin>>timea;

int ti=timea*25;

cvNamedWindow("Camera Video",1); //新建一个窗口

int i = 0;

while(i <= ti) // 让它循环ti次自动停止录取

{

frame=cvQueryFrame(capture); //从CvCapture中获得一帧

if(!frame)

{

cout<<"Can not get frame from the capture."<<endl;

break;

}

n=cvWriteFrame(video,frame); //判断是否写入成功,如果返回的是1,表示写入成功

// cout<<n<<endl;

cvShowImage("Camera Video",frame); //显示视频内容的图片

i++;

if(cvWaitKey(2)>0)

break; //有其他键盘响应,则退出

}

cvReleaseVideoWriter(&video); //如果不释放则春不上

cvReleaseCapture(&capture);

cvDestroyWindow("Camera Video");

}

return 0;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 opencv实现定时录像功能 https://www.kuaiidc.com/72697.html

相关文章

发表评论
暂无评论