|
|
|
@ -18,6 +18,8 @@ namespace OpenCV |
|
|
|
|
IplImage affine; |
|
|
|
|
IplImage perspective; |
|
|
|
|
IplImage draw; |
|
|
|
|
IplImage hsv; |
|
|
|
|
IplImage hsvRed; |
|
|
|
|
|
|
|
|
|
public IplImage GrayScale(IplImage src) |
|
|
|
|
{ |
|
|
|
@ -133,11 +135,68 @@ namespace OpenCV |
|
|
|
|
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.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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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) |
|
|
|
|
{ |
|
|
|
|
hsv = 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, hsv, ColorConversion.BgrToHsv); |
|
|
|
|
|
|
|
|
|
Cv.InRangeS(hsv, new CvScalar(0, 100, 100), new CvScalar(10, 255, 255), lowerRed); |
|
|
|
|
Cv.InRangeS(hsv, new CvScalar(170, 100, 100), new CvScalar(179, 255, 255), upperRed); |
|
|
|
|
Cv.AddWeighted(lowerRed, 1.0, upperRed, 1.0, 0.0, red); |
|
|
|
|
|
|
|
|
|
hsv.SetZero(); |
|
|
|
|
Cv.Copy(src, hsv, red); |
|
|
|
|
|
|
|
|
|
return hsv; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void Release(params IplImage[] images) |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < images.Length; i++) |
|
|
|
@ -162,7 +221,9 @@ namespace OpenCV |
|
|
|
|
rotate, |
|
|
|
|
affine, |
|
|
|
|
perspective, |
|
|
|
|
draw |
|
|
|
|
draw, |
|
|
|
|
hsv, |
|
|
|
|
hsvRed |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|