Esempio n. 1
0
        /// <summary>
        /// Kiểm tra có là đèn đỏ
        /// True: on
        /// False: off
        /// </summary>
        ///

        //public bool CheckRedLightStatus()
        //{
        //    //GetPicSnap();
        //    if (OriginImage == null)
        //    {
        //        CheckRedLightStatus();
        //    }
        //    //Image<Gray, Byte> grayImg = new Image<Gray, byte>(BitMap.Bitmap);
        //    Mat grayImg = new Mat();
        //    CvInvoke.CvtColor(OriginImage, grayImg, ColorConversion.Bgr2Gray);

        //    Bitmap img = grayImg.Bitmap;
        //    int R = img.GetPixel(X, Y).R;
        //    int xTemp1, xTemp2, xTemp3, xTemp4;
        //    int yTemp1, yTemp2, yTemp3, yTemp4;
        //    xTemp1 = xTemp2 = xTemp3 = xTemp4 = X;
        //    yTemp1 = yTemp2 = yTemp3 = yTemp4 = Y;
        //    int widthPixel = 3; //Lấy trung bình của bao nhiêu pixel từ điểm trung tâm


        //    for (int i = 0; i < widthPixel; i++)
        //    {
        //        xTemp1 += 1;
        //        xTemp2 -= 1;
        //        xTemp3 -= 1;
        //        xTemp4 += 1;
        //        for (int j = 0; j < widthPixel; j++)
        //        {
        //            yTemp1 += 1;
        //            yTemp2 += 1;
        //            yTemp3 -= 1;
        //            yTemp4 -= 1;
        //            Color pixelColor1, pixelColor2, pixelColor3, pixelColor4;
        //            pixelColor1 = img.GetPixel(xTemp1, yTemp1);
        //            pixelColor2 = img.GetPixel(xTemp2, yTemp2);
        //            pixelColor3 = img.GetPixel(xTemp3, yTemp3);
        //            pixelColor4 = img.GetPixel(xTemp4, yTemp4);
        //            R += (int)(pixelColor1.R + pixelColor2.R + pixelColor3.R + pixelColor4.R);
        //        }
        //    }


        //    int avgR = (R / ((widthPixel * widthPixel * 4) + 1));

        //    if ((avgR > 200))
        //    {
        //        return true;
        //    }
        //    else
        //    {
        //        return false;
        //    }
        //}
        /// <summary>
        /// Check red light status.
        /// Return: 1, 2, 3 via red, yellow, green status.
        /// </summary>
        /// <returns>1, 2, 3 via red, yellow, green status.</returns>
        public int CheckLightStatusV3()
        {
            int  statusLight = 0;
            bool redResult = false, yellowResult = false, greenResult = false;
            Image <Bgr, Byte> redImg    = OriginImage.Clone();
            Image <Bgr, Byte> greenImg  = OriginImage.Clone();
            Image <Bgr, Byte> yellowImg = OriginImage.Clone();

            redImg.ROI    = new Rectangle(RedPoint.X, RedPoint.Y, WidthPixel, WidthPixel);
            yellowImg.ROI = new Rectangle(YellowPoint.X, YellowPoint.Y, WidthPixel, WidthPixel);
            greenImg.ROI  = new Rectangle(GreenPoint.X, GreenPoint.Y, WidthPixel, WidthPixel);

            Image <Gray, Byte> redProcessed    = processImage(redImg);
            Image <Gray, Byte> yellowProcessed = processImage(yellowImg);
            Image <Gray, Byte> greenProcessed  = processImage(greenImg);

            double redValue    = redProcessed.GetAverage().MCvScalar.V0;
            double yellowValue = yellowProcessed.GetAverage().MCvScalar.V0;
            double greenValue  = greenProcessed.GetAverage().MCvScalar.V0;

            if (redProcessed.GetAverage().MCvScalar.V0 >= Threshold)
            {
                redResult = true;
            }
            if (yellowProcessed.GetAverage().MCvScalar.V0 >= Threshold)
            {
                yellowResult = true;
            }
            if (greenProcessed.GetAverage().MCvScalar.V0 >= Threshold)
            {
                greenResult = true;
            }

            if (redResult == true && yellowResult == false && greenResult == false)
            {
                statusLight = 1;
            }
            else if (redResult == false && yellowResult == true && greenResult == false)
            {
                statusLight = 2;
            }
            else if (redResult == false && yellowResult == false && greenResult == true)
            {
                statusLight = 3;
            }
            else
            {
                statusLight = 0;
            }
            return(statusLight);
        }
Esempio n. 2
0
        public void ShowPointInformation(double x, double y)
        {
            if (_capture == null)
            {
                return;
            }

            int frameIndex = (int)_capture.GetCaptureProperty(CapProp.PosFrames) - 1;

            if (frameIndex == -1)
            {
                return;
            }

            var keyFeaturesVector = _projectFile.Model.GetKeyFeatures(frameIndex);

            var nearestKeyFeature = GetNearestKeyPoint(x, y, keyFeaturesVector);

            var keyIndex = keyFeaturesVector.FirstIndexOf(keyFeature => keyFeature.Point == nearestKeyFeature.Point);

            var chain      = _projectFile.Model.GetChain(frameIndex, keyIndex);
            int firstFrame = frameIndex;
            int lastFrame  = frameIndex;

            foreach (var pair in chain)
            {
                firstFrame = Math.Min(firstFrame, pair.Item1);
                lastFrame  = Math.Max(lastFrame, pair.Item1);
            }

            PointInformation = String.Format(Strings.PointInformationFormat,
                                             firstFrame,
                                             frameIndex,
                                             lastFrame);

            var image = (IImage)OriginImage.Clone();

            CvInvoke.Circle(image, Point.Round(nearestKeyFeature.Point), 5, new Bgr(Color.Yellow).MCvScalar, 2);
            VideoImageSource = image;
        }