資源簡介
人臉檢測,檢測人睜閉眼睛,可以判斷是否疲勞駕駛,代碼是vc+opencv工程,里面自帶有opencv的dll庫。
代碼片段和文件信息
//?FatigueDetecting.cpp?:?定義控制臺應用程序的入口點。
//
#include?“stdafx.h“
#include?
#include?
#include?
#include?“FaceDetect.h“
#include?“Function.h“
#include?“SVMTrain.h“
#include?“Feature.h“
using?namespace?DpFat;
using?namespace?std;
const?int?DESIRED_CAMERA_WIDTH?=?640;
const?int?DESIRED_CAMERA_HEIGHT?=?480;
const?char?*windowName?=?“CameraFaceRec“;???//?Name?shown?in?the?GUI?window.
#if?!defined?VK_ESCAPE
#define?VK_ESCAPE?0x1B??????//?Escape?character?(27)
#endif
void?ImgTest();
void?VideoTest();
void?CameraTest();
const?string?option[]?=
{
“1.?圖片測試;“
“2.?視頻測試;“
“3.?攝像頭測試;“
“4.?SVM訓練(沒分類);“
“5.?SVM訓練(已分類);“
“6.?SVM測試;“
“7.?退出;“
};
const?int?optionCount?=?7;
int?_tmain(int?argc?_TCHAR*?argv[])
{
bool?isExit?=?false;
while?(isExit?!=?true)
{
stringstream?selectOption(stringstream::in?|?stringstream::out);
selectOption?<“Fatigue?Detecting?Option:“< for(int?i?=?0;?i? {
selectOption?< }
cout?<“////////////////////////////////////“< cout?< cout?<“////////////////////////////////////“< cout?<“請選擇一項操作:“;
int?select?=?-1;
bool?isRepeat?=?true;
while?(isRepeat)
{
cin?>>?select;
isRepeat?=?false;
switch?(select)
{
case?1:
ImgTest();
break;
case?2:
VideoTest();
break;
case?3:
CameraTest();
break;
case?4:
SVMTrain(false);
break;
case?5:
SVMTrain(true);
break;
case?6:
SVMTest();
break;
case?7:
isExit?=?true;
break;
case?-1:
isExit?=?true;
break;
default:
cout?<“輸入錯誤,請重新輸入:“;
isRepeat?=?true;
select=5;
break;
}
}
}
return?0;
}
void?ImgTest()
{
static?const?char*?const?path?=?“../data/144909636.webp“;
cv::Mat_?img(cv::imread(path?CV_LOAD_IMAGE_GRAYSCALE));
if?(!img.data)
{
printf(“Cannot?load?%s\n“?path);
return;
}
FaceDetect?detect;
if(!detect.LoadCascades(“../data/“))
{
cout<<“Load?detect?cascade?error!“< }
try
{
CvSVM?svm;
string?path?=?“svmfat.xml“;
svm.load(path.c_str()?“svm“);
cout?<“Begin?to?predict“?<
Face?aFace=detect.DetectFace(img);
cv::Rect?rcFace=aFace.GetFace();
if?(rcFace.width>0)
{
rectangle(imgrcFaceScalar(000)2);
cv::Rect?rcLEye=aFace.GetLEye();
cv::Rect?rcREye=aFace.GetREye();
int?iLfet=1iRight=1;
if?(rcREye.width>0)
{
//rectangle(imgrcREyeScalar(000)2);
Mat?eye=img(rcREye).clone();
resize(eyeeyecv::Size(F_WIDTHF_HEIGHT));
equalizeHist(eyeeye);
Mat?features;
GetHistogram(eye?features);
features?=?features.reshape(1?1);
features.convertTo(features?CV_32FC1);
iRight?=?(int)svm.predict(features);
if?(iRight)
{
cout<<“open?right?eye!“< }
else
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-03-02?16:29??FatigueDetecting\
?????目錄???????????0??2017-12-27?16:55??FatigueDetecting\Debug\
?????文件????????8162??2016-03-28?16:22??FatigueDetecting\Debug\BuildLog.htm
?????目錄???????????0??2016-03-02?16:29??FatigueDetecting\DpPerclos\
?????文件?????????520??2015-06-01?08:45??FatigueDetecting\DpPerclos\Face.cpp
?????文件?????????715??2015-06-01?09:07??FatigueDetecting\DpPerclos\Face.h
?????文件????????6605??2015-06-08?17:14??FatigueDetecting\DpPerclos\FaceDetect.cpp
?????文件????????1457??2015-06-01?09:07??FatigueDetecting\DpPerclos\FaceDetect.h
?????文件????????2705??2015-06-09?09:15??FatigueDetecting\DpPerclos\Feature.cpp
?????文件?????????890??2015-06-10?15:25??FatigueDetecting\DpPerclos\Feature.h
?????文件????????9328??2015-06-05?09:13??FatigueDetecting\DpPerclos\Function.cpp
?????文件????????2275??2015-06-05?09:13??FatigueDetecting\DpPerclos\Function.h
?????文件????????4479??2015-06-08?08:58??FatigueDetecting\DpPerclos\Histogram.h
?????文件???????12020??2015-06-09?10:22??FatigueDetecting\DpPerclos\SVMTrain.cpp
?????文件?????????813??2015-06-09?13:54??FatigueDetecting\DpPerclos\SVMTrain.h
?????文件???????15127??2015-06-11?16:55??FatigueDetecting\FatigueDetecting.cpp
?????文件????????6618??2015-06-05?09:32??FatigueDetecting\FatigueDetecting.vcproj
?????文件????????1423??2017-12-27?17:00??FatigueDetecting\FatigueDetecting.vcproj.DEPPON.141176.user
?????文件????????1423??2015-06-16?18:13??FatigueDetecting\FatigueDetecting.vcproj.zr-PC.zr.user
?????文件????????1237??2015-05-29?16:58??FatigueDetecting\ReadMe.txt
?????目錄???????????0??2017-12-27?16:58??FatigueDetecting\Release\
?????文件???????12168??2015-06-11?17:25??FatigueDetecting\Release\BuildLog.htm
?????文件?????1031542??2015-06-01?14:17??FatigueDetecting\Release\Face.obj
?????文件?????1073052??2015-06-08?17:14??FatigueDetecting\Release\FaceDetect.obj
?????文件?????????616??2015-06-11?17:25??FatigueDetecting\Release\FatigueDetecting.exe.intermediate.manifest
?????文件?????1132734??2015-06-11?17:25??FatigueDetecting\Release\FatigueDetecting.obj
?????文件?????1062786??2015-06-10?15:25??FatigueDetecting\Release\Feature.obj
?????文件?????1182296??2015-06-05?09:13??FatigueDetecting\Release\Function.obj
?????文件?????1193043??2015-06-10?15:25??FatigueDetecting\Release\SVMTrain.obj
?????文件??????????65??2015-06-11?17:25??FatigueDetecting\Release\mt.dep
?????文件???????35102??2015-06-01?14:17??FatigueDetecting\Release\stdafx.obj
............此處省略512個文件信息
評論
共有 條評論