資源簡介
利用LK光流法跟蹤ORB特征點,利用solvePnP計算相機姿態,并控制opengl里的相機,在特征點處畫AR物體。

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?cv;
using?namespace?std;
VideoCapture?cap(0);
static?int?resolution_width?=?640;
static?int?resolution_height?=?480;
static?int?num_track?=?4;
double?camD[9]?=?{618.526381968738?0?310.8963715614199
0?619.4548980786033?248.6374860176724
0?0?1};
double?distCoeffD[5]?=?{0.09367405350511771?-0.08731677320554751?0.002823563134787144?-1.246739177460954e-005?-0.0469061739387372};
Mat?camera_matrix?=?Mat(33CV_64FC1camD);
Mat?distortion_coefficients?=?Mat(51CV_64FC1distCoeffD);
vector?objP;
Mat?objPM;
vector?rv(3)?tv(3);
Mat?rvecm(rv)tvecm(tv);?
Mat?gray?prevGray?image?frame;
vector?points[2];
vector?keypoints;
vector?initPoints;
vector?recoveryPoints;
vector?projectedPoints;
vector?goodfeatures;
bool?initflag?=?true;
bool?needToGetgf?=?false;
bool?needtomap?=?false;
bool?needtokeeptime?=?false;
const?int?MAX_COUNT?=?500;
size_t?trackingpoints?=?0;
Mat?initdescriptors;
string?msg;
int?baseLine;
Size?textSize;
DWORD?t1t2;
int?framenum?=?0;
TermCriteria?termcrit(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS?30?0.01);
Size?subPixWinSize(1010)winSize(2121);
static?void?help()
{
//?print?a?welcome?message?and?the?OpenCV?version
cout?<“\n\n“
“\nUser:?cc.\n“
“\nUsing?OpenCV?version?“?< cout?<“\nHot?keys:?\n“
“????Tracking:?\n“
“\tESC?-?quit?the?program\n“
“\tg?-?get?the?good?corners\n“
“\tc?-?delete?all?the?points\n“
“\tm?-?choose?four?points?to?track?and?update?camera?pose?then\n“
“\t\t(To?add?a?tracking?point?please?click?that?point)\n“?
“????Generation:?\n“
“\tESC?-?quit?the?program\n“
“\te?-?change?the?view?mode\n“<
}
void?on_mouse(int?eventint?xint?yint?flag?void?*param)
{
if(event==CV_EVENT_LBUTTONDOWN)
{
if(needtomap?&&?points[1].size() {
for(size_t?i?=?0;i {
if(abs(goodfeatures[i].x-x)+abs(goodfeatures[i].y-y)<5)
{
points[1].push_back(goodfeatures[i]);
initPoints.push_back(keypoints[i]);
trackingpoints++;
break;
}
}
Mat?temp;
image.copyTo(temp);
for(size_t?i?=?0;?i? {
circle(?temp?points[1][i]?3?Scalar(00255)?-1?8);
}
msg?=?format(?“Resolution:?%d?*?%d.??Corner?number:?%d.??Tracked?points:?%d“(int)cap.get(CV_CAP_PROP_frame_WIDTH)(int)cap.get(CV_CAP_PROP_frame_HEIGHT)goodfeatures.size()trackingpoints);
baseLine?=?0;
textSize?=
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4756??2015-11-02?17:28??cPTAM_2.0\cPTAM_2.0\cPTAM_2.0.vcxproj
?????文件????????941??2015-09-18?16:35??cPTAM_2.0\cPTAM_2.0\cPTAM_2.0.vcxproj.filters
?????文件????????164??2015-11-02?16:48??cPTAM_2.0\cPTAM_2.0\cPTAM_2.0.vcxproj.user
?????文件????????720??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\cl.command.1.tlog
?????文件??????33262??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\CL.read.1.tlog
?????文件????????492??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\CL.write.1.tlog
?????文件?????????94??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\cPTAM_2.0.lastbuildstate
?????文件???????2447??2015-11-02?17:28??cPTAM_2.0\cPTAM_2.0\Debug\cPTAM_2.0.log
?????文件????????720??2015-11-02?17:28??cPTAM_2.0\cPTAM_2.0\Debug\cPTAM_2.0.tlog\cl.command.1.tlog
?????文件??????33554??2015-11-02?17:28??cPTAM_2.0\cPTAM_2.0\Debug\cPTAM_2.0.tlog\CL.read.1.tlog
?????文件????????664??2015-11-02?17:28??cPTAM_2.0\cPTAM_2.0\Debug\cPTAM_2.0.tlog\CL.write.1.tlog
?????文件????????194??2015-11-02?17:28??cPTAM_2.0\cPTAM_2.0\Debug\cPTAM_2.0.tlog\cPTAM_2.0.lastbuildstate
?????文件???????2244??2015-11-02?17:28??cPTAM_2.0\cPTAM_2.0\Debug\cPTAM_2.0.tlog\li
?????文件???????5640??2015-11-02?17:28??cPTAM_2.0\cPTAM_2.0\Debug\cPTAM_2.0.tlog\li
?????文件????????648??2015-11-02?17:28??cPTAM_2.0\cPTAM_2.0\Debug\cPTAM_2.0.tlog\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
?????文件??????????2??2015-11-02?16:36??cPTAM_2.0\cPTAM_2.0\Debug\li
............此處省略108個文件信息
評論
共有 條評論