Compare commits

..

No commits in common. '33a8da663c8905073bd0cf8cd3f62ef79a6e18c5' and '09e1d70eccf9afb1f42c61504285bfb99d4a0a3f' have entirely different histories.

  1. 4
      OpenCV/Form1.cs
  2. 129
      OpenCV/OpenCVClass.cs

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

@ -18,11 +18,6 @@ namespace OpenCV
IplImage affine; IplImage affine;
IplImage perspective; IplImage perspective;
IplImage draw; IplImage draw;
IplImage hsv;
IplImage hsvRed;
IplImage morp;
IplConvKernel convKernel;
public IplImage GrayScale(IplImage src) public IplImage GrayScale(IplImage src)
{ {
@ -38,10 +33,10 @@ namespace OpenCV
return inversion; return inversion;
} }
public IplImage Binary(IplImage src, int threshold) public IplImage Binary(IplImage src)
{ {
bin = GrayScale(src); bin = GrayScale(src);
Cv.Threshold(bin, bin, threshold, 255, ThresholdType.Binary); Cv.Threshold(bin, bin, 150, 255, ThresholdType.Binary);
return bin; return bin;
} }
@ -138,68 +133,11 @@ namespace OpenCV
Cv.DrawCircle(draw, new CvPoint(200, 200), 50, CvColor.Red, -1); Cv.DrawCircle(draw, new CvPoint(200, 200), 50, CvColor.Red, -1);
Cv.DrawRect(draw, new CvPoint(300, 150), new CvPoint(500, 300), CvColor.Green, 5); Cv.DrawRect(draw, new CvPoint(300, 150), new CvPoint(500, 300), CvColor.Green, 5);
Cv.DrawEllipse(draw, new CvPoint(150, 400), new CvSize(100, 50), 0, 90, 360, CvColor.Green, -1); Cv.DrawEllipse(draw, new CvPoint(150, 400), new CvSize(100, 50), 0, 90, 360, CvColor.Green, -1);
Cv.PutText(draw, "Open CV", new CvPoint(400, 400), new CvFont(FontFace.HersheyComplex, 1, 1), CvColor.White); Cv.PutText(draw, "Open CV 오?", new CvPoint(400, 400), new CvFont(FontFace.HersheyComplex, 1, 1), CvColor.White);
return draw; return draw;
} }
public IplImage HSV(IplImage src)
{
hsv = new IplImage(src.Size, BitDepth.U8, 3);
IplImage h = new IplImage(src.Size, BitDepth.U8, 1);
IplImage s = new IplImage(src.Size, BitDepth.U8, 1);
IplImage v = new IplImage(src.Size, BitDepth.U8, 1);
Cv.CvtColor(src, hsv, ColorConversion.BgrToHsv);
Cv.Split(hsv, h, s, v, null);
hsv.SetZero();
// Hue
//Cv.InRangeS(h, 20, 30, h); // Yellow
//Cv.Copy(src, hsv, h);
// Hue - Red
IplImage lowerRed = new IplImage(src.Size, BitDepth.U8, 1);
IplImage upperRed = new IplImage(src.Size, BitDepth.U8, 1);
IplImage red = new IplImage(src.Size, BitDepth.U8, 1);
Cv.InRangeS(h, 0, 10, lowerRed);
Cv.InRangeS(h, 170, 179, upperRed);
Cv.AddWeighted(lowerRed, 1.0, upperRed, 1.0, 0.0, red);
Cv.Copy(src, hsv, red);
// Saturation
//Cv.InRangeS(s, 20, 30, s);
//Cv.Copy(src, hsv, s);
// Value
//Cv.InRangeS(v, 20, 30, v);
//Cv.Copy(src, hsv, v);
return hsv;
}
public IplImage HSVRed(IplImage src)
{
hsvRed = new IplImage(src.Size, BitDepth.U8, 3);
IplImage lowerRed = new IplImage(src.Size, BitDepth.U8, 1);
IplImage upperRed = new IplImage(src.Size, BitDepth.U8, 1);
IplImage red = new IplImage(src.Size, BitDepth.U8, 1);
Cv.CvtColor(src, hsvRed, ColorConversion.BgrToHsv);
Cv.InRangeS(hsvRed, new CvScalar(0, 100, 100), new CvScalar(10, 255, 255), lowerRed);
Cv.InRangeS(hsvRed, new CvScalar(170, 100, 100), new CvScalar(179, 255, 255), upperRed);
Cv.AddWeighted(lowerRed, 1.0, upperRed, 1.0, 0.0, red);
hsvRed.SetZero();
Cv.Copy(src, hsvRed, red);
return hsvRed;
}
private void Release(params IplImage[] images) private void Release(params IplImage[] images)
{ {
for (int i = 0; i < images.Length; i++) for (int i = 0; i < images.Length; i++)
@ -209,56 +147,6 @@ 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(bin, morp, convKernel, iteration);
Cv.Dilate(morp, morp, convKernel, iteration);
return morp;
}
public IplImage MorphologyImage(IplImage src, MorphologyOperation option, int iteration)
{
if (convKernel == null)
return null;
morp = new IplImage(src.Size, BitDepth.U8, 1);
bin = Binary(src, 50);
Cv.MorphologyEx(bin, morp, bin, convKernel, option, iteration);
return morp;
}
public void Dispose() public void Dispose()
{ {
Release( Release(
@ -274,17 +162,8 @@ namespace OpenCV
rotate, rotate,
affine, affine,
perspective, perspective,
draw, draw
hsv,
hsvRed,
morp
); );
} }
public IplConvKernel ConvKernel
{
get { return this.convKernel; }
set { this.convKernel = value; }
}
} }
} }

Loading…
Cancel
Save