opencv3的tracking部分在opencv_contrib中,需要用cmake對其進行編譯後才能使用。
create
//通過名稱建立乙個***。
create(
const
string& trackertype//要使用的***演算法的名稱。
);
init
//使用圍繞目標的邊界框初始化***
init(
const mat& image, //初始幀
const rect2d& boundingbox//初始繫結框
);
init()如果初始化成功,則返回true,否則返回false.
update
//更新***,找到目標的最可能的邊界框。
update(
const mat& image,//當前幀
cv_out rect2d& boundingbox//新目標位置的邊界框,若為true,則返回;否則不進行修改。
);
update()返回true時表示目標被定位,false表示***不能在當前幀中定位目標(目標確實從框架中丟失)。
#include
#include
using
namespace cv;
int main()
namedwindow("output", window_autosize);
ptrtracker = tracker::create("kcf");
//tld速度超慢
//ptrtracker = tracker::create("tld");
//ptrtracker = tracker::create("medianflow");
capture.read(frame);
//翻轉影象
flip(frame, frame, 1);
rect2d roi;
roi = selectroi("output", frame);
if (roi.width == 0 || roi.height == 0)
//跟蹤
tracker->init(frame, roi);
while (capture.read(frame))
flip(frame, frame, 1);
tracker->update(frame, roi);
rectangle(frame, roi, scalar(255, 0, 0), 2, 8, 0);
imshow("output", frame);
char c = waitkey(1);
if (c==27)
}capture.release();
return
0;}
框選目標:
目標跟蹤:
opencv3 C 基於顏色的目標跟蹤方式
inrange函式 void inrange inputarray src,inputarr程式設計客棧ay lowerb,inputarray upperb,outputarray dst src 輸入影象 lowerb 下邊界陣列,閾值下限 upperb 上邊界陣列,閾值上限 dst 輸出影象 ...
opencv3之目標跟蹤(單目標 多目標)
對於剛入門的opencv玩家,提起目標跟蹤,馬上想起的就是camshift,但是camshift跟蹤往往達不到我們的跟蹤要求,包括穩定性和準確性。opencv3.1版本發行後,整合了多個跟蹤演算法,即tracker,大部分都是近年vot競賽榜上有名的演算法,雖然仍有缺陷存在,但效果還不錯。ps 我在...
opencv3 C 離散余弦變換DCT
離散余弦變換 discrete cosine transform,根據離散傅利葉變換的性質,實偶函式的傅利葉變換只含實的余弦項,而數字影象都是實數矩陣,因此構造了一種實數域的變換 離散余弦變換 dct 離散余弦變換具有很強的 能量集中 特性,左上方稱為低頻資料,右下方稱為高頻資料。而大多數的自然訊號...