morphology (dilate, erode)

remotes/origin/master
syneffort 3 years ago
parent 9dc88aade3
commit 9e6ea4d313
  1. 4
      OpenCV/Form1.cs
  2. 54
      OpenCV/OpenCVClass.cs

@ -39,7 +39,9 @@ namespace OpenCV
OpenCVClass Converter = new OpenCVClass(); OpenCVClass Converter = new OpenCVClass();
pictureBoxIpl1.ImageIpl = src; pictureBoxIpl1.ImageIpl = src;
pictureBoxIpl2.ImageIpl = Converter.HSVRed(src);
//Converter.ConvKernel = new IplConvKernel(3, 3, 1, 1, ElementShape.Rect);
pictureBoxIpl2.ImageIpl = Converter.EDImage(src, 50, 10);
} }
catch (Exception ex) catch (Exception ex)
{ {

@ -20,6 +20,9 @@ namespace OpenCV
IplImage draw; IplImage draw;
IplImage hsv; IplImage hsv;
IplImage hsvRed; IplImage hsvRed;
IplImage morp;
IplConvKernel convKernel;
public IplImage GrayScale(IplImage src) public IplImage GrayScale(IplImage src)
{ {
@ -35,10 +38,10 @@ namespace OpenCV
return inversion; return inversion;
} }
public IplImage Binary(IplImage src) public IplImage Binary(IplImage src, int threshold)
{ {
bin = GrayScale(src); bin = GrayScale(src);
Cv.Threshold(bin, bin, 150, 255, ThresholdType.Binary); Cv.Threshold(bin, bin, threshold, 255, ThresholdType.Binary);
return bin; return bin;
} }
@ -206,6 +209,44 @@ namespace OpenCV
} }
} }
public IplImage DilateImage(IplImage src, int threshold, int iteration)
{
morp = new IplImage(src.Size, BitDepth.U8, 1);
bin = Binary(src, threshold);
Cv.Dilate(bin, morp, convKernel, iteration);
return morp;
}
public IplImage ErodeImage(IplImage src, int threshold, int iteration)
{
morp = new IplImage(src.Size, BitDepth.U8, 1);
bin = Binary(src, threshold);
Cv.Erode(bin, morp, convKernel, iteration);
return morp;
}
public IplImage DEImage(IplImage src, int threshold, int iteration)
{
morp = new IplImage(src.Size, BitDepth.U8, 1);
bin = Binary(src, threshold);
Cv.Dilate(bin, morp, convKernel, iteration);
Cv.Erode(morp, morp, convKernel, iteration);
return morp;
}
public IplImage EDImage(IplImage src, int threshold, int iteration)
{
morp = new IplImage(src.Size, BitDepth.U8, 1);
bin = Binary(src, threshold);
Cv.Erode(morp, morp, convKernel, iteration);
Cv.Dilate(bin, morp, convKernel, iteration);
return morp;
}
public void Dispose() public void Dispose()
{ {
Release( Release(
@ -223,8 +264,15 @@ namespace OpenCV
perspective, perspective,
draw, draw,
hsv, hsv,
hsvRed hsvRed,
morp
); );
} }
public IplConvKernel ConvKernel
{
get { return this.convKernel; }
set { this.convKernel = value; }
}
} }
} }

Loading…
Cancel
Save