日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc

發布時間:2025/3/21 45 豆豆

OpenCV學習筆記(十六)——CamShift研究

CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是對視頻圖像的多幀進行MeanShift運算,將上一幀結果作為下一幀的初始值,迭代下去。基本步驟為:

1.選取關鍵區域

2.計算該區域的顏色概率分布--反向投影圖

3.用MeanShift算法找到下一幀的特征區域

4.標記并重復上述步驟

該算法的關鍵就是可以在目標大小發生改變的時候,可以自適應的調整目標區域繼續跟蹤

在進行CamShitf和MeanShift算法的時候,需要輸入反向投影圖,這就要求有個很重要的預處理過程是計算反向投影圖。對應的函數為calcBackProject。所謂反向投影圖就是一個概率密度圖。calcBackProject的輸入通常為目標區域的直方圖和待跟蹤圖像的直方圖,輸出與待跟蹤圖像大小相同,每一個像素點表示該點為目標區域的概率。這個點越亮,該點屬于物體的概率越大。這樣的輸入參數太適合做MeanS算法了。關于反向直方圖,可以參考一下這篇文章http://blog.163.com/thomaskjh@126/blog/static/370829982010112810358501/

具體代碼如下:

[cpp]?view plain?copy
  • calcHist(&roi,?1,?0,?maskroi,?hist,?1,?&hsize,?&phranges);??
  • calcBackProject(&hue,?1,?0,?hist,?backproj,?&phranges);??
  • backproj?&=?mask;??
  • RotatedRect?trackBox?=?CamShift(backproj,?trackWindow,??
  • ????????????????????????????????TermCriteria(?CV_TERMCRIT_EPS?|?CV_TERMCRIT_ITER,?10,?1?)); ?


  • ?OpenCV學習筆記(十七)——運動分析和物體跟蹤Video

    這個庫中相關的函數有calcOpticalFlowPyrLK、calcOpticalFlowFarneback、estimateRigidTransform、updateMotionHistory、calcMotionGradient、calcGlobalOrientation、segmentMotion、CamShift、meanShift;還有卡爾曼濾波器類KalmanFilter,類內成員函數有構造函數、init、predict、correct。背景單元類BackgroundSubtractor,包括運算符重載,getBackgroundImage,其派生類BackgroundSubtractorMOG和BackgroundSubtractorMOG2,以及只支持Python版本的函數CalcOpticalFlowBM、CalcOpticalFlowHS,c版本的函數cvCalcOpticalFlowLK

    這些函數每一個背后幾乎都是一篇論文,很多都是經典的方法,我才疏識淺,只能邊學邊總結,先介紹一些我用過的函數,待日后陸續補充

    calcOpticalPlowPyrLK是利用Lucas-Kanade方法計算圖像的光流場



    ?OpenCV學習筆記(十八)——圖像的各種變換(cvtColor*+)imgproc?

    imgproc是OpenCV一個比較復雜的lib,我是分開介紹的,之前介紹過了濾波器、直方圖、結構分析和形狀描述三節,這次介紹一下圖像的變換,OpenCV對于圖像的變換又可分為幾何變換和其他的變換,我這節先介紹一下其他的變換。

    這部分的函數包括adaptiveThreshold,對圖像進行自適應的閾值操作。

    相應的也有更一般常用的閾值操作函數threshold。

    這里還是詳細介紹一下cvtColor,這個函數是用來進行顏色空間的轉換,隨著OpenCV版本的升級,對于顏色空間種類的支持也是越來越多。這里匯總一下,把我知道的全部空間列舉出來,也許還不完整,希望大家補充。需要先告訴大家的是OpenCV默認的圖片通道是BGR

    RGB <--> BGR:CV_BGR2BGRA、CV_RGB2BGRA、CV_BGRA2RGBA、CV_BGR2BGRA、CV_BGRA2BGR

    RGB <--> 5X5:CV_BGR5652RGBA、CV_BGR2RGB555、(以此類推,不一一列舉)

    RGB <---> Gray:CV_RGB2GRAY、CV_GRAY2RGB、CV_RGBA2GRAY、CV_GRAY2RGBA

    RGB <--> CIE XYZ:CV_BGR2XYZ、CV_RGB2XYZ、CV_XYZ2BGR、CV_XYZ2RGB

    RGB <--> YCrCb(YUV) JPEG:CV_RGB2YCrCb、CV_RGB2YCrCb、CV_YCrCb2BGR、CV_YCrCb2RGB、CV_RGB2YUV(將YCrCb用YUV替代都可以)

    RGB <--> HSV:CV_BGR2HSV、CV_RGB2HSV、CV_HSV2BGR、CV_HSV2RGB

    RGB <--> HLS:CV_BGR2HLS、CV_RGB2HLS、CV_HLS2BGR、CV_HLS2RGB

    RGB <--> CIE L*a*b*:CV_BGR2Lab、CV_RGB2Lab、CV_Lab2BGR、CV_Lab2RGB

    RGB <--> CIE L*u*v:CV_BGR2Luv、CV_RGB2Luv、CV_Luv2BGR、CV_Luv2RGB

    RGB <--> Bayer:CV_BayerBG2BGR、CV_BayerGB2BGR、CV_BayerRG2BGR、CV_BayerGR2BGR、CV_BayerBG2RGB、CV_BayerGB2RGB、 CV_BayerRG2RGB、CV_BayerGR2RGB(在CCD和CMOS上常用的Bayer模式)

    YUV420 <--> RGB:CV_YUV420sp2BGR、CV_YUV420sp2RGB、CV_YUV420i2BGR、CV_YUV420i2RGB

    還有函數distanceTransform,是用來計算各像素距離最近的零像素距離的。

    floodFill函數用來用指定顏色填充一個連通部件。

    inpaint函數用來用附近區域信息重建選中區域,可以對圖像里由于傳輸噪聲丟失的塊進行重建。

    integral函數用來獲得圖像的積分值。

    尋找邊界使用分水嶺分割辦法的函數watershed

    對圖像進行GrabCut算法的grabCut函數(有待研究,不熟悉)。

    總之,這些變換千奇百怪,不是很系統,常用的還是我先介紹的幾個,比如threshold、cvtColor。就這樣吧,以后有收獲再陸續補充。



    OpenCV學習筆記(十九)——淺嘗contrib?

    contrib為最新貢獻但不是很成熟的函數庫。作為最新的東西,就更有價值進行庖丁解牛了,我來也。

    首先介紹一個CvAdaptiveSkinDetector類。該類的功能是自適應的皮膚檢測。分析了一下代碼,其構造函數的輸入參數有兩個,samplingDivider樣本分類,morphingMethod為變形方法。該類的關鍵函數為process函數,該函數先將輸入圖像由RGB轉換為HSV空間,Hue的范圍是3~33,Intensity(V)的范圍為15~250。然后進行必要的腐蝕膨脹,去除噪聲,使輪廓更加清晰平滑。具體的使用代碼參考sample文件夾中的adaptiveskindetector.cpp



    OpenCV學習筆記(二十)——手勢識別


    最近也在玩手勢識別,資料找了很多,基本可以分為靜態手勢識別和動態手勢識別,先弄個簡單的靜態手勢識別給大家看看。

    基本流程如下:

    先濾波去噪-->轉換到HSV空間-->根據皮膚在HSV空間的分布做出閾值判斷,這里用到了inRange函數,然后進行一下形態學的操作,去除噪聲干擾,是手的邊界更加清晰平滑-->得到的2值圖像后用findContours找出手的輪廓,去除偽輪廓后,再用convexHull函數得到凸包絡。

    結果如下:


    源代碼下載位置:http://download.csdn.net/detail/yang_xian521/3746669,有點貴哦,當時隨便設了個值,呵呵



    from: http://blog.csdn.net/yang_xian521/article/category/910716

    總結

    以上是生活随笔為你收集整理的OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。