OpenCV如何提取人眼區域的眼球位置

2021-09-19 16:37:45 字數 2772 閱讀 6763

待檢測影象:

期望的檢測結果如下:

**實現如下:

第一步先將原影象轉換為灰度影象,然後來個二值化

結果如下:

先看下這張二值化的,要想得到眼球,我們可以通過乙個圓形的結構元素,對這張影象做個開操作(先腐蝕再膨脹),但是還存在乙個問題,中心的圓形區域還存在雜訊,需要先把這個雜訊剔除

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)

:print

"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自帶的這個方法定位瞳孔不准,但我自己做了實驗後發現在正面人臉的情況下定位還是...