我使用的是opencv 2.4.2和C++。我有一個臉部圖像。從圖片左側開始,我想以最小的複雜度來確定眼角的座標。我的計劃將是如下:使用顏色差異查找眼角的座標
面部圖像輸入
- 從頂部
掃描圖像,直到它遇到了一種膚色和第一白色像素之間的差異在眼角處
在這個角落繪製樣紅點
不繼續掃描圖像
- 個
顯示(X,Y),在這一點上
我有什麼座標直到如今
int main() {
Mat img = imread("MVC-003F.jpg");
for(int i = 0; i < img.rows; i++) {
for(int j = 0; j < img.cols; j++) {
Vec3b color = img.at<Vec3b>(Point(i,j));
if(color.val[0] == 255 && color.val[1] == 255 && color.val[2] == 255)
cout << (Point(i,j)) << endl;
}
}
imshow("out", img);
waitKey(0);
return 0;
}
很顯然,這並沒有解決我的問題,而是返回一個錯誤。掃描完圖像後,我無法確定是否需要對cvtColor
進行HSV和閾值,或者繼續使用RGB。
這裏是我想要達到的圖片(紅點,在一隻眼睛的角落):
除非你有一些保證圖像將是某種類型/質量,有許多病理性和非病理性反例到任何種類的用於檢測眼睛位置的簡單顏色匹配算法。 – ldog
臉部圖片將會像上面的人或者亞洲人的人物一樣 – Steph