Пример #1
0
        ////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 取出ROI物體圖像
        /// </summary>
        /// <param name="filteredSkinObserved">過濾膚色的圖像</param>
        /// <returns>回傳物體圖像</returns>
        private Image <Bgr, Byte> GetObjectBoundingBoxImg(Image <Bgr, Byte> filteredSkinObserved)
        {
            //get bounding box
            Image <Gray, Byte> gray = filteredSkinObserved.Convert <Gray, Byte>();

            gray = DetectObjects.DoBinaryThreshold(gray, 0);
            gray._Erode(5);
            gray._Dilate(5);
            new ImageViewer(gray).Show();
            Contour <System.Drawing.Point> sceneContours = DetectObjects.DoContours(gray);
            Contour <System.Drawing.Point> objectBox     = DetectObjects.GetMaxContours(sceneContours);
            Image <Bgr, byte> boxImg = DetectObjects.GetBoundingBoxImage(objectBox, filteredSkinObserved);

            new ImageViewer(boxImg).Show();
            return(boxImg);
        }
Пример #2
0
        /// <summary>
        /// 膚色過濾
        /// </summary>
        /// <param name="observed">要對得觀察景象</param>
        /// <returns>回傳過濾掉的膚色</returns>
        private Image <Bgr, Byte> SkinFilter(Image <Bgr, Byte> observed)
        {
            Image <Bgr, Byte> dst = observed.Copy();
            Image <Hsv, Byte> hsv = observed.Convert <Hsv, Byte>();
            //皮膚偵測並填為黑
            Image <Gray, Byte> skin = new Image <Gray, byte>(observed.Size);

            CvInvoke.cvInRangeS(hsv, new MCvScalar(0, 58, 89), new MCvScalar(25, 173, 229), skin);
            skin = FillHoles(skin); skin._Erode(2); skin._Dilate(2);
            Contour <System.Drawing.Point> skinContours = DetectObjects.DoContours(skin);
            Contour <System.Drawing.Point> max          = DetectObjects.GetMaxContours(skinContours);

            //new ImageViewer(DetectObjects.DrawMaxContoursOnImg(max, dst)).Show();
            dst.Draw(max, new Bgr(0, 0, 0), -1);
            //new ImageViewer(dst).Show();
            return(dst);
        }
Пример #3
0
 private void drawContoursButton_Click(object sender, RoutedEventArgs e)
 {
     contoursImg          = morphologyImg.Convert <Bgr, byte>();
     contoursImgBox.Image = DetectObjects.DrawAllContoursOnImg(DetectObjects.DoContours(morphologyImg), contoursImg).Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_LINEAR);
 }