資源簡介
基于OpenCV的智能視頻監控系統設計,使用VS2010和OpenCV2.4.9完成系統設計,壓縮包包含整個solution。在安裝好VS2010和配置好OpenCV包含等的情況下,可以直接加壓縮,點擊.sln文件打開整個項目。壓縮包內容為智能視頻監控的整個project(包含源碼)。具體實現方法是利用幀差法獲得差分圖像,分析差分圖像得出物體運動的軌跡和拍照錄像與警報等。
代碼片段和文件信息
#include?
#include?
#include?
using?namespace?std;
using?namespace?cv;
int?videoplay();
void?on_Trackbar(int?void*);
char*?str_gettime();
int?bSums(Mat?src);
char?g_str[17];
int?g_nNum?=?0;//圖片名稱
int?g_nDelay?=?0;
int?g_npic?=?0;
Mat?g_filpdstMat;
int?g_pointnum?=?1000;//設置像素點閾值生成圖片
int?g_pixel?=?0;//像素點
int?main()
{
VideoCapture?capture(0);
//視頻輸出VideoWriter
CvVideoWriter*?outavi?=?NULL;
//VideoWriter?outavi;
//outavi.open(“sre.avi“-1?5.0?Size(640?480)?true);
outavi?=?cvCreateVideoWriter(“錄像.avi“?-1?5.0?cvSize(640?480)?1);
namedWindow(“攝像頭“WINDOW_AUTOSIZE);
namedWindow(“移動軌跡“WINDOW_AUTOSIZE);
IplImage?*pcpframe?=?NULL;
Mat?tempframe?currentframe?preframe?cpframe;
Mat?framejpg;
int?framenum?=?0;
//讀取一幀處理
while?(1)
{
if(!capture.isOpened())
{
cout?<“讀取失敗“?< return?-1;
}
capture?>>?frame;//讀取攝像頭把每一幀傳給frame
frame.copyTo(cpframe);//把frame賦給cpframe,不影響frame
tempframe?=?frame;//把frame賦給tempframe,影響frame
flip(tempframeg_filpdstMat1);//水平翻轉圖像
pcpframe?=?&IplImage(cpframe);//為了釋放窗口,把Mat轉化為IplImage使用
//cpframe=cvarrToMat(pcpframe);
//ipl轉化矩陣???pBinary?=?&IplImage(Img)
//7幀截取一次錄入視頻,頻繁截取運轉不過來
if(framenum?%?7?==?0)
{
//錄像寫入
cvWriteframe(outavi?pcpframe);
}
//判斷幀數,若為第一幀,把該幀作為對比幀
//若大于等于第二幀,則進行幀差法處理
framenum++;?
if?(framenum?==?1)
{
cvtColor(g_filpdstMat?preframe?CV_BGR2GRAY);
}
if?(framenum?>=?2)
{
cvtColor(g_filpdstMat?currentframe?CV_BGR2GRAY);
//灰度圖
absdiff(currentframepreframecurrentframe);//幀差法?
threshold(currentframe?currentframe?30?255.0?CV_THRESH_BINARY);
//二值化
erode(currentframe?currentframeMat());//腐蝕
dilate(currentframe?currentframeMat());//膨脹
g_pixel?=?bSums(currentframe);//調用函數bSums,計算白色像素點,賦值給g_pixel
//小延遲后輸出當前像素點數值,防止數據刷太快看不清
g_nDelay++;
if(g_nDelay?>?5)
{
cout<“當前白色像素點:“?< cout?<“按ESC退出“?< g_nDelay?=?0;
}
//創建像素點滑軌
createTrackbar(“像素點:““移動軌跡“&g_pointnum?20000on_Trackbar);
on_Trackbar(0?0);//調用回調函數
//顯示圖像??
imshow(“攝像頭“?g_filpdstMat);
imshow(“移動軌跡“?currentframe);
}
//把當前幀保存作為下一次處理的前一幀
cvtColor(g_filpdstMat?preframe?CV_BGR2GRAY);
//判斷退出,并銷毀錄像窗口,否則下一步錄像無法打開
if((char)waitKey(10)?==?27){cvReleaseVideoWriter(&outavi);break;}
}//end?while??
while(1)
{
//顯示提示窗口
jpg?=?imread(“模式選擇.jpg“?1);
imshow(“模式選擇“jpg);
//設置key選擇操作
char?key;
key?=?waitKey(0);
if(key?==?‘p‘?||?key?==?‘P‘)//播放視頻
videoplay();
if(key?==?‘q‘?||?key?==?‘Q‘)//退出
break;
}
return?0;
}
//打開錄像
int?videoplay()
{
VideoCapture?video(“錄像.avi“);
if(!video.isOpened())
{
fprintf(stderr“打開失敗\n“);
return?false;
}
while(1)
{
Mat?frame;
video>>frame;
if(frame.emp
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.CA....??????4005??2019-03-31?09:54??cv_track_final\cv_track_final\cv_track_final.vcxproj
????.CA....???????957??2019-03-19?15:55??cv_track_final\cv_track_final\cv_track_final.vcxproj.filters
????.CA....???????143??2019-03-19?15:51??cv_track_final\cv_track_final\cv_track_final.vcxproj.user
????.CA....??????4909??2019-03-23?03:20??cv_track_final\cv_track_final\cv_track_final_main.cpp
????.CA....???????822??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\cl.command.1.tlog
????.CA....?????17852??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\CL.read.1.tlog
????.CA....???????492??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\CL.write.1.tlog
????.CA....???????667??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\cv_track_final.exe.em
????.CA....???????732??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\cv_track_final.exe.em
????.CA....???????381??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\cv_track_final.exe.intermediate.manifest
????.CA....????????69??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\cv_track_final.lastbuildstate
????.CA....??????4699??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\cv_track_final.log
????.CA....???????713??2019-03-19?16:35??cv_track_final\cv_track_final\Debug\cv_track_final.vcxprojResolveAssemblyReference.cache
????.CA....?????????0??2019-03-19?15:55??cv_track_final\cv_track_final\Debug\cv_track_final.write.1.tlog
????.CA....????391728??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\cv_track_final_main.obj
????.CA....???????218??2019-03-19?16:00??cv_track_final\cv_track_final\Debug\cv_track_final_manifest.rc
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
????.CA....?????????2??2019-03-31?09:54??cv_track_final\cv_track_final\Debug\li
............此處省略32個文件信息
評論
共有 條評論