【发布时间】:2018-07-13 02:05:56
【问题描述】:
我正在使用 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。
这是我想要实现的图片(一只眼角的红点):
【问题讨论】:
-
除非您能保证图像具有某种类型/质量,否则对于任何类型的用于检测眼睛位置的简单颜色匹配算法,都有许多病态和非病态的反例。
-
脸部图片会像上面那张或亚洲血统的人
标签: c++ opencv image-processing computer-vision coordinates