资源简介
基于opencv,用C++开发的基于模板匹配的,红外光照明下的实时瞳孔识别算法,带有搜索域跟踪功能,i7下cpu上处理能达到30fps以上
代码片段和文件信息
#include “tempMatchPupilDetect.h“
using namespace std;
using namespace cv;
VideoWriter outPutMaskoutPutContouroutPutProccessed;
int main() {
int videoSource=0;//0:read video file ; 1: open webcam
long totalframeNumber;
cv::VideoCapture capture;
long frameToStart = 10;
long frameIndex=frameToStart;
cv::Point2d center = cv::Point2d(0 0);
cv::Mat framepreframe;
cv::Rect roi;
int key;
int flag;
double scale =0.5;
Mat imgDiffAcumu;
int patchThre = 0;
int pupilMissCount =0;
Mat templateImg;
int pupilSizeMin = 9;
int pupilSizeMax = 10000;
int debugTag = 1;
if(!videoSource){
capture.open(“1.avi“);
totalframeNumber = capture.get(CV_CAP_PROP_frame_COUNT);
capture.set( CV_CAP_PROP_POS_frameSframeToStart);
cout<<“start frame:“<ameToStart<<“ to read“< else{
capture.open(0);
totalframeNumber = 100000000;}
if(!capture.isOpened())
cout<<“fail to open video source!“< double rate = capture.get(CV_CAP_PROP_FPS);
cout<<“fps:“<
//reading one frame for the preframe for calculate optical flow
if(!capture.read(frame)){
cout<<“reading frame failure“< return -1;}
frameIndex++;
roi = cv::Rect(0 0 0 0);
templateImg = Mat::ones(201201CV_8UC1)*255;
circle(templateImg
Point(101101)
50
0
-1
LINE_8);
namedWindow(“template from algrithm“);
imshow(“template from algrithm“templateImg);
if(debugTag){
outPutMask.open(“./mask.avi“ CV_FOURCC(‘D‘ ‘I‘ ‘V‘ ‘X‘) 30Size(200200) false);
outPutContour.open(“./contour.avi“ CV_FOURCC(‘D‘ ‘I‘ ‘V‘ ‘X‘) 30Size(200200) false);
outPutProccessed.open(“./proccessed.avi“CV_FOURCC(‘D‘ ‘I‘ ‘V‘ ‘X‘) 30Size(frame.colsframe.rows) true);
if (!outPutMask.isOpened()||!outPutContour.isOpened()||!outPutProccessed.isOpened()){
cout << “Could not open the output video for write: “ << endl;
return -1;
}
}
//start the detect task loop
while (key!=27 && key!= 1048603 && frameIndex < totalframeNumber) { //Esc key value in win is 27 and in linux is 1048603
double t = (double)cvGetTickCount(); //calculate the cost time
std::swap(preframe frame);
if(!capture.read(frame)){
cout<<“reading frame failure“< return -1;
}
std::cout<<“totalframeNumber:“<ameNumber<<“ frameIndex:“<ameIndex<
monoPupilDetect(frametemplateImgroicenterflagpatchThrepupilMissCountpupilSizeMinpupilSizeMaxdebugTag);
// opticalFlowPupilDetect(preframeframescaleroicenterflag);
// imgDiffProcess(preframeframeimgDiffAcumuscaleroi);
frameIndex++;
key = waitKey(1);
cout
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 89057 2019-03-18 20:10 pupil_extract_20170701\example.png
文件 884897 2019-03-18 20:19 pupil_extract_20170701\example2.png
文件 3564 2019-03-18 20:08 pupil_extract_20170701\main.cpp
文件 1222 2019-03-18 20:06 pupil_extract_20170701\pupil_extract.pro
文件 24118 2019-03-18 20:16 pupil_extract_20170701\pupil_extract.pro.user
文件 299 2019-03-18 20:15 pupil_extract_20170701\readme.txt
文件 16492 2017-07-01 01:57 pupil_extract_20170701\tempMatchPupilDetect.cpp
文件 912 2019-03-18 20:00 pupil_extract_20170701\tempMatchPupilDetect.h
目录 0 2019-03-18 20:20 pupil_extract_20170701
----------- --------- ---------- ----- ----
1020561 9
- 上一篇:modbus完整协议源码c/c++
- 下一篇:C语言环形队列
相关资源
- modbus完整协议源码c/c++
- GA遗传算法C++实现,控制台演示
- 用c++设计一个三角形类Triangle,包含三
- 用c++定义一个Book(图书)类
- Effective C++简体中文 完整书签
- C++实现的遗传算法实现TSP问题
- GPS卫星位置的计算
- 2个简单的专家系统源代码
- C++网络蜘蛛源码VS开发平台
- C++实现最小二乘法一元回归和多项式
- 房屋销售管理系统C++
- 条件平差的 C++代码
- MFC 鼠标实时画线
- MFC下好用的高速绘图控件-(Hight-Spe
- usb_hid_vc++6.0读写设备源码
- 换肤窗口VC++程序与源码
- 亦思C++VC调用
- 数据结构算法与应用--C++语言描述(代
- 非常好用的c++ ftp库源码vs2013工程
- C++实现的非常好的一个矩阵类
- VC++6.0写的网络爬虫程序
- 数据结构 银行排队系统
- c++11的中文文档
- C++调用百度地图案例VC++
- MFC 窗口缩放
- AES加密源码使用C++实现
- C++MFC画圆源代码
- 纯C++打造的Splash Screen类打造专业的启
- MUSIC算法c++实现
- C/C++语言图像处理:各种滤波
评论
共有 条评论