opencv CAMShift物件跟蹤

2021-10-09 18:37:03 字數 2988 閱讀 4036

當前使用版本opencv4.3

#include

#include

using

namespace cv;

using

namespace std;

//hsv

int smin =30;

int smax =

255;

int vmin =40;

int vmax =

255;

//calchist引數

int histsize =16;

//區間的個數

float hue_ranges=

;const

float

* ranges = hue_ranges;

//intmain

(int argc,

char

** ar**)

bool firstread =

true

; rect selection;

//selectroi用滑鼠選擇的roi區域

mat frame,hsv,mask,hue, temp_histogram, backprojection;

mat histogram = mat::

zeros

(300

,300

,cv_8uc3)

;namedwindow

("camshift tracking"

, window_autosize)

;while

(capture.

read

(frame)

)//轉換到hsv空間

cvtcolor

(frame, hsv, color_bgr2hsv)

;//測試矩陣frame的元素是否在其他兩個矩陣的值之間//提取黃色

inrange

(hsv,

scalar(0

, smin, vmin)

,scalar

(180

, smax, vmax)

, mask)

; hue =

mat(hsv.

size()

, hsv.

depth()

);int channels=

;//fromto對映//指定被複製通道與要複製到的位置組成的索引對

size_t npairs =

1;指定被複製通道與要複製到的位置channels[

]組成的索引對

mixchannels

(&hsv,1,

&hue,

1, channels, npairs)

;//輸入矩陣通道 重新排列到 輸出矩陣通道(hsv中的h值)

if(firstread)

cvtcolor

(colorindex, colorindex, color_hsv2bgr)

;for

(int j =

0; j < histsize; j++

) firstread =

false

;//需要繪製第一幀的直方圖

}//直方圖反向投影

/*void calcbackproject(

const mat* images, //輸入的陣列

int nimages, //輸入陣列的個數

const int* channels, //需要統計的通道索引

inputarray hist, //輸入的直方圖

outputarray backproject,//目標的反向投影

const float** ranges, //每一位數值的取值範圍

double scale=1, //輸出方向投影的縮放因子

bool uniform=true //指示直方圖是否均勻的識別符號)*/

//用來計算畫素和直方圖模型中畫素吻合度的方法

calcbackproject

(&hue,1,

0, temp_histogram, backprojection,

&ranges)

; backprojection &

= mask;

//a&=b 即 a=a&b 其中&為位與運算//給b取了乙個別名叫a,所有對b的操作都是直接作用於a

//camshift

rotatedrect trackbox =

camshift

( backprojection,

//反向投影

selection,

//矩形搜尋框

termcriteria

((termcriteria::count | termcriteria::eps),10

,1))

;//迭代中止條件

//繪製位置更新顯示在frame上

//獲取camshift的返回值,是乙個旋轉矩形,根據旋轉矩形繪製乙個橢圓形顯示在影象上作為追蹤結果。

對建立游標對理解

步驟 1 首先經過底層的 編寫已經建立起了了python和資料庫之間的溝通橋梁並封裝成了模組,通過pymysql下的conntent 方法與之建立起了連線,例項物件。pymysql.connect 方法返回的是connections模組下的connection 例項,connect 方法傳參就是在給...

對勾函式 對勾函式

對勾函式是一種類似於反比例函式的一般函式。所謂的對勾函式,是形如 f x ax b x 的函式,是 一種教材上沒有但考試老喜歡考的函式,所以更加要注意和學習。一般的函式影象形似兩個中心對稱的 對勾,故名。當x 0 時,f x ax b x 有最小值 這裡為了研究方便,規定a 0 b 0 也就是當 x...

一對多 多對一

pip install djangorestframework 3.9.2 pip install markdown 3.0.1 markdown support for the browsable api.pip install django filter 2.1.0 filtering supp...