Вывод CvInvoke.DistanceTransform отображает корректность в CvInvoke.Imshow, но черный в ImageBox - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь отобразить выходной Mat из функции под названием "CvInvoke.DistanceTransform" в элементе управления ImageBox из EmguCV, но на выходе отображается черное изображение.Однако, если я передал выходные данные в функцию «CvInvoke.Imshow», то выходные данные отобразили корректность.

Мой вопрос заключается в том, как отобразить выходные данные DistanceTransform в ImageBox?

Мой код:

public static Mat EuclideanDistanceTransfer(Mat Image)
    {
        Mat dist = new Mat();
        Mat labels = new Mat();

        CvInvoke.DistanceTransform(Image, dist, labels, DistType.L2, 3);
        CvInvoke.Normalize(dist, dist, 0, 1.0, NormType.MinMax);
        CvInvoke.Imshow("Image", dist); //This will shows the output correclty

        return dist;
    }

  private void btnBrowse_Click(object sender, EventArgs e)
    {
        OpenFileDialog openFileDialog = new OpenFileDialog();
        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            txtPath.Text = openFileDialog.FileName;
            Image<Bgr, byte> FrontImage = new Image<Bgr, byte>(txtPath.Text);

            imgFrontOriginal.Image = FrontImage;

            Mat FrontGrayImage = ImageOperations.ConvertToGray(FrontImage.Mat).Clone();

            Mat FrontBinaryImage = ImageOperations.ConvertToBinary(FrontGrayImage, 200).Clone();

            Mat InvertedBinaryImage = new Image<Gray, byte>(ImageOperations.Invert(FrontBinaryImage.Bitmap)).Mat;

            imgFrontBinary.Image = InvertedBinaryImage;

            Mat FrontTransferImage = ImageOperations.EuclideanDistanceTransfer(InvertedBinaryImage);

           //In this line will shows only black image, why? and how to solve it?
            imgFrontTransfer.Image = FrontTransferImage;
        }
    }
...