我想在精明的邊緣檢測之后找到輪廓。但即使 BGR 設定為 (255,0,0),它們仍顯示為白色。代碼有什么問題?
private void Capture_ImageGrabbed1(object sender, EventArgs e)
{
try
{
Mat m = new Mat();
capture.Retrieve(m);
pic1.Image = m.ToImage<Bgr, byte>().Bitmap;
if(mode == 1)
{
var image = m.ToImage<Bgr, byte>();
var grayScaleImage = image.Convert<Gray, byte>();
var blurredImage = grayScaleImage.SmoothGaussian(5, 5, 0, 0);
var cannyImage = new UMat();
CvInvoke.Canny(blurredImage, cannyImage, 10, 50);
VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();
CvInvoke.FindContours(cannyImage, contours, null, Emgu.CV.CvEnum.RetrType.External, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
CvInvoke.DrawContours(cannyImage, contours, -1, new MCvScalar(255, 0, 0),2);
pic2.Image = cannyImage.Bitmap;
}
}
catch (Exception)
{
throw;
}
}
pic2.Image 是圖片框。代碼有效,但沒有藍色輪廓,如附件中所示,在此處輸入影像描述圖片。
uj5u.com熱心網友回復:
private void Capture_ImageGrabbed1(object sender, EventArgs e)
{
try
{
Mat m = new Mat();
capture.Retrieve(m);
pic1.Image = m.Bitmap;
if(mode == 1)
{
var image = m.ToImage<Bgr, byte>();
var grayScaleImage = image.Convert<Gray, byte>();
var blurredImage = grayScaleImage.SmoothGaussian(5, 5, 0, 0);
var cannyImage = new UMat();
CvInvoke.Canny(blurredImage, cannyImage, 10, 50);
VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();
CvInvoke.FindContours(cannyImage, contours, null, Emgu.CV.CvEnum.RetrType.External, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
var cannyOut = cannyImage.ToImage<Bgr, byte>();
CvInvoke.DrawContours(cannyOut, contours, -1, new MCvScalar(255, 0, 0),2);
pic2.Image = cannyOut.Bitmap;
}
}
catch (Exception)
{
throw;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/534352.html
上一篇:如何在C#中找到輪廓質心的坐標
