您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關C++ OpenCV中如何實現機器學習算法的背景消除建模,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
相關API及核心代碼
機器學習API和高斯混合模型建模很像,主要是的API為BackgroundSubtractorKNN,其核心代碼為:
cv::Mat bsmKNN;
cv::Ptr<cv::BackgroundSubtractor> pKNN = cv::createBackgroundSubtractorKNN();
pKNN->apply(frame, bsmKNN);
代碼演示
我們直接借用上次的代碼,在上面的基礎上直接看到兩個背景消除建模的不同。下面我直接把所有的代碼貼圖出來。
從上面的代碼中我們看到,用機器學習KNN的方式和高斯混合模型的方式基本差不多,就是在創建的時候用的不同的方法。我們直接看一下運行的視頻,看看有沒有什么不同之處。
看完上面的視頻不知道大家有沒有看出有什么不同呢?
其實后面的都差不大多,只有在剛開始播放的前幾幀時我們能看出來問題了,我把前幾幀截一下圖。
上面兩張圖是視頻的第4秒和視頻的第5秒,從第4秒(第一張圖)的圖我們可以看出左邊紅框的KNN是我們的機器學習背景建模,右邊紅框是原來高斯混合模型的背景消除建模,KNN由于是機器學習,所以前幾幀的時候需要自己根據圖像在適應訓練,找到符合的背景后,然后就會自動消除背景,所以視頻的第5秒(第二張圖)KNN的框已經完全變成黑色的了,而利用高斯混合模型進行圖像分割時,從第一張圖上就已經進行背景的分割了。
這就是圖像分割和機器學習兩種BS算法的差別,真正項目中我們可以用比較適合項目的方法進行圖像處理。
關于“C++ OpenCV中如何實現機器學習算法的背景消除建模”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。