From 9e6ea4d313753b344116fef9f7163620db5c986b Mon Sep 17 00:00:00 2001 From: syneffort Date: Sat, 11 Jun 2022 13:24:34 +0900 Subject: [PATCH] morphology (dilate, erode) --- OpenCV/Form1.cs | 4 +++- OpenCV/OpenCVClass.cs | 54 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/OpenCV/Form1.cs b/OpenCV/Form1.cs index 818cf34..d896baa 100644 --- a/OpenCV/Form1.cs +++ b/OpenCV/Form1.cs @@ -39,7 +39,9 @@ namespace OpenCV OpenCVClass Converter = new OpenCVClass(); 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) { diff --git a/OpenCV/OpenCVClass.cs b/OpenCV/OpenCVClass.cs index efe543a..cc34f35 100644 --- a/OpenCV/OpenCVClass.cs +++ b/OpenCV/OpenCVClass.cs @@ -20,6 +20,9 @@ namespace OpenCV IplImage draw; IplImage hsv; IplImage hsvRed; + IplImage morp; + + IplConvKernel convKernel; public IplImage GrayScale(IplImage src) { @@ -35,10 +38,10 @@ namespace OpenCV return inversion; } - public IplImage Binary(IplImage src) + public IplImage Binary(IplImage src, int threshold) { bin = GrayScale(src); - Cv.Threshold(bin, bin, 150, 255, ThresholdType.Binary); + Cv.Threshold(bin, bin, threshold, 255, ThresholdType.Binary); 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() { Release( @@ -223,8 +264,15 @@ namespace OpenCV perspective, draw, hsv, - hsvRed + hsvRed, + morp ); } + + public IplConvKernel ConvKernel + { + get { return this.convKernel; } + set { this.convKernel = value; } + } } }