待檢測影象:
期望的檢測結果如下:
**實現如下:
第一步先將原影象轉換為灰度影象,然後來個二值化
結果如下:
先看下這張二值化的,要想得到眼球,我們可以通過乙個圓形的結構元素,對這張影象做個開操作(先腐蝕再膨脹),但是還存在乙個問題,中心的圓形區域還存在雜訊,需要先把這個雜訊剔除
element1 = cv.getstructuringelement(cv.morph_rect,(3
,3),
(-1,
-1))
tmp = cv.morphologyex(binary,cv.morph_close,element1,
none,(
-1,-
1),1
)cv.imshow(
"tmp image"
, tmp)
這樣影象就乾淨了,去除了雜訊後,我們也就可以通過圓形的結構元素提取眼球位置
注意:這裡的矩形結構元素不能太大了,不然會把裡面的2個大黑點當作雜訊去除了,從而導致找不到眼球
element2 = cv.getstructuringelement(cv.morph_ellipse,(16
,16),
(-1,
-1))
dst = cv.morphologyex(tmp,cv.morph_open,element2)
cv.imshow(
"eye image"
, dst)
如上我們得到了眼球,下面只需要來個輪廓發現並填充顏色即可
注意:這裡的圓形區域的大小需要適當大點,或許需要根據不同的坐下微調以達到理想的效果
none
,none,(
0,0)
)for i, contour in
enumerate
(contours)
"find "
cv.drawcontours(src, contours, i,
(255,0
,0),
-1)cv.imshow(
"dst image"
, src)
完整的**如下:
opencv 提取多邊形mask區域
最近在專案中需要提取多邊形區域,並傳入到運算元中計算,故記錄一下對多邊形mask區域的提取方法。include using namespace cv int main 關鍵函式為 fillpoly,該函式提供兩種呼叫介面,分別如下 void fillpoly mat img,const point ...
OpenCV人臉檢測 4 繪製人臉與人眼區域
img 為目標 左上角座標為 x,y 右下角座標為 x w,y h 顏色 b,g,r 255,0,0 表示藍色,0,255,0 表示綠色,0,0,255 表示紅色,3 表示 bgr 三個通道。2代表邊框線粗度為 2。使用 opencv 分類器檢測人臉之後,一張中可能包含多個人臉,所以對每乙個識別到的...
用opencv檢測人眼並定位瞳孔位置
最近的研究要用到定位瞳孔的位置,所以上網搜了下相關的 總結如下 1 定位瞳孔可以直接使用opencv中的自帶的分類器 haarcascade eye tree eyeglasses.xml 來實現,以前聽師兄說用opencv自帶的這個方法定位瞳孔不准,但我自己做了實驗後發現在正面人臉的情況下定位還是...