38.05MBRAR
C# OpenCvSharp 去水印 图像修复.rar
Vollständige Demo, sofort einsatzbereit
Sportereignis
VS2022+.net4.8+OpenCvSharp4
Kodierung
mit System.
Generic; using System.Collections.
unter Verwendung von System.ComponentModel.
mit System.Data.
using System.Drawing.
using System.IO;
mit System.Linq.
using System.Security.Cryptography;
using System.Text.
mit System.Windows.Forms.
mit OpenCvSharp.
using OpenCvSharp.Extensions;
namespace OpenCvSharp_去水印_图像修复
{
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 thickness = 10;
string CommandText;
InpaintMethod inpaintMethod;
ListItem li;
private void Form1_Load(object sender, EventArgs e)
{
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);
this.UpdateStyles();
//添加项:
cBoxThresholdTypes.Items.Add(new ListItem(“NS”, InpaintMethod.NS));
cBoxThresholdTypes.Items.Add(new ListItem(“Telea”, InpaintMethod.Telea));
//设置选中项:
cBoxThresholdTypes.SelectedIndex = 0; //根据索引
}
private void trackBar2_Scroll(object sender, EventArgs e)
{
thickness = 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)
{
if (pictureBox1.Image == null)
{
Rückkehr;
}
img = img0.Clone();
inpaintMask = new Mat(img0.Size(), MatType.CV_8U, Scalar.Black);
inpainted = img0.EmptyClone();
Window wImage = new Window(“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) != 0)
{
OpenCvSharp.Point pt = new 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);
}
});
Versuchen Sie
{
for (; ; )
{
switch ((char)Window.WaitKey(0))
{
case (char)27: // exit
Rückkehr;
case ‘r’:
inpaintMask.SetTo(Scalar.Black);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img0.CopyTo(img);
wImage.ShowImage(img);
Pause;
case ‘i’:
case ‘\r’:
Inpaint();
Pause;
}
}
}
finally
{
Window.DestroyAllWindows();
}
}
private void button3_Click(object sender, EventArgs e)
{
Inpaint();
}
void Inpaint()
{
if (pictureBox1.Image == null)
{
Rückkehr;
}
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;
}
}
}
mit System.
Generic; using System.Collections.
unter Verwendung von System.ComponentModel.
mit System.Data.
using System.Drawing.
using System.IO;
mit System.Linq.
using System.Security.Cryptography;
using System.Text.
mit System.Windows.Forms.
mit OpenCvSharp.
using OpenCvSharp.Extensions;
namespace OpenCvSharp_去水印_图像修复
{
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 thickness = 10;
string CommandText;
InpaintMethod inpaintMethod;
ListItem li;
private void Form1_Load(object sender, EventArgs e)
{
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);
this.UpdateStyles();
//添加项:
cBoxThresholdTypes.Items.Add(new ListItem(“NS”, InpaintMethod.NS));
cBoxThresholdTypes.Items.Add(new ListItem(“Telea”, InpaintMethod.Telea));
//设置选中项:
cBoxThresholdTypes.SelectedIndex = 0; //根据索引
}
private void trackBar2_Scroll(object sender, EventArgs e)
{
thickness = 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)
{
if (pictureBox1.Image == null)
{
Rückkehr;
}
img = img0.Clone();
inpaintMask = new Mat(img0.Size(), MatType.CV_8U, Scalar.Black);
inpainted = img0.EmptyClone();
Window wImage = new Window(“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) != 0)
{
OpenCvSharp.Point pt = new 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);
}
});
Versuchen Sie
{
for (; ; )
{
switch ((char)Window.WaitKey(0))
{
case (char)27: // exit
Rückkehr;
case ‘r’:
inpaintMask.SetTo(Scalar.Black);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img0.CopyTo(img);
wImage.ShowImage(img);
Pause;
case ‘i’:
case ‘\r’:
Inpaint();
Pause;
}
}
}
finally
{
Window.DestroyAllWindows();
}
}
private void button3_Click(object sender, EventArgs e)
{
Inpaint();
}
void Inpaint()
{
if (pictureBox1.Image == null)
{
Rückkehr;
}
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;
}
}
}
Ressourcenerklärung (der Kauf gilt als Zustimmung zu dieser Erklärung): 1. jede Operation in der Website-Plattform gilt als gelesen zu haben und stimmte der Unterseite der Website-Registrierung Vereinbarung und Haftungsausschluss, diese Website Ressourcen wurden ultra-niedrigen Preis, und bietet keine technische Unterstützung (2) Einige Netzwerk-Benutzer teilen sich die Netto-Disc-Adresse kann ungültig sein, wie das Auftreten von Fehlern, senden Sie bitte eine E-Mail an den Kundendienst code711cn#qq.com (ersetzen Sie # mit @) wird bis zu senden gemacht werden 3. diese Website bietet alle herunterladbaren Ressourcen (Software, etc.) Website, um sicherzustellen, dass keine negativen Veränderungen; aber diese Website kann nicht garantieren, die Richtigkeit, Sicherheit und Integrität der Ressourcen, die Benutzer-Downloads nach eigenem Ermessen, kommunizieren wir für die Zwecke der nicht alle den Quellcode zu lernen ist nicht 100% fehlerfrei oder keine Bugs; Sie müssen eine bestimmte Grundlage zu können, lesen und verstehen den Code, um in der Lage, das Debugging zu ändern haben! Code zu ändern und Fehler zu beheben. Gleichzeitig müssen die Nutzer dieser Seite verstehen, dass der Source Code Convenience Store keine Rechte an der zum Download bereitgestellten Software besitzt, das Urheberrecht gehört dem rechtlichen Eigentümer der Ressource. 4. alle Ressourcen auf dieser Website nur für Lern- und Forschungszwecke, bitte müssen innerhalb von 24 Stunden der heruntergeladenen Ressourcen gelöscht werden, verwenden Sie nicht für kommerzielle Zwecke, da sonst die rechtlichen Streitigkeiten, die sich aus der Website und der Herausgeber der Sicherheiten Haftung Website und wird nicht getragen werden! (5) Aufgrund der Reproduzierbarkeit der Ressourcen sind einmal erworbene Beträge nicht erstattungsfähig, und auch das Guthaben wird nicht zurückerstattet.