gpt4 book ai didi

android - 如何在opencv中循环检测眼瞳

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:42 26 4
gpt4 key购买 nike

我正在 android 中的 opencv 上工作,我想通过 Hue channel 更改眼瞳颜色,我已经实现了,但问题是我检测到的区域是矩形的,但我希望这个区域是圆形的,因为眼瞳是圆形区域.请帮助我如何实现这一目标。

private Mat  get_template(CascadeClassifier clasificator, Rect area,int size){
Mat template = new Mat();
Mat mROI = mGray.submat(area);
MatOfRect eyes = new MatOfRect();
Point iris = new Point();
Rect eye_template = new Rect();
clasificator.detectMultiScale(mROI, eyes, 1.15, 2,Objdetect.CASCADE_FIND_BIGGEST_OBJECT|Objdetect.CASCADE_SCALE_IMAGE, new Size(30,30),new Size());


Rect[] eyesArray = eyes.toArray();
for (int i = 0; i < eyesArray.length; i++){
Rect e = eyesArray[i];
e.x = area.x + e.x;
e.y = area.y + e.y;
Rect eye_only_rectangle = new Rect((int)e.tl().x,(int)( e.tl().y + e.height*0.4),(int)e.width,(int)(e.height*0.6));
mROI = mGray.submat(eye_only_rectangle);
Mat vyrez = mRgba.submat(eye_only_rectangle);
Core.MinMaxLocResult mmG = Core.minMaxLoc(mROI);

Core.circle(vyrez, mmG.minLoc,2, new Scalar(255, 255, 255, 255),2);
iris.x = mmG.minLoc.x + eye_only_rectangle.x;
iris.y = mmG.minLoc.y + eye_only_rectangle.y;
eye_template = new Rect((int)iris.x-size/2,(int)iris.y-size/2 ,size,size);
Core.rectangle(mRgba,eye_template.tl(),eye_template.br(),new Scalar(255, 0, 0, 255), 2);
template = (mGray.submat(eye_template)).clone();
return template;
}
return template;
}

最佳答案

一些潜在的解决方案:

  • 最简单但可能不是很稳健的方法是计算内切圆(由矩形包围的圆)并更改其颜色 - 如果您的瞳孔检测非常准确,则此解决方案可能工作正常。

  • 更稳健的解决方案是根据颜色或梯度(边缘检测)检测瞳孔区域

关于android - 如何在opencv中循环检测眼瞳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20535317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com