38.05MBRAR
C# OpenCvSharp Watermark Removal Image Repair.rar
Démonstration complète, prêt à fonctionner
événement sportif
VS2022+.net4.8+OpenCvSharp4
codification
en utilisant System.
Generic ; using System.Collections.
using System.ComponentModel.
using System.Data.
using System.Drawing.
using System.IO.
using System.Linq.
using System.Security.Cryptography.
using System.Text.
using System.Windows.Forms.
en utilisant OpenCvSharp.
en utilisant OpenCvSharp.Extensions.
namespace OpenCvSharp_Watermark Removal_Image Restoration
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent() ;
}
Bitmap bmp.
string fileFilter = "*. *|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png" ;
string imgPath = "" ;
public Mat img, img0, inpainted, inpaintMask ;
int épaisseur = 10 ;
string CommandText.
InpaintMethod inpaintMethod.
ListItem li ;
private void Form1_Load(object sender, EventArgs e)
{
this.SetStyle(ControlStyles.OptimisedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true) ;
this.UpdateStyles() ;
//Ajouter un élément :
cBoxThresholdTypes.Items.Add(new ListItem("NS", InpaintMethod.NS)) ;
cBoxThresholdTypes.Items.Add(new ListItem("Telea", InpaintMethod.Telea)) ;
//Sélectionner la sélection :
cBoxThresholdTypes.SelectedIndex = 0 ; //par index
}
private void trackBar2_Scroll(object sender, EventArgs e)
{
épaisseur = trackBar2.Value ;
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog() ;
ofd.Filter = fileFilter ;
if (ofd.ShowDialog() ! = DialogResult.OK) return ;
imgPath = ofd.FileName ;
bmp = new Bitmap(imgPath) ;
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)
{
si (pictureBox1.Image == null)
{
retour ;
}
img = img0.Clone() ;
inpaintMask = new Mat(img0.Size(), MatType.CV_8U, Scalar.Black) ;
inpainted = img0.EmptyClone() ;
Fenêtre wImage = nouvelle fenêtre ("image", 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 = new OpenCvSharp.Point(x, y) ;
si (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) ;
}
});
essayer
{
pour ( ; ; )
{
switch ((char)Window.WaitKey(0))
{
case (char)27 : // exit
retour ;
cas 'r'.
inpaintMask.SetTo(Scalar.Black) ;
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask) ;
img0.CopyTo(img) ;
wImage.ShowImage(img) ;
pause ;
cas 'i'.
cas '\r'.
Inpaint().
pause ;
}
}
}
enfin
{
Window.DestroyAllWindows() ;
}
}
private void button3_Click(object sender, EventArgs e)
{
Inpaint().
}
void Inpaint()
{
si (pictureBox1.Image == null)
{
retour ;
}
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()) ;
txtCommandText.Text = CommandText ;
}
}
}
en utilisant System.
Generic ; using System.Collections.
using System.ComponentModel.
using System.Data.
using System.Drawing.
using System.IO.
using System.Linq.
using System.Security.Cryptography.
using System.Text.
using System.Windows.Forms.
en utilisant OpenCvSharp.
en utilisant OpenCvSharp.Extensions.
namespace OpenCvSharp_Watermark Removal_Image Restoration
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent() ;
}
Bitmap bmp.
string fileFilter = "*. *|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png" ;
string imgPath = "" ;
public Mat img, img0, inpainted, inpaintMask ;
int épaisseur = 10 ;
string CommandText.
InpaintMethod inpaintMethod.
ListItem li ;
private void Form1_Load(object sender, EventArgs e)
{
this.SetStyle(ControlStyles.OptimisedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true) ;
this.UpdateStyles() ;
//Ajouter un élément :
cBoxThresholdTypes.Items.Add(new ListItem("NS", InpaintMethod.NS)) ;
cBoxThresholdTypes.Items.Add(new ListItem("Telea", InpaintMethod.Telea)) ;
//Sélectionner la sélection :
cBoxThresholdTypes.SelectedIndex = 0 ; //par index
}
private void trackBar2_Scroll(object sender, EventArgs e)
{
épaisseur = trackBar2.Value ;
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog() ;
ofd.Filter = fileFilter ;
if (ofd.ShowDialog() ! = DialogResult.OK) return ;
imgPath = ofd.FileName ;
bmp = new Bitmap(imgPath) ;
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)
{
si (pictureBox1.Image == null)
{
retour ;
}
img = img0.Clone() ;
inpaintMask = new Mat(img0.Size(), MatType.CV_8U, Scalar.Black) ;
inpainted = img0.EmptyClone() ;
Fenêtre wImage = nouvelle fenêtre ("image", 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 = new OpenCvSharp.Point(x, y) ;
si (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) ;
}
});
essayer
{
pour ( ; ; )
{
switch ((char)Window.WaitKey(0))
{
case (char)27 : // exit
retour ;
cas 'r'.
inpaintMask.SetTo(Scalar.Black) ;
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask) ;
img0.CopyTo(img) ;
wImage.ShowImage(img) ;
pause ;
cas 'i'.
cas '\r'.
Inpaint().
pause ;
}
}
}
enfin
{
Window.DestroyAllWindows() ;
}
}
private void button3_Click(object sender, EventArgs e)
{
Inpaint().
}
void Inpaint()
{
si (pictureBox1.Image == null)
{
retour ;
}
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()) ;
txtCommandText.Text = CommandText ;
}
}
}
Déclaration de ressources (l'achat est considéré comme un accord avec cette déclaration) : 1) Toute opération sur la plate-forme du site web est considérée comme ayant lu et accepté le bas de l'accord d'enregistrement du site web et la clause de non-responsabilité, les ressources de ce site ont été vendues à un prix très bas et ne fournissent pas d'assistance technique. 2) Certains utilisateurs du réseau partagent l'adresse du disque net qui peut être invalide, par exemple en cas de défaillance, veuillez envoyer un courriel au service clientèle code711cn#qq.com (remplacez # par @) sera fait pour envoyer. 3) Ce site fournit toutes les ressources téléchargeables (logiciels, etc.) pour s'assurer qu'il n'y a pas de changements négatifs ; mais ce site ne peut pas garantir l'exactitude, la sécurité et l'intégrité des ressources, l'utilisateur télécharge à sa propre discrétion, nous communiquons pour apprendre dans le but de ne pas tout le code source n'est pas 100% sans erreur ou pas de bugs ; vous devez avoir une certaine base pour être en mesure de lire et de comprendre le code, pour être en mesure de modifier le code de débogage ! et de résoudre les erreurs. En même temps, les utilisateurs de ce site doivent comprendre que le Source Code Convenience Store ne possède aucun droit sur le logiciel fourni pour le téléchargement, le copyright appartient au propriétaire légal de la ressource. 4. toutes les ressources sur ce site uniquement à des fins d'apprentissage et de recherche, s'il vous plaît doivent être supprimées dans les 24 heures des ressources téléchargées, ne pas utiliser à des fins commerciales, sinon les litiges juridiques découlant du site et de l'éditeur de la responsabilité collatérale du site et ne seront pas pris en charge ! 5. en raison de la nature reproductible des ressources, une fois achetées, les ressources ne sont pas remboursables et le solde de la recharge ne l'est pas non plus.