對不起,請稍等解釋。作爲Open的新手,希望通過例子提供更多細節。在C++中使用OpenCV移除背景
我的要求是找到2個靜態圖像三角洲,這個現在用以下方法:
cv::Mat prevImg = cv::imread("prev.bmp");
cv::Mat currImg = cv::imread("curr.bmp");
cv::Mat deltaImg;
cv::absdiff(prevImg,currImg,deltaImg);
cv::namedWindow("image", CV_WINDOW_NORMAL);
cv::absdiff(prevImg,currImg,deltaImg);
cv::imshow("image", deltaImg);
而在deltaImg,我得到的圖像之間的差異,但它包含了第一張圖片的背景也。我知道我必須使用BackgroundSubtractorMOG2刪除背景,但我無法理解此類的用法,因爲大多數示例均基於webcamera捕獲。
請注意我的圖像是靜態的(桌面活動的屏幕截圖)。
請指導我解決這個問題,一些示例代碼會有幫助。
注意我想計算RGB中的增量。
詳細Explination:
圖像處於:https://picasaweb.google.com/105653560142316168741/OpenCV?authkey=Gv1sRgCLesjvLEjNXzZg#
Prev.bmp:我dektop的一屏幕截圖
curr.bmp:我的臺式機的當前屏幕截圖
在prev.bmp和curr.bmp間的增量,應該是啓動菜單的圖像而已,請看下面的圖片:
增量圖像應該只包含啓動菜單,但是甚至包含prev.bmp的背景圖像,我想刪除此背景。
在此先感謝。
如何定義「delta」?哪裏有一些例子?你有沒有讀過關於這方面的視覺理論? – scap3y
嗨scap3y,編輯更多的細節和圖像鏈接,請檢查...謝謝 – user3239282
上傳兩個工作截圖(**相同的大小和相同的位置**和bmp/png而不是JPG)將是非常好的...現在我只能告訴你我會做什麼(而不是發佈測試代碼):添加一個'cv :: Mat掩碼= deltaImg> 0; currImg.copyTo(deltaImg,mask);'應該工作。 – Micka