Я использую c # и opencv, и я хочу сгенерировать приведенный ниже тип изображения из данного изображения глаза.
Требуемый вывод:
Я успешно сгенерировалниже изображения, но я не могу найти способ создать то, что мне нужно.
Чего я достиг на данный момент:
private void SegmentIris()
{
//Clone the filled contour
Image<Gray, Byte> InputImageCloneOne = FilledContourForSegmentation.Clone();
Image<Gray, Byte> InputImageCloneTwo = FilledContourForSegmentation.Clone();
MCvScalar k = new MCvScalar(255, 255, 255);
//Draw the circle for mask in white
CvInvoke.cvCircle(mask, PupilCenter, OuterBoundaryRadius, IrisConstants.WhiteColor, -1, Emgu.CV.CvEnum.LINE_TYPE.CV_AA, 0);
//Create the optimised circle using pupil center and outer boundary iris -> so that circles appear proper around the iris
if (IsContourDetectionSatisfactory)
{
OptimisedIrisBoundaries = FilledContourForSegmentation.Clone();
CvInvoke.cvCircle(OptimisedIrisBoundaries, PupilCenter, OuterBoundaryRadius, IrisConstants.WhiteColor, 2, Emgu.CV.CvEnum.LINE_TYPE.CV_AA, 0);
}
else
{
OptimisedIrisBoundaries = ApproximatedPupilImage.Clone();
CvInvoke.cvCircle(OptimisedIrisBoundaries, PupilCenter, OuterBoundaryRadius, IrisConstants.WhiteColor, 2, Emgu.CV.CvEnum.LINE_TYPE.CV_AA, 0);
}
//now make the mask circle black
CvInvoke.cvNot(mask, mask);
//Subtract the input image and filled contour image over the mask created
CvInvoke.cvSub(InputImage, InputImageCloneOne, InputImageCloneTwo, mask);
//Put clonetwo to segmented image
CvInvoke.cvCopy(InputImageCloneTwo, SegmentedIrisImage, new IntPtr(0));
}