程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 攝像頭-opencv 保存視頻文件名稱更改問題

攝像頭-opencv 保存視頻文件名稱更改問題

編輯:編程解疑
opencv 保存視頻文件名稱更改問題

cvCreateVideoWriter( const char* filename, int fourcc, double fps, CvSize frame_size,
int is_color CV_DEFAULT(1));
這是一個保存視頻文件的函數 第一個參數是文件名 每次保存的文件名稱為當前時間,自己寫的代碼如下:
char *getSystemTime()
{
char y[20], mon[5], d[5], h[5], mins[5], *temp;
char *temp;
char str[5]=".avi";
time_t rawtime;
struct tm *timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime); // 需要給timeinfo賦值
printf("%4d-%02d-%02d-%02d:%02d:%02d\n", 1900 + timeinfo->tm_year, 1 + timeinfo->tm_mon, timeinfo->tm_mday, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
_itoa(1900 + timeinfo->tm_year, y, 10);
_itoa(1 + timeinfo->tm_mon, mon, 10);
_itoa(timeinfo->tm_mday, d, 10);
_itoa(timeinfo->tm_hour, h, 10);
_itoa(timeinfo->tm_min, mins, 10);
strcat(y, mon);
strcat(y, d);
strcat(y, h);
strcat(y, mins);
temp = strcat(y, str);
printf("%s\n", temp);
return temp;
}

int main(int argc, char** argv)
{
CvVideoWriter* video = NULL;
CvCapture* capture = cvCaptureFromCAM(0);
int n;
pFrame = cvQueryFrame(capture); //首先取得攝像頭中的一幀
int fps = 32; //捕捉幀率

CvVideoWriter* writer = 0; //保存就加上這句
int isColol = 1;
int frameW = 640;
int frameH = 480;
video = cvCreateVideoWriter(getSystemTime(), CV_FOURCC('P', 'I', 'M', '1'), fps, cvSize(frameW, frameH), isColol);
if (video) //如果能創建CvVideoWriter對象則表明成功
{
cout << "VideoWriter has created." << endl;
}
//創建窗口
cvNamedWindow("video", 1);
if (argc == 1)
if (!(pCapture = cvCaptureFromCAM(0)))
{
MessageBox(NULL, TEXT("打開攝像頭失敗,請查看是否已連接攝像頭"), TEXT("錯誤通知"), MB_OK);
return -2;
}
while (1)
{
pFrame = cvQueryFrame(capture); //從CvCapture中獲得一幀
if (!pFrame)
{
cout << "Can not get frame from the capture." << endl;
break;
}
n = cvWriteFrame(video, pFrame); //判斷是否寫入成功,如果返回的是1,表示寫入成功
cout << n << endl;
cvShowImage("video", pFrame); //顯示視頻內容的圖片
}

別的不重要的就不寫了,debug出來到 video = cvCreateVideoWriter(getSystemTime(), CV_FOURCC('P', 'I', 'M', '1'), fps, cvSize(frameW, frameH), isColol);
這句就報錯了情況如下!
圖片說明
圖片說明
求大神幫助

最佳回答:


假設你的文件名是類似20160203.avi

 char t[100];
SYSTEMTIME st;
GetSystemTime(&st);
sprintf(t, "%04d%2d%2d.avi",  st.wYear,  st.wMonth,  st.wDay );
video = cvCreateVideoWriter(t, CV_FOURCC('P', 'I', 'M', '1'), fps, cvSize(frameW, frameH), isColol);
alensama
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved