38.05MBRAR
C# OpenCvSharp Удаление водяных знаков Восстановление изображений.rar
Полная демоверсия, готовая к работе
спортивное мероприятие
VS2022+.net4.8+OpenCvSharp4
кодирование
используя System.
Generic; using System.Collections.
используя System.ComponentModel.
используя System.Data.
используя System.Drawing.
используя System.IO.
используя System.Linq.
using System.Security.Cryptography.
using System.Text.
используя System.Windows.Forms.
используя OpenCvSharp.
используя OpenCvSharp.Extensions.
пространство имен OpenCvSharp_Удаление водяных знаков_Восстановление изображения
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Растровое изображение bmp.
string fileFilter = "*. *|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
string imgPath = "";
public Mat img, img0, inpainted, inpaintMask;
Инт толщина = 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)
{
толщина = trackBar2.Value;
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = новый 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)
{
возвращение;
}
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) ! = LButton) !
{
OpenCvSharp.Point pt = новая OpenCvSharp.Point(x, y);
если (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);
}
});
попробуйте
{
для (; ; )
{
switch ((char)Window.WaitKey(0))
{
case (char)27: // exit
возвращение;
case 'r'.
inpaintMask.SetTo(Scalar.Black);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img0.CopyTo(img);
wImage.ShowImage(img);
перерыв;
case 'i'.
случай '\r'.
Inpaint().
перерыв;
}
}
}
наконец-то
{
Window.DestroyAllWindows();
}
}
private void button3_Click(object sender, EventArgs e)
{
Inpaint().
}
void Inpaint()
{
if (pictureBox1.Image == null)
{
возвращение;
}
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;
}
}
}
используя System.
Generic; using System.Collections.
используя System.ComponentModel.
используя System.Data.
используя System.Drawing.
используя System.IO.
используя System.Linq.
using System.Security.Cryptography.
using System.Text.
используя System.Windows.Forms.
используя OpenCvSharp.
используя OpenCvSharp.Extensions.
пространство имен OpenCvSharp_Удаление водяных знаков_Восстановление изображения
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Растровое изображение bmp.
string fileFilter = "*. *|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
string imgPath = "";
public Mat img, img0, inpainted, inpaintMask;
Инт толщина = 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)
{
толщина = trackBar2.Value;
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = новый 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)
{
возвращение;
}
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) ! = LButton) !
{
OpenCvSharp.Point pt = новая OpenCvSharp.Point(x, y);
если (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);
}
});
попробуйте
{
для (; ; )
{
switch ((char)Window.WaitKey(0))
{
case (char)27: // exit
возвращение;
case 'r'.
inpaintMask.SetTo(Scalar.Black);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img0.CopyTo(img);
wImage.ShowImage(img);
перерыв;
case 'i'.
случай '\r'.
Inpaint().
перерыв;
}
}
}
наконец-то
{
Window.DestroyAllWindows();
}
}
private void button3_Click(object sender, EventArgs e)
{
Inpaint().
}
void Inpaint()
{
if (pictureBox1.Image == null)
{
возвращение;
}
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;
}
}
}
Заявление о ресурсах (покупка считается согласием с этим заявлением): 1. любая операция в веб-платформе считается прочитал и согласился с нижней части сайта регистрационное соглашение и отказ от ответственности, этот сайт ресурсы были ультра-низкая цена, и не предоставляет техническую поддержку 2. некоторые пользователи сети поделиться сетевой адрес диска может быть недействительным, таких как возникновение сбоев, пожалуйста, отправьте письмо в службу поддержки код711cn#qq.com (замените # на @) будет составлен, чтобы отправить 3. этот сайт предоставляет все загружаемые ресурсы (программное обеспечение и т.д.) сайт, чтобы гарантировать, что никаких негативных изменений; но этот сайт не может гарантировать точность, безопасность и целостность ресурсов, пользователь загружает по своему усмотрению, мы общаемся, чтобы узнать для целей не все исходный код не 100% безошибочно или нет ошибок; вы должны иметь определенную основу, чтобы быть в состоянии читать и понимать код, чтобы быть в состоянии изменить отладку! код и устранять ошибки. В то же время, пользователи данного сайта должны понимать, что Source Code Convenience Store не владеет никакими правами на программное обеспечение, предоставленное для скачивания, авторские права принадлежат законному владельцу ресурса. 4. все ресурсы на этом сайте только для обучения и исследовательских целей, пожалуйста, должны быть удалены в течение 24 часов после загрузки ресурсов, не используйте в коммерческих целях, в противном случае юридические споры, возникающие с сайта и издателя залога ответственности сайта и не будет нести! 5. в связи с воспроизводимым характером ресурсов, приобретенные ресурсы не подлежат возврату, баланс пополнения также не подлежит возврату