38.05MBRAR
C# OpenCvSharp Eliminación de Marcas de Agua Reparación de Imágenes.rar
Demo completa, lista para funcionar
evento deportivo
VS2022+.net4.8+OpenCvSharp4
codificación
usando System.
Generic; using System.Collections.
using System.ComponentModel.
usando System.Data.
usando System.Drawing.
usando System.IO.
using System.Linq.
usando System.Security.Cryptography.
usando System.Text.
using System.Windows.Forms.
usando OpenCvSharp.
usando OpenCvSharp.Extensions.
namespace OpenCvSharp_Eliminación de marcas de agua_Restauración de imágenes
{
public partial class Formulario1 : Formulario
{
public Formulario1()
{
InicializarComponente();
}
Mapa de bits bmp.
cadena fileFilter = "*. *|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
cadena imgPath = "";
public Mat img, img0, inpainted, inpaintMask;
int grosor = 10;
cadena CommandText.
InpaintMethod inpaintMethod.
ListItem li;
private void Form1_Load(object sender, EventArgs e)
{
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);
this.ActualizarEstilos();
/Agregar elemento:
cBoxThresholdTypes.Items.Add(new ListItem("NS", InpaintMethod.NS));
cBoxThresholdTypes.Items.Add(new ListItem("Telea", InpaintMethod.Telea));
//Ajustar la selección:
cBoxThresholdTypes.SelectedIndex = 0; //por índice
}
private void trackBar2_Scroll(object sender, EventArgs e)
{
grosor = trackBar2.Value;
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filtro = fileFilter;
¡if (ofd.ShowDialog() ! = DialogResult.OK) return;
imgPath = ofd.FileName;
bmp = nuevo Bitmap(imgRuta);
PictureBox1.Image = bmp;
img0 = Cv2.ImRead(imgPath);
inpaintMask = new Mat(img0.Size(), MatType.CV_8U, Scalar.Black);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
PictureBox3.Image = null;
}
private void cBoxThresholdTypes_SelectedIndexChanged(object sender, EventArgs e)
{
Inpaint().
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
Inpaint().
}
private void button4_Click(object sender, EventArgs e)
{
if (pictureBox1.Image == null)
{
volver;
}
img = img0.Clone();
inpaintMask = new Mat(img0.Size(), MatType.CV_8U, Scalar.Black);
inpainted = img0.EmptyClone();
Window wImage = nueva Window("imagen", img);
OpenCvSharp.Point prevPt = new OpenCvSharp.Point(-1, -1);
wImage.SetMouseCallback((MouseEventTypes ev, int x, int y, MouseEventFlags flags, IntPtr userdata) =>
{
if (ev == MouseEventTypes.LButtonUp || (flags & MouseEventFlags.LButton) == 0)
{
prevPt = new OpenCvSharp.Point(-1, -1);
}
else if (ev == MouseEventTypes.LButtonDown)
{
prevPt = new OpenCvSharp.Point(x, y);
}
¡else if (ev == MouseEventTypes.MouseMove && (flags & MouseEventFlags.LButton) ! ¡= LButton) !
{
OpenCvSharp.Point pt = nuevo OpenCvSharp.Point(x, y);
if (prevPt.X < 0)
{
prevPt = pt;
}
inpaintMask.Line(prevPt, pt, Scalar.White, thickness, LineTypes.AntiAlias, 0);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img.Line(prevPt, pt, Scalar.White, thickness, LineTypes.AntiAlias, 0);
prevPt = pt;
wImage.ShowImage(img);
}
});
pruebe
{
para (; ; )
{
switch ((char)Window.WaitKey(0))
{
case (char)27: // exit
volver;
caso 'r'.
inpaintMask.SetTo(Scalar.Black);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img0.CopyTo(img);
wImage.ShowImage(img);
romper;
caso 'i'.
caso '\r'.
Inpaint().
romper;
}
}
}
finalmente
{
Window.DestroyAllWindows();
}
}
private void button3_Click(object sender, EventArgs e)
{
Inpaint().
}
void Inpaint()
{
if (pictureBox1.Image == null)
{
volver;
}
li = (ListItem)cBoxThresholdTypes.SelectedItem;
inpaintMethod = (InpaintMethod)li.Value;
Cv2.Inpaint(img, inpaintMask, inpainted, trackBar1.Value, inpaintMethod);
pictureBox3.Image = BitmapConverter.ToBitmap(inpainted);
CommandText = String.Format("Cv2.Inpaint(src, mask, dst,{0},{1})", trackBar1.Value, inpaintMethod.ToString());
txtTextoComando.Text = TextoComando;
}
}
}
usando System.
Generic; using System.Collections.
using System.ComponentModel.
usando System.Data.
usando System.Drawing.
usando System.IO.
using System.Linq.
usando System.Security.Cryptography.
usando System.Text.
using System.Windows.Forms.
usando OpenCvSharp.
usando OpenCvSharp.Extensions.
namespace OpenCvSharp_Eliminación de marcas de agua_Restauración de imágenes
{
public partial class Formulario1 : Formulario
{
public Formulario1()
{
InicializarComponente();
}
Mapa de bits bmp.
cadena fileFilter = "*. *|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
cadena imgPath = "";
public Mat img, img0, inpainted, inpaintMask;
int grosor = 10;
cadena CommandText.
InpaintMethod inpaintMethod.
ListItem li;
private void Form1_Load(object sender, EventArgs e)
{
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);
this.ActualizarEstilos();
/Agregar elemento:
cBoxThresholdTypes.Items.Add(new ListItem("NS", InpaintMethod.NS));
cBoxThresholdTypes.Items.Add(new ListItem("Telea", InpaintMethod.Telea));
//Ajustar la selección:
cBoxThresholdTypes.SelectedIndex = 0; //por índice
}
private void trackBar2_Scroll(object sender, EventArgs e)
{
grosor = trackBar2.Value;
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filtro = fileFilter;
¡if (ofd.ShowDialog() ! = DialogResult.OK) return;
imgPath = ofd.FileName;
bmp = nuevo Bitmap(imgRuta);
PictureBox1.Image = bmp;
img0 = Cv2.ImRead(imgPath);
inpaintMask = new Mat(img0.Size(), MatType.CV_8U, Scalar.Black);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
PictureBox3.Image = null;
}
private void cBoxThresholdTypes_SelectedIndexChanged(object sender, EventArgs e)
{
Inpaint().
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
Inpaint().
}
private void button4_Click(object sender, EventArgs e)
{
if (pictureBox1.Image == null)
{
volver;
}
img = img0.Clone();
inpaintMask = new Mat(img0.Size(), MatType.CV_8U, Scalar.Black);
inpainted = img0.EmptyClone();
Window wImage = nueva Window("imagen", img);
OpenCvSharp.Point prevPt = new OpenCvSharp.Point(-1, -1);
wImage.SetMouseCallback((MouseEventTypes ev, int x, int y, MouseEventFlags flags, IntPtr userdata) =>
{
if (ev == MouseEventTypes.LButtonUp || (flags & MouseEventFlags.LButton) == 0)
{
prevPt = new OpenCvSharp.Point(-1, -1);
}
else if (ev == MouseEventTypes.LButtonDown)
{
prevPt = new OpenCvSharp.Point(x, y);
}
¡else if (ev == MouseEventTypes.MouseMove && (flags & MouseEventFlags.LButton) ! ¡= LButton) !
{
OpenCvSharp.Point pt = nuevo OpenCvSharp.Point(x, y);
if (prevPt.X < 0)
{
prevPt = pt;
}
inpaintMask.Line(prevPt, pt, Scalar.White, thickness, LineTypes.AntiAlias, 0);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img.Line(prevPt, pt, Scalar.White, thickness, LineTypes.AntiAlias, 0);
prevPt = pt;
wImage.ShowImage(img);
}
});
pruebe
{
para (; ; )
{
switch ((char)Window.WaitKey(0))
{
case (char)27: // exit
volver;
caso 'r'.
inpaintMask.SetTo(Scalar.Black);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img0.CopyTo(img);
wImage.ShowImage(img);
romper;
caso 'i'.
caso '\r'.
Inpaint().
romper;
}
}
}
finalmente
{
Window.DestroyAllWindows();
}
}
private void button3_Click(object sender, EventArgs e)
{
Inpaint().
}
void Inpaint()
{
if (pictureBox1.Image == null)
{
volver;
}
li = (ListItem)cBoxThresholdTypes.SelectedItem;
inpaintMethod = (InpaintMethod)li.Value;
Cv2.Inpaint(img, inpaintMask, inpainted, trackBar1.Value, inpaintMethod);
pictureBox3.Image = BitmapConverter.ToBitmap(inpainted);
CommandText = String.Format("Cv2.Inpaint(src, mask, dst,{0},{1})", trackBar1.Value, inpaintMethod.ToString());
txtTextoComando.Text = TextoComando;
}
}
}
Declaración de recursos (la compra se considera un acuerdo con esta declaración): 1. Cualquier operación en la plataforma del sitio web se considera que han leído y aceptado la parte inferior del acuerdo de registro del sitio web y renuncia de responsabilidad, los recursos de este sitio han sido ultra-bajo precio, y no proporciona soporte técnico 2. Algunos usuarios de la red comparten la dirección de disco neto puede no ser válida, como la aparición de fallos, por favor envíe un correo electrónico al servicio al cliente code711cn#qq.com (sustituir # con @) se compondrá de enviar ¡3. Este sitio proporciona todos los recursos descargables (software, etc) sitio para asegurarse de que no hay cambios negativos, pero este sitio no puede garantizar la exactitud, seguridad e integridad de los recursos, las descargas de los usuarios a su propia discreción, nos comunicamos a aprender con el fin de no todo el código fuente no es 100% libre de errores o sin errores, es necesario tener una cierta base para poder leer y entender el código, para poder modificar la depuración! código y resolver errores. Al mismo tiempo, los usuarios de este sitio deben entender que la Source Code Convenience Store no posee ningún derecho sobre el software proporcionado para su descarga, los derechos de autor pertenecen al propietario legal del recurso. ¡4. Todos los recursos en este sitio sólo para fines de aprendizaje y de investigación, por favor debe ser eliminado dentro de las 24 horas de los recursos descargados, no utilice con fines comerciales, de lo contrario los conflictos legales derivados del sitio y el editor del sitio de responsabilidad colateral y no se llevará a cabo! 5. Debido a la naturaleza reproducible de los recursos, una vez adquiridos no son reembolsables, el saldo de recarga tampoco lo es.