using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; //using OpenCvSharp; namespace NewSegDll { public partial class Form1 : Form { //External parameters public int[] m_aiTrackBarMethod3; public Mat m_MOrgImg; public Mat MGryImg; public Mat m_Mbinaryzation; public int m_iWhichBlur; public int m_iMethod3DoSeg = 0; //Internal parameters public Mat m_MShowImg = null; int m_iMaxV; int m_iMinV; Bitmap m_BMImage; public Form1() { InitializeComponent(); button5.Enabled = false; button6.Enabled = false; this.Activated += new EventHandler(Form1_Activated); } protected void Form1_Activated(object sender, System.EventArgs e) { m_iMethod3DoSeg = 0; if(null == m_MShowImg) { m_MShowImg = new Mat(); m_MShowImg = m_MOrgImg.Clone(); //m_MOrgImg.CopyTo(m_MShowImg); } m_BMImage = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(m_MShowImg);// new Bitmap(m_MShowImg.Width, m_MShowImg.Height, (int)m_MShowImg.Step(), PixelFormat.Format24bppRgb, m_MShowImg.Data);// new Bitmap((int)m_MShowImg.Cols, (int)m_MShowImg.Rows, (int)m_MShowImg.Step(), System.Drawing.Imaging.PixelFormat.Format24bppRgb, /*(System.IntPtr)*/m_MShowImg.Data); this.pictureBox1.Image = m_BMImage; trackBar1.Minimum = 0; trackBar1.Maximum = 255; trackBar1.LargeChange = 5; trackBar1.SmallChange = 1; trackBar2.Minimum = 0; trackBar2.Maximum = 255; trackBar2.LargeChange = 5; trackBar2.SmallChange = 1; trackBar3.Minimum = 0; trackBar3.Maximum = 20; trackBar3.LargeChange = 2; trackBar3.SmallChange = 1; trackBar4.Minimum = 0; trackBar4.Maximum = 20; trackBar4.LargeChange = 2; trackBar4.SmallChange = 1; trackBar5.Minimum = 0; trackBar5.Maximum = 10; trackBar5.LargeChange = 2; trackBar5.SmallChange = 1; trackBar6.Minimum = -10; trackBar6.Maximum = 20; trackBar6.LargeChange = 3; trackBar6.SmallChange = 1; trackBar1.Value = m_aiTrackBarMethod3[0]; trackBar2.Value = m_aiTrackBarMethod3[1]; trackBar3.Value = m_aiTrackBarMethod3[2]; trackBar4.Value = m_aiTrackBarMethod3[3]; if (trackBar5.Maximum >= m_aiTrackBarMethod3[4]) trackBar5.Value = m_aiTrackBarMethod3[4]; trackBar6.Value = m_aiTrackBarMethod3[5]; if (1 == m_iWhichBlur) { radioButton1.Checked = false; radioButton2.Checked = true; radioButton3.Checked = false; radioButton4.Checked = false; } else if (2 == m_iWhichBlur) { radioButton1.Checked = false; radioButton2.Checked = false; radioButton3.Checked = true; radioButton4.Checked = false; } else if (3 == m_iWhichBlur) { radioButton1.Checked = false; radioButton2.Checked = false; radioButton3.Checked = false; radioButton4.Checked = true; } else { radioButton1.Checked = true; radioButton2.Checked = false; radioButton3.Checked = false; radioButton4.Checked = false; } if(true == radioButton4.Checked) { trackBar4.Enabled = true; label4.ForeColor = System.Drawing.Color.Black; } else { trackBar4.Enabled = false; label4.ForeColor = System.Drawing.Color.LightGray; } this.Update(); } private void trackBar1_Scroll(object sender, EventArgs e) { } private void Form1_Load(object sender, EventArgs e) { } private void label2_Click(object sender, EventArgs e) { } private void trackBar2_Scroll(object sender, EventArgs e) { } private void label3_Click(object sender, EventArgs e) { } private void trackBar3_Scroll(object sender, EventArgs e) { } private void button3_Click(object sender, EventArgs e) { m_aiTrackBarMethod3[0] = trackBar1.Value; m_aiTrackBarMethod3[1] = trackBar2.Value; m_aiTrackBarMethod3[2] = trackBar3.Value; m_aiTrackBarMethod3[3] = trackBar4.Value; m_aiTrackBarMethod3[4] = trackBar5.Value; m_aiTrackBarMethod3[5] = trackBar6.Value; Mat MBlur = new Mat(); if (true == radioButton2.Checked) { m_iWhichBlur = 1; /* MatPointerMed = new Mat(m_MatRealZV.Size(), MatType.CV_32F); */ int iLength = m_aiTrackBarMethod3[2] * 2 + 1; Cv2.MedianBlur(MGryImg, MBlur, iLength); } else if (true == radioButton3.Checked) { m_iWhichBlur = 2; int iLength = m_aiTrackBarMethod3[2] * 2 + 1; Cv2.Blur(MGryImg, MBlur, new OpenCvSharp.Size(iLength, iLength)); } else if (true == radioButton4.Checked) { m_iWhichBlur = 3; /* MatPointerGau = new Mat(m_MatRealZV.Size(), MatType.CV_32F); */ int iLength = m_aiTrackBarMethod3[2] * 2 + 1; double dSigma = m_aiTrackBarMethod3[3]; Cv2.GaussianBlur(MGryImg, MBlur, new OpenCvSharp.Size(iLength, iLength), dSigma, dSigma); } else { m_iWhichBlur = 0; MBlur = MGryImg; //MGryImg.CopyTo(MBlur); } Mat mat_mean = new Mat(), mat_stddev = new Mat(); double m, s, d; Cv2.MeanStdDev(MBlur, mat_mean, mat_stddev); m = mat_mean.At(0, 0); s = mat_stddev.At(0, 0); d = 0.2; double th; th = m + d * s; double dThr = Cv2.Threshold(MBlur, m_Mbinaryzation, th, 255, ThresholdTypes.Binary); //Cv2.BitwiseNot(m_Mbinaryzation, m_Mbinaryzation); int[] point = new int[2]; m_MOrgImg.CopyTo(m_MShowImg); Vec3b redcol = new Vec3b(0, 0, 255); int Rows = m_Mbinaryzation.Rows; int Cols = m_Mbinaryzation.Cols; for (point[0] = 0; point[0] < Rows; point[0]++) { for (point[1] = 0; point[1] < Cols; point[1]++) { if (1 > m_Mbinaryzation.At(point[0], point[1])) { //Vec3b colTemp = m_MShowImg.At(point); //colTemp.Item2 = 255; //m_MShowImg.Set(point, colTemp); m_MShowImg.Set(point, redcol); } } } m_BMImage = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(m_MShowImg);// new Bitmap((int)m_MShowImg.Cols, (int)m_MShowImg.Rows, (int)m_MShowImg.Step(), System.Drawing.Imaging.PixelFormat.Format24bppRgb, (System.IntPtr)m_MShowImg.Data); this.pictureBox1.Image = m_BMImage; button5.Enabled = true; button6.Enabled = true; this.Update(); } private void button1_Click(object sender, EventArgs e) { m_aiTrackBarMethod3[0] = trackBar1.Value; m_aiTrackBarMethod3[1] = trackBar2.Value; m_aiTrackBarMethod3[2] = trackBar3.Value; m_aiTrackBarMethod3[3] = trackBar4.Value; m_aiTrackBarMethod3[4] = trackBar5.Value; m_aiTrackBarMethod3[5] = trackBar6.Value; Mat MBlur = new Mat(); if (true == radioButton2.Checked) { m_iWhichBlur = 1; /* MatPointerMed = new Mat(m_MatRealZV.Size(), MatType.CV_32F); */ int iLength = m_aiTrackBarMethod3[2] * 2 + 1; Cv2.MedianBlur(MGryImg, MBlur, iLength); } else if (true == radioButton3.Checked) { m_iWhichBlur = 2; int iLength = m_aiTrackBarMethod3[2] * 2 + 1; Cv2.Blur(MGryImg, MBlur, new OpenCvSharp.Size(iLength, iLength)); } else if (true == radioButton4.Checked) { m_iWhichBlur = 3; /* MatPointerGau = new Mat(m_MatRealZV.Size(), MatType.CV_32F); */ int iLength = m_aiTrackBarMethod3[2] * 2 + 1; double dSigma = m_aiTrackBarMethod3[3]; Cv2.GaussianBlur(MGryImg, MBlur, new OpenCvSharp.Size(iLength, iLength), dSigma, dSigma); } else { m_iWhichBlur = 0; MBlur = MGryImg; //MGryImg.CopyTo(MBlur); } double dThr = Cv2.Threshold(MBlur, m_Mbinaryzation, 0, 255, ThresholdTypes.Otsu); //Cv2.BitwiseNot(m_Mbinaryzation, m_Mbinaryzation); int[] point = new int[2]; m_MOrgImg.CopyTo(m_MShowImg); Vec3b redcol = new Vec3b(0, 0, 255); int Rows = m_Mbinaryzation.Rows; int Cols = m_Mbinaryzation.Cols; for (point[0] = 0; point[0] < Rows; point[0]++) { for (point[1] = 0; point[1] < Cols; point[1]++) { if (1 > m_Mbinaryzation.At(point[0], point[1])) { //Vec3b colTemp = m_MShowImg.At(point); //colTemp.Item2 = 255; //m_MShowImg.Set(point, colTemp); m_MShowImg.Set(point, redcol); } } } m_BMImage = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(m_MShowImg);// new Bitmap((int)m_MShowImg.Cols, (int)m_MShowImg.Rows, (int)m_MShowImg.Step(), System.Drawing.Imaging.PixelFormat.Format24bppRgb, (System.IntPtr)m_MShowImg.Data); this.pictureBox1.Image = m_BMImage; button5.Enabled = true; button6.Enabled = true; this.Update(); } private void radioButton1_CheckedChanged(object sender, EventArgs e) { if (true == radioButton4.Checked) { trackBar4.Enabled = true; label4.ForeColor = System.Drawing.Color.Black; } else { trackBar4.Enabled = false; label4.ForeColor = System.Drawing.Color.LightGray; } } private void radioButton2_CheckedChanged(object sender, EventArgs e) { if (true == radioButton4.Checked) { trackBar4.Enabled = true; label4.ForeColor = System.Drawing.Color.Black; } else { trackBar4.Enabled = false; label4.ForeColor = System.Drawing.Color.LightGray; } } private void pictureBox1_Click(object sender, EventArgs e) { } private void radioButton3_CheckedChanged(object sender, EventArgs e) { if (true == radioButton4.Checked) { trackBar4.Enabled = true; label4.ForeColor = System.Drawing.Color.Black; } else { trackBar4.Enabled = false; label4.ForeColor = System.Drawing.Color.LightGray; } } private void radioButton4_CheckedChanged(object sender, EventArgs e) { if (true == radioButton4.Checked) { trackBar4.Enabled = true; label4.ForeColor = System.Drawing.Color.Black; } else { trackBar4.Enabled = false; label4.ForeColor = System.Drawing.Color.LightGray; } } private void button4_Click(object sender, EventArgs e) { m_aiTrackBarMethod3[0] = trackBar1.Value; m_aiTrackBarMethod3[1] = trackBar2.Value; m_aiTrackBarMethod3[2] = trackBar3.Value; m_aiTrackBarMethod3[3] = trackBar4.Value; m_aiTrackBarMethod3[4] = trackBar5.Value; m_aiTrackBarMethod3[5] = trackBar6.Value; Mat MBlur = new Mat(); if (true == radioButton2.Checked) { m_iWhichBlur = 1; /* MatPointerMed = new Mat(m_MatRealZV.Size(), MatType.CV_32F); */ int iLength = m_aiTrackBarMethod3[2] * 2 + 1; Cv2.MedianBlur(MGryImg, MBlur, iLength); } else if (true == radioButton3.Checked) { m_iWhichBlur = 2; int iLength = m_aiTrackBarMethod3[2] * 2 + 1; Cv2.Blur(MGryImg, MBlur, new OpenCvSharp.Size(iLength, iLength)); } else if (true == radioButton4.Checked) { m_iWhichBlur = 3; /* MatPointerGau = new Mat(m_MatRealZV.Size(), MatType.CV_32F); */ int iLength = m_aiTrackBarMethod3[2] * 2 + 1; double dSigma = m_aiTrackBarMethod3[3]; Cv2.GaussianBlur(MGryImg, MBlur, new OpenCvSharp.Size(iLength, iLength), dSigma, dSigma); } else { m_iWhichBlur = 0; MBlur = MGryImg; //MGryImg.CopyTo(MBlur); } if (m_aiTrackBarMethod3[0] > m_aiTrackBarMethod3[1]) { int iTemp = m_aiTrackBarMethod3[0]; m_aiTrackBarMethod3[0] = m_aiTrackBarMethod3[1]; m_aiTrackBarMethod3[1] = iTemp; trackBar1.Value = m_aiTrackBarMethod3[0]; trackBar2.Value = m_aiTrackBarMethod3[1]; } m_iMaxV = m_aiTrackBarMethod3[1]; m_iMinV = m_aiTrackBarMethod3[0]; Mat MTempMax, MTempMin; if(0 == m_iMinV) { MTempMin = new Mat(MBlur.Rows, MBlur.Cols, MatType.CV_8UC1, Scalar.All(0)); } else { MTempMin = new Mat(); Cv2.Threshold(MBlur, MTempMin, m_iMinV-1, 255, ThresholdTypes.BinaryInv); } if (255 == m_iMaxV) { MTempMax = new Mat(MBlur.Rows, MBlur.Cols, MatType.CV_8UC1, Scalar.All(0)); } else { MTempMax = new Mat(); Cv2.Threshold(MBlur, MTempMax, m_iMaxV, 255, ThresholdTypes.Binary); } m_Mbinaryzation = MTempMin | MTempMax; //Cv2.BitwiseNot(m_Mbinaryzation, m_Mbinaryzation); int[] point = new int[2]; m_MShowImg = m_MOrgImg.Clone(); //m_MOrgImg.CopyTo(m_MShowImg); Vec3b redcol = new Vec3b(0, 0, 255); int Rows = m_Mbinaryzation.Rows; int Cols = m_Mbinaryzation.Cols; for (point[0] = 0; point[0] < Rows; point[0]++) { for (point[1] = 0; point[1] < Cols; point[1]++) { if (1 > m_Mbinaryzation.At(point[0], point[1])) { //Vec3b colTemp = m_MShowImg.At(point); //colTemp.Item2 = 255; //m_MShowImg.Set(point, colTemp); m_MShowImg.Set(point, redcol); } } } m_BMImage = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(m_MShowImg);// new Bitmap((int)m_MShowImg.Cols, (int)m_MShowImg.Rows, (int)m_MShowImg.Step(), System.Drawing.Imaging.PixelFormat.Format24bppRgb, (System.IntPtr)m_MShowImg.Data); this.pictureBox1.Image = m_BMImage; button5.Enabled = true; button6.Enabled = true; this.Update(); } private void button2_Click(object sender, EventArgs e) { m_aiTrackBarMethod3[0] = trackBar1.Value; m_aiTrackBarMethod3[1] = trackBar2.Value; m_aiTrackBarMethod3[2] = trackBar3.Value; m_aiTrackBarMethod3[3] = trackBar4.Value; m_aiTrackBarMethod3[4] = trackBar5.Value;// 50;// m_aiTrackBarMethod3[4] + 1;// 10;// 9;// m_aiTrackBarMethod3[5] = trackBar6.Value; Mat MBlur = new Mat(); if (true == radioButton2.Checked) { m_iWhichBlur = 1; /* MatPointerMed = new Mat(m_MatRealZV.Size(), MatType.CV_32F); */ int iLength = m_aiTrackBarMethod3[2] * 2 + 1; Cv2.MedianBlur(MGryImg, MBlur, iLength); } else if (true == radioButton3.Checked) { m_iWhichBlur = 2; int iLength = m_aiTrackBarMethod3[2] * 2 + 1; Cv2.Blur(MGryImg, MBlur, new OpenCvSharp.Size(iLength, iLength)); } else if (true == radioButton4.Checked) { m_iWhichBlur = 3; /* MatPointerGau = new Mat(m_MatRealZV.Size(), MatType.CV_32F); */ int iLength = m_aiTrackBarMethod3[2] * 2 + 1; double dSigma = m_aiTrackBarMethod3[3]; Cv2.GaussianBlur(MGryImg, MBlur, new OpenCvSharp.Size(iLength, iLength), dSigma, dSigma); } else { m_iWhichBlur = 0; MBlur = MGryImg; //MGryImg.CopyTo(MBlur); } int iAPLength = m_aiTrackBarMethod3[4] * 2 + 1; int iAPThreshold = m_aiTrackBarMethod3[5]; Cv2.AdaptiveThreshold(MBlur, m_Mbinaryzation, 255, AdaptiveThresholdTypes.GaussianC, ThresholdTypes.Binary, iAPLength, iAPThreshold); OpenCvSharp.Size bianjieSize = m_Mbinaryzation.Size(); Mat Temp = Mat.Zeros(bianjieSize.Height + 2, bianjieSize.Width + 2, m_Mbinaryzation.Type());//延展图像 m_Mbinaryzation.CopyTo(Temp.SubMat(new Range(1, bianjieSize.Height + 1), new Range(1, bianjieSize.Width + 1))); Cv2.FloodFill(Temp, new OpenCvSharp.Point(0, 0), new Scalar(255)); Mat cutImg = new Mat(); Temp.SubMat(new Range(1, bianjieSize.Height + 1), new Range(1, bianjieSize.Width + 1)).CopyTo(cutImg); Cv2.BitwiseNot(cutImg, cutImg); m_Mbinaryzation = m_Mbinaryzation | cutImg; //Cv2.BitwiseNot(m_Mbinaryzation, m_Mbinaryzation); int[] point = new int[2]; m_MOrgImg.CopyTo(m_MShowImg); Vec3b redcol = new Vec3b(0, 0, 255); int Rows = m_Mbinaryzation.Rows; int Cols = m_Mbinaryzation.Cols; for (point[0] = 0; point[0] < Rows; point[0]++) { for (point[1] = 0; point[1] < Cols; point[1]++) { if (1 > m_Mbinaryzation.At(point[0], point[1])) { //Vec3b colTemp = m_MShowImg.At(point); //colTemp.Item2 = 255; //m_MShowImg.Set(point, colTemp); m_MShowImg.Set(point, redcol); } } } m_BMImage = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(m_MShowImg);// new Bitmap((int)m_MShowImg.Cols, (int)m_MShowImg.Rows, (int)m_MShowImg.Step(), System.Drawing.Imaging.PixelFormat.Format24bppRgb, (System.IntPtr)m_MShowImg.Data); this.pictureBox1.Image = m_BMImage; button5.Enabled = true; button6.Enabled = true; this.Update(); } private void button5_Click(object sender, EventArgs e) { m_aiTrackBarMethod3[0] = trackBar1.Value; m_aiTrackBarMethod3[1] = trackBar2.Value; m_aiTrackBarMethod3[2] = trackBar3.Value; m_aiTrackBarMethod3[3] = trackBar4.Value; m_aiTrackBarMethod3[4] = trackBar5.Value; m_aiTrackBarMethod3[5] = trackBar6.Value; if (true == radioButton2.Checked) { m_iWhichBlur = 1; } else if (true == radioButton3.Checked) { m_iWhichBlur = 2; } else if (true == radioButton4.Checked) { m_iWhichBlur = 3; } else { m_iWhichBlur = 0; } OpenCvSharp.Size bianjieSize = m_Mbinaryzation.Size(); Mat Temp = Mat.Zeros(bianjieSize.Height + 2, bianjieSize.Width + 2, m_Mbinaryzation.Type());//延展图像 Mat imageMask = new Mat(m_Mbinaryzation.Size(), MatType.CV_8UC1, new Scalar(255)); OpenCvSharp.Mat posSrc = new OpenCvSharp.Mat(Temp, new OpenCvSharp.Rect(1, 1, bianjieSize.Width + 1, bianjieSize.Height + 1)); m_Mbinaryzation.CopyTo(posSrc, imageMask);//原图像复制到新图像 //m_Mbinaryzation.CopyTo( Temp.SubMat(new Range(1, bianjieSize.Height + 1), new Range(1, bianjieSize.Width + 1)) ); Cv2.FloodFill(Temp, new OpenCvSharp.Point(0, 0), new Scalar(255)); Mat cutImg = new Mat(); //Mat imageMask = new Mat(oldmat.Size(), MatType.CV_8UC1, new Scalar(0)); //OpenCvSharp.Point[][] arr = new OpenCvSharp.Point[1][]; //arr[0] = new OpenCvSharp.Point[] { new OpenCvSharp.Point(rectangle.X, rectangle.Y), new OpenCvSharp.Point(rectangle.X + rectangle.Width, rectangle.Y), new OpenCvSharp.Point(rectangle.X + rectangle.Width, rectangle.Y + rectangle.Height), new OpenCvSharp.Point(rectangle.X, rectangle.Y + rectangle.Height) }; //Cv2.FillPoly(imageMask, arr, new Scalar(255)); //OpenCvSharp.Mat posSrc = new OpenCvSharp.Mat(result, new OpenCvSharp.Rect(newOriX, newOriY, matNew.Width, matNew.Height)); //tempMatSrc.CopyTo(posSrc, mask);//原图像复制到新图像 cutImg = Temp.SubMat(new Range(1, bianjieSize.Height + 1), new Range(1, bianjieSize.Width + 1)).Clone(); //Temp.SubMat(new Range(1, bianjieSize.Height + 1), new Range(1, bianjieSize.Width + 1)).CopyTo(cutImg); Cv2.BitwiseNot(cutImg, cutImg); m_Mbinaryzation = m_Mbinaryzation | cutImg; //Cv2.BitwiseNot(m_Mbinaryzation, m_Mbinaryzation); int[] point = new int[2]; m_MOrgImg.CopyTo(m_MShowImg); Vec3b redcol = new Vec3b(0, 0, 255); int Rows = m_Mbinaryzation.Rows; int Cols = m_Mbinaryzation.Cols; for (point[0] = 0; point[0] < Rows; point[0]++) { for (point[1] = 0; point[1] < Cols; point[1]++) { if (1 > m_Mbinaryzation.At(point[0], point[1])) { //Vec3b colTemp = m_MShowImg.At(point); //colTemp.Item2 = 255; //m_MShowImg.Set(point, colTemp); m_MShowImg.Set(point, redcol); } } } m_BMImage = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(m_MShowImg);// new Bitmap((int)m_MShowImg.Cols, (int)m_MShowImg.Rows, (int)m_MShowImg.Step(), System.Drawing.Imaging.PixelFormat.Format24bppRgb, (System.IntPtr)m_MShowImg.Data); this.pictureBox1.Image = m_BMImage; this.Update(); } public NewSeg NSeg; private void button6_Click(object sender, EventArgs e) { //m_aiTrackBarMethod3[0] = trackBar1.Value; //m_aiTrackBarMethod3[1] = trackBar2.Value; //m_aiTrackBarMethod3[2] = trackBar3.Value; //m_aiTrackBarMethod3[3] = trackBar4.Value; //m_aiTrackBarMethod3[4] = trackBar5.Value; //m_aiTrackBarMethod3[5] = trackBar6.Value; //if (true == radioButton2.Checked) //{ // m_iWhichBlur = 1; //} //else if (true == radioButton3.Checked) //{ // m_iWhichBlur = 2; //} //else if (true == radioButton4.Checked) //{ // m_iWhichBlur = 3; //} //else //{ // m_iWhichBlur = 0; //} //m_iMethod3DoSeg = 1; //m_BMImage = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(m_MShowImg);// new Bitmap((int)m_MShowImg.Cols, (int)m_MShowImg.Rows, (int)m_MShowImg.Step(), System.Drawing.Imaging.PixelFormat.Format24bppRgb, (System.IntPtr)m_MShowImg.Data); //this.pictureBox1.Image = m_BMImage; //this.Update(); m_aiTrackBarMethod3[0] = trackBar1.Value; m_aiTrackBarMethod3[1] = trackBar2.Value; m_aiTrackBarMethod3[2] = trackBar3.Value; m_aiTrackBarMethod3[3] = trackBar4.Value; m_aiTrackBarMethod3[4] = trackBar5.Value; m_aiTrackBarMethod3[5] = trackBar6.Value; if (true == radioButton2.Checked) { m_iWhichBlur = 1; } else if (true == radioButton3.Checked) { m_iWhichBlur = 2; } else if (true == radioButton4.Checked) { m_iWhichBlur = 3; } else { m_iWhichBlur = 0; } m_iMethod3DoSeg = 1; this.NSeg.Method3DoSegButonClickAction(); Mat watermark = this.NSeg.m_watermark; int Rows = watermark.Rows; int Cols = watermark.Cols; int[] point = new int[2]; m_MOrgImg.CopyTo(m_MShowImg); Vec3b redcol = new Vec3b(255, 0, /*255*/0); for (point[0] = 0; point[0] < Rows; point[0]++) { for (point[1] = 0; point[1] < Cols; point[1]++) { if (0 >= watermark.At(point[0], point[1])) { m_MShowImg.Set(point, redcol); //m_MOutImg.Set(point, redcol); } } } m_BMImage = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(/*this.NSeg.m_MOutImg*/m_MShowImg);// new Bitmap((int)m_MShowImg.Cols, (int)m_MShowImg.Rows, (int)m_MShowImg.Step(), System.Drawing.Imaging.PixelFormat.Format24bppRgb, (System.IntPtr)m_MShowImg.Data); this.pictureBox1.Image = m_BMImage; this.Update(); //this.Close(); } private void trackBar5_Scroll(object sender, EventArgs e) { } } }