/// <summary>
        /// Отделяет изображение от фона
        /// </summary>
        /// <param name="source">Исходное изображение</param>
        /// <param name="destinatation">Результат разделения</param>
        private void separateBackground(IplImage source, IplImage destinatation)
        {
            // Преобразуем иходное изображение в HSV
            source.CvtColor(hsvImg, ColorConversion.RgbToHsv);

            // Разбиваем изображение на отельные каналы
            hsvImg.CvtPixToPlane(hImg, sImg, vImg, null);

            // Если диапазон Hue состоит из 2х частей
            if (BackgroundRange.HMin > BackgroundRange.HMax)
            {
                hImg.InRangeS(CvScalar.RealScalar(BackgroundRange.HMin), CvScalar.RealScalar(HsvRange.MAX_H), tmpImg);
                hImg.InRangeS(CvScalar.RealScalar(HsvRange.MIN_H), CvScalar.RealScalar(BackgroundRange.HMax), hImg);
                Cv.Or(tmpImg, hImg, hImg);
            }

            // Если диапазон Hue состоит из 1 части
            else
            {
                hImg.InRangeS(CvScalar.RealScalar(BackgroundRange.HMin), CvScalar.RealScalar(BackgroundRange.HMax), hImg);
            }

            // Ограничиваем значение остальных цветовых компонент
            sImg.InRangeS(CvScalar.RealScalar(BackgroundRange.SMin), CvScalar.RealScalar(BackgroundRange.SMax), sImg);
            vImg.InRangeS(CvScalar.RealScalar(BackgroundRange.VMin), CvScalar.RealScalar(BackgroundRange.VMax), vImg);

            // Формируем окончательный результат
            Cv.And(hImg, sImg, destinatation);
            Cv.And(destinatation, vImg, destinatation);
            Cv.Not(destinatation, destinatation);
        }
Ejemplo n.º 2
0
        //yong's codes
        //yong's codes
        public static IplImage ConvertToBinaryIpl(IplImage target)
        {
            IplImage retImg = new IplImage(target.Width, target.Height, BitDepth.U8, 1);

            target.CvtColor(target, ColorConversion.BgrToCrCb);
            target.InRangeS(new CvScalar(0, 140, 40), new CvScalar(255, 170, 150), retImg);

            return(retImg);
        }
Ejemplo n.º 3
0
        void preProcessing()
        {
            m_img = WebcamController.m_img;

            //CrCb컬러맵을 통해서 피부색부분 바이너리 뭐...그렇다고
            m_img.CvtColor(m_img, ColorConversion.BgrToCrCb);
            m_img.InRangeS(new CvScalar(0, 140, 40), new CvScalar(255, 170, 150), m_skinBinaryImg);

            m_retImg = m_skinBinaryImg;
        }