opencv學習筆記五十九:影象融合之背景替換
以證件照為例,圖片中有大部分為背景,先用kmeans對影象進行分割,可以得到背景的標籤,然後將影象分為前景和背景兩部分,非背景的都當作前景,顯示kmeans分割後的影象dst,將原影象前景賦給dst, 背景都設為0,得到kmeans分割後的影象如下,可看到邊緣處有一些小藍邊,過渡比較粗超:
所以設定遮罩層對邊緣進行融合,新建掩碼mask單通道影象,將前景部分置1,背景部分置0,然後對mask進行腐蝕和高斯模糊,則mask前景部分為1,背景部分為0,邊緣部分非0和1。新建結果影象result,對於mask中前景部分,將原影象賦給result,對於mask中背景部分,將隨機生成的顏色賦給result,對於邊緣部分,對前景和背景進行融合。
可看到邊緣融合後的影象看起來就比較和諧了。
相關推薦
opencv學習筆記五十九:影象融合之背景替換
以證件照為例,圖片中有大部分為背景,先用kmeans對影象進行分割,可以得到背景的標籤,然後將影象分為前景和背景兩部分,非背景的都當作前景,顯示kmeans分割後的影象dst,將原影象前景賦給dst, 背景都設為0,得到kmeans分割後的影象如下,可看到邊緣處有一些小藍邊,
opencv學習筆記五十七:基於分水嶺的影象分割
#include<opencv2\opencv.hpp> using namespace cv; using namespace std; int main(int arc, char** argv) { Mat src = imread("1.jpg");
opencv學習筆記二十九:SIFT特徵點檢測與匹配
SIFT(Scale-invariant feature transform)是一種檢測區域性特徵的演算法,該演算法通過求一幅圖中的特徵點(interest points,or corner points)及其有關scale 和 orientation 的描述子得到特徵並進行
opencv學習筆記三十九:視訊讀寫
VideoCapture:視訊抓取的類 VideoWriter :寫視訊的類 fps(frame per second)幀率:每秒抓取顯示多少幀 #include<opencv2\opencv.hpp> using namespace cv; int m
opencv學習筆記四十九:基於距離變換和區域性自適應閾值的物件計數
案例背景:統計下圖中玉米粒的個數 方案思路:先灰度化,再二值化(基於THRESH_TRIANGLE,圖中直方圖有明顯的雙峰值),腐蝕去掉一些小雜點,距離變換,再自適應區域性閾值,膨脹連成連通域,尋找輪廓進行計數。 距離變換於1966年被學者首次提出,目前已被廣泛應
opencv學習筆記五十二:基於Haar或LBP級聯分類器的實時人臉人眼檢測
#include<opencv2\opencv.hpp> using namespace cv; using namespace std; int main(int arc, char** argv) { namedWindow("output",
opencv學習筆記五十六:分水嶺分割演算法
一、基於分水嶺的分割演算法是受自然界地貌啟發而來的對灰度圖的地形學解釋,我們考慮以下三點: 1. 區域性最小值點,該點對應一個盆地的最低點,當我們在盆地裡滴一滴水的時候,由於重力作用,水最終會匯聚到該點。注意:可能存在一個最小值面,該平面內的都是最小值點。 2. 盆地的其
opencv學習筆記五十八:grabCut摳圖
基本步驟: 基於互動式介面由使用者選擇前景區域; 定義一個單通道的輸出掩碼,0為背景,1為前景,2為可能的背景,3為可能的前景; grabCut摳圖;將輸出結果與可能的前景作比較得到可能的前景; 定義三通道的結果影象; 從原圖中拷貝可能的前景到結果影象; grabC
opencv學習筆記七十一:影象修復
當我們的照片有劃痕或遭到人為的塗鴉(比如馬賽克)時, 如果我們想讓這些遭到破壞的圖片儘可能恢復到原樣,Opencv能幫我們做到嗎?答案是肯定的。 那麼影象修復技術的原理是什麼呢? 簡而言之,就是利用那些已經被破壞的區域的邊緣, 即邊緣的顏色和結構,根據這些影象留下的資訊去
opencv學習筆記三十二:Haar特徵與積分影象
一、 Haar特徵定義 Haar特徵是基於“塊”的特徵,也被稱為矩形特徵。Haar特徵(模板)分為三類:邊緣特徵、線性特徵、中心特徵和對角線特徵。特徵模板內有白色和黑色兩種矩形,並定義該模板的特徵值為白色矩形畫素和減去黑色矩形畫素和。Haar特徵值反映了影象
opencv學習筆記五十:透視變換綜合例項
案例背景:對下圖發生畸變的影象進行校正 方案思路:灰度二值化分割,閉操作,尋找輪廓,霍夫直線檢測,直線排序,直線方程,直線交點,透視矩陣,透視變換。 #include<opencv2\opencv.hpp> using namespace cv; usi
opencv學習筆記三十六:AKAZE特徵點檢測與匹配
KAZE是日語音譯過來的 , KAZE與SIFT、SURF最大的區別在於構造尺度空間,KAZE是利用非線性方式構造,得到的關鍵點也就更準確(尺度不變性 ); Hessian矩陣特徵點檢測 ,方向指定,基於一階微分影象(旋轉不變性 ) ; 描述子生成 ,歸一化處理(光照不變
opencv學習筆記四十二:稠密光流跟蹤
利用Gunnar Farneback演算法計算全域性性的稠密光流演算法(即影象上所有畫素點的光流都計算出來),由於要計算影象上所有點的光流,故計算耗時,速度慢 稠密光流需要使用某種插值方法在比較容易跟蹤的畫素之間進行插值以解決那些運動不明確的畫素 calcOpticalF
opencv學習筆記四十四:移動物件統計
步驟: 利用背景消除法找到移動的物體; 預處理:進行中值濾波消除椒鹽噪聲,然後二值化再開操作; 尋找輪廓; 畫出輪廓最小矩形並統計。 #include<opencv2\opencv.hpp> using namespace cv; using namesp
Python3+OpenCV學習筆記(四):影象濾波基礎(均值、高斯、中值、雙邊)
OpenCV中還可以在影象上進行繪圖操作,由於資料都比較完善,所以附上鍊接,自行參悟。 好了,進入正題。在一張影象,在資料儲存或傳輸的過程中,或多或少都會引入噪聲,常見的影象噪聲如高斯噪聲、瑞利噪聲、椒鹽噪聲等,可參加連結:數字影象噪聲 為了避免噪聲對影象資訊進行干擾或
OpenCV學習筆記(十四)——影象結構分析與形狀描述ImgProc
OpenCV支援大量的輪廓、邊緣、邊界的相關函式,相應的函式有moments、HuMoments、findContours、drawContours、approxPolyDP、arcLength、boundingRect、contourArea、convexHull、fit
opencv學習筆記(十八)——影象非線性濾波
非線性濾波 非線性濾波是原始資料與濾波結果是一種邏輯關係,即用邏輯運算實現,而線性濾波採用的是算術運算結果。 中值濾波(Median filter) 中值濾波介紹 中值濾波是一種典型的非線性濾波技術,基本思想就是用畫素點鄰域灰度值得中值來代替該畫
C#回顧學習筆記三十九:事務
1)事務是什麼? 事務是保證多個操作全部成功時才認為是一次有效操作,當有一個操作失敗時就會認為全部操作無效,並且回到執行操作之前的狀態只有資料改變時(增加、修改、刪除)時才會引發事務,查詢不會引發事務。如果在寫入一個記錄時出現失敗,則事務會讓其他已經寫入的資料回滾,讓資料
Python3+OpenCV學習筆記(一):影象載入、顯示和儲存
img = cv2.imread('Rachel.jpg')載入影象後,當然需要顯示出來,我們才能看到,所以,接下來用到第二個函式cv2.imshow(windowname, filename)“windowname”輸入顯示視窗的名稱,引數型別str,需要開啟多個視窗時,只需要“windowname”不同
opencv學習筆記七十:影象拼接
簡要: 影象拼接在實際的應用場景很廣,舉一個例子,用你的手機對某一場景拍照,但是沒有辦法一次將所有你要拍的景物全部拍下來,所以你對該場景從左往右依次拍了好幾張圖,來把你要拍的所有景物記錄下來,影象拼接就是要將這些影象拼接成一個完整的大圖。 核心: 特徵點檢測 特徵點匹配