diff --git a/OpenCV/Form1.Designer.cs b/OpenCV/Form1.Designer.cs index 654bfad..8dbe7db 100644 --- a/OpenCV/Form1.Designer.cs +++ b/OpenCV/Form1.Designer.cs @@ -40,6 +40,7 @@ namespace OpenCV this.pictureBoxIpl1.Location = new System.Drawing.Point(12, 12); this.pictureBoxIpl1.Name = "pictureBoxIpl1"; this.pictureBoxIpl1.Size = new System.Drawing.Size(640, 480); + this.pictureBoxIpl1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; this.pictureBoxIpl1.TabIndex = 0; this.pictureBoxIpl1.TabStop = false; // diff --git a/OpenCV/Form1.cs b/OpenCV/Form1.cs index b95648f..589ca39 100644 --- a/OpenCV/Form1.cs +++ b/OpenCV/Form1.cs @@ -39,8 +39,8 @@ namespace OpenCV OpenCVClass Converter = new OpenCVClass(); pictureBoxIpl1.ImageIpl = src; - //pictureBoxIpl2.ImageIpl = Converter.ZoomIn(src); - pictureBoxIpl2.ImageIpl = Converter.ZoomOut(src); + //pictureBoxIpl2.ImageIpl = Converter.Resize(src, 0.1, 0.2); + pictureBoxIpl2.ImageIpl = Converter.Slice(src, 750, 840, 350, 150); } catch (Exception ex) { diff --git a/OpenCV/OpenCVClass.cs b/OpenCV/OpenCVClass.cs index 30f9309..76dc6ea 100644 --- a/OpenCV/OpenCVClass.cs +++ b/OpenCV/OpenCVClass.cs @@ -11,6 +11,8 @@ namespace OpenCV IplImage blur; IplImage zoomin; IplImage zoomout; + IplImage resize; + IplImage slice; public IplImage GrayScale(IplImage src) { @@ -54,6 +56,34 @@ namespace OpenCV return zoomout; } + public IplImage Resize(IplImage src, double widthRate, double heightRate) + { + resize = new IplImage(new CvSize((int)(src.Width * widthRate), (int)(src.Height * heightRate)), BitDepth.U8, 3); + Cv.Resize(src, resize, Interpolation.Linear); + return resize; + } + + public IplImage Slice(IplImage src, int x, int y, int roiWidht, int roiHeight) + { + //slice = new IplImage(new CvSize(roiWidht, roiHeight), BitDepth.U8, 3); + + //src.ROI = new CvRect(x, y, roiWidht, roiHeight); + //src.SetROI(new CvRect(x, y, roiWidht, roiHeight)); + //Cv.SetImageROI(src, new CvRect(x, y, roiWidht, roiHeight)); + + //Cv.Copy(src, slice); + //Cv.Resize(src, slice); + //slice = src.Clone(); // 속성까지 복사되어 채널 등 값이 변경됨 + + //src.ResetROI(); + //Cv.ResetImageROI(src); + + CvRect roi = new CvRect(x, y, roiWidht, roiHeight); + slice = src.Clone(roi); + + return slice; + } + public void Dispose() { if (gray != null) @@ -68,6 +98,10 @@ namespace OpenCV Cv.ReleaseImage(zoomin); if (zoomout != null) Cv.ReleaseImage(zoomout); + if (resize != null) + Cv.ReleaseImage(resize); + if (slice != null) + Cv.ReleaseImage(slice); } } }