Я пытаюсь отобразить выходной 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;
}
}