將中的某個元素,提取。這裡在黑白圖中扣取圓圈部分
#include
#include
#include
using
namespace std;
using
namespace cv;
#define pic_path "/work/opencv_pic/"
#define pic_name "case3.png"
intmain
(void
)imshow
("原圖顯示"
,src)
;cvtcolor
(src,gray_src,color_bgr2gray)
;//影象二值化
threshold
(gray_src,gray_src,0,
255,thresh_binary | thresh_otsu)
;//形態學開閉操作 去除噪點、不連續區域等干擾資訊 方便以後特徵提取
mat kernel =
getstructuringelement
(morph_rect,
size(3
,3),
point(-
1,-1
));//閉操作 消除小黑點 使某些不連續區域連續起來
morphologyex
(gray_src,gray_src,morph_close,kernel,
point(-
1,-1
));//開操作 消除小白點 使某些白色噪點消失 畫面更純淨
morphologyex
(gray_src,gray_src,morph_open,kernel,
point(-
1,-1
));//獲得純淨的 分割槽明顯的特徵圖
imshow
("形態學處理"
,gray_src)
;//輪廓查詢
vector> contours;
//輪廓集合
vector hierarchy;
//輪廓索引關係
findcontours
point(0
,0))
;//輪廓繪製
mat contourimg = mat::
zeros
(src.
size()
,cv_8uc3)
; mat circleimg = src.
clone()
;for
(size_t i=
0;isize()
;i++)}
waitkey(0
);destroyallwindows()
;return0;
}
opencv 物件提取與標記
物件提取 流程 1.轉換成灰度影象,並且二值化 2.通過膨脹消除洞洞 3.二值圖取非運算,將物件的值設定為255 4.計算物件二值圖的距離 5.搜尋輪廓,繪製物件 輸出結果 輸出結果 輸出結果 原始碼 include include include int main int argc,char ar...
OpenCv C 小案例實戰 物件提取
現在比如說我有這麼一張圖 我想要從中提取出 圓 的部分,那該怎麼做呢?用霍夫圓變換?no,萬一它不是乙個標準的圓呢?所以,這裡採用輪廓發現的方法來查詢 圓 解決思路 1 二值化 2 形態學操作 開運算 閉運算 3 輪廓點查詢 4 座標查詢。首先將影象進行二值化,輪廓點查詢需要二值化影象。先使用閉操作...
opencv案例之物件計數 自適應閾值介紹
農業領域經常需要計算物件個數或者在其他領域拍照自動計數,可以提高效率,降低成本 自適應閾值處理 在閾值處理操作中,僅通過設定固定閾值很難達到理想分割效果,我們需要從二值化的影象中分離目標區域和背景區域。實際上,目標和背景通常相互依存,我們可以從影象畫素領域塊的分布特徵來自適應確定區域的二值化閾值。o...