Как установить ROI изображения в форме другого прямоугольника в EMGU CV ...? - PullRequest
0 голосов
/ 01 марта 2012

Я работаю над программным обеспечением для распознавания и распознавания лиц ... Мне удалось обнаружить лица и распознать их с помощью EigenObjectRecognizer ... Но иногда это дает неверные результаты ... Поэтому я бы устанавливал границы лица с помощью HaarCascadeобъект на эллипс, чтобы я мог обнулить эффект фона ...

ellipse = новый эллипс (новый PointF (face.rect.X + (face.rect.Width / 2),face.rect.Y + (face.rect.Height / 2)), новый SizeF (face.rect.Width - 5, face.rect.Height - 25), 0);ImageFrame.Draw (эллипс, новый Bgr (Color.Green), 2);

Теперь он может рисовать эллипс вокруг лица ... Но как установить roi лица в этот эллипс ...

Пожалуйста, помогите мне с этим ...

Ответы [ 2 ]

1 голос
/ 11 октября 2015

Вы могли бы сделать это, используя маску и побитовое ИПредположим, что IMG это изображениеСоздайте маску:

Image<Gray, byte> mask = new Image<Gray, byte>(img.Width, img.Height);

Вызовите нужную фигуру, например, эллипс

CvInvoke.Ellipse(mask,new Point(5,5),new Size(10,20),0,0,360, new MCvScalar(255,255,255),-1,Emgu.CV.CvEnum.LineType.AntiAlias, 0); // -1 fill ellipse

Назначение:

Image<Gray, byte> dest = new Image<Gray, byte>(img.Width, img.Height);

Битовый И

dest = img.And(img, mask);
dest.Save("C:/myshape.jpg")
1 голос
/ 05 марта 2012

Извините, но вы не можете установить ROI изображения на эллипс, это очень сложно и медленно сделать это.

Что ж, анализ выполняется не медленно, но каждый раз, когда вы получаете доступ к данным изображения, вам придется проходить через несколько циклов for, чтобы найти правильное положение и условия, чтобы убедиться, что он не отклоняется.Вредное влияние на производительность означает, что оно не было реализовано.Вы всегда можете отредактировать источник и настроить его, если хотите.

В качестве альтернативы лучший способ - создать чистое изображение области интереса и скопировать данные лица, содержащегося в эллипсе, используяпара для зацикливания байта за байтом.Вы также можете использовать условную копию, чтобы копировать только текстуру цвета кожи.

Если вам нужна помощь, дайте мне знать.Но в конечном итоге вы получите изображение лица с черным фоном.Теперь, поскольку все лица будут иметь черный фон, вы можете устранить его эффект.

Надеюсь, это поможет,

Приветствия,

Крис

...