91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 10.88MB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2023-10-09
  • 語言: C/C++
  • 標簽: meanShift??目標跟蹤??

資源簡介

使用C++實現了meanShift跟蹤算法,通過跟蹤視頻中的物體驗證了其可行性。文檔中包含源代碼和一個meanShift原理講解文檔

資源截圖

代碼片段和文件信息

#include?“core/core.hpp“????
#include?“highgui/highgui.hpp“????
#include?“imgproc/imgproc.hpp“
#include?“video/tracking.hpp“
#include????
#include?
using?namespace?cv;????
using?namespace?std;????

Mat?image;
bool?leftButtonDown?=?false;//?鼠標左鍵是否按下
bool?videoPauseFlag?=?false;//?是否暫停視頻
bool?trackingFlag?=?false;//?是否開始meanShift跟蹤
Point?pt1?pt2;//?記錄選擇區域的左上點/右下點
Rect?rect;//?跟蹤區域
vector?dstRegionDensity;//?目標跟蹤區域的核函數估計密度向量
vector?testRegionDensity;//?候選區域的核函數估計密度向量
vector?w;//?meanShift公式中的權值計算
int?densityNum?=?4096;//?對于每一幀圖像的R/G/B三通道,每個通道按照值的大小分為16個區間,所以密度向量為16*16*16=4096維
void?onMouse(int?eventint?xint?yint?flags?void*?ustc);?//鼠標回調函數??
void?calcKernelDensity(Mat?imageSrc?vector&density?int?densityNum);?//?計算圖像的核函數估計密度向量
void?meanShiftTracking(Mat&?imageSrc?int?iteration?double?eps?Rect&?rect);//?meanShift算法跟蹤


int?main()
{
//?打開視頻文件
VideoCapture?cap(“768X576.avi“);
if(!cap.isOpened())
{
cout<<“cannot?open?avi?file“< return?-1;
}
//?全局鏈表分配空間
dstRegionDensity.resize(densityNum);
testRegionDensity.resize(densityNum);
w.resize(densityNum);

double?fps?=?cap.get(CV_CAP_PROP_FPS);//?獲取圖像幀率
int?pauseTime?=?(int)(1000.f/fps);
namedWindow(“video“);
setMouseCallback(“video“?onMouse);

while(1)
{
if(waitKey(pauseTime)?==?‘p‘)
{
videoPauseFlag?=?!videoPauseFlag;
}
if(videoPauseFlag)//?暫停視頻時不會更新圖像幀
continue;
else
{
cap>>image;
if(trackingFlag)
{
meanShiftTracking(image?30?0.2?rect);//?meanShift跟蹤
int?num?=?0;

/*for(int?n?=?0;?n? {
dstRegionDensity[n]?=?testRegionDensity[n];
}*/
rectangle(image?rect?Scalar(0?0?0));//?繪制出計算得到的跟蹤位置

}
}
imshow(“video“?image);

}

}

void?onMouse(int?eventint?xint?yint?flags?void*?ustc)
{
Mat?imageROI;
//?鼠標左鍵按下獲取區域起始點
if(event?==?CV_EVENT_LBUTTONDOWN&&!trackingFlag)
{
leftButtonDown?=?true;
pt1?=?Point(xy);
}
//?拖動選取區域并使用黑色線框顯示選擇區域
else?if(event?==?CV_EVENT_MOUSEMOVE?&&?leftButtonDown)
{
Mat?image_tmp;
image.copyTo(image_tmp);
pt2?=?Point(xy);
rectangle(image_tmp?pt1?pt2?Scalar(0?0?0));
imshow(“video“?image_tmp);
}
//?左鍵松開獲取區域結束點,確定目標跟蹤區域
else?if(event?==?CV_EVENT_LBUTTONUP?&&?leftButtonDown)
{
leftButtonDown?=?false;
pt2?=?Point(xy);
image(Rect(pt1?pt2)).copyTo(imageROI);
rect.x?=?std::min(pt1.x?pt2.x);
rect.y?=?std::min(pt1.y?pt2.y);
rect.width?=?pt1.x?>?pt2.x???pt1.x?-?pt2.x?:?pt2.x?-?pt1.x;
rect.height?=?pt1.y?>?pt2.y???pt1.y?-?pt2.y?:?pt2.y?-?pt1.y;

namedWindow(“imageROI“);
imshow(“imageROI“?imageROI);
//?計算目標跟蹤區域的核函數估計密度向量
calcKernelDensity(imageROI?dstRegionDensity?densityNum);
waitKey(2000);
destroyWindow(“imageROI“);
trackingFlag?=?true;
}

}


void?calcKernelDensity(Mat?imageSrc?vector&density?int?densityNum)
{
/*?選取的核函數輪廓函數為k(x)?=?1-x^2,其中x為圖

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????8131690??2013-11-13?17:44??meanShift\768x576.avi
?????文件????????5645??2017-11-06?16:23??meanShift\meanShiftTracking.cpp
?????文件?????3790678??2017-11-06?15:49??meanShift\meanshift算法簡介.pdf
?????目錄???????????0??2017-11-06?16:25??meanShift\

評論

共有 條評論