38.05MBRAR
C# OpenCvSharp透かし除去画像修復.rar
フルデモ、すぐに実行可能
スポーツイベント
VS2022+.net4.8+OpenCvSharp4
コーディング
を使用しています。
Generic; using System.Collections.
を使用しています。
を使用しています。
を使用しています。
を使用しています。
を使用しています。
を使用しています。
を使用しています。
を使用しています。
OpenCvSharp を使用しています。
を使用しています。
名前空間 OpenCvSharp_Watermark Removal_Image Restoration
{
public partial class Form1 : フォーム
{
public Form1()
{
InitializeComponent();
}
ビットマップbmp。
string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.png";
string imgPath = "";
public Mat img, img0, inpainted, inpaintMask;
int thickness = 10;
文字列 CommandText.
インペイントメソッド inpaintMethod.
リスト項目 li;
private void Form1_Load(object sender, EventArgs e)
{
this.SetStyle(ControlStyles.OptimisedDoubleBuffer|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)
{
を返す;
}
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 = 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);
}
});
試す
{
for (; ; )
{
switch ((char)Window.WaitKey(0))
{
case (char)27: // 終了
を返す;
case 'r'.
inpaintMask.SetTo(Scalar.Black);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img0.CopyTo(img);
wImage.ShowImage(img);
ブレイク
case 'i'.
case '\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;
}
}
}
を使用しています。
Generic; using System.Collections.
を使用しています。
を使用しています。
を使用しています。
を使用しています。
を使用しています。
を使用しています。
を使用しています。
を使用しています。
OpenCvSharp を使用しています。
を使用しています。
名前空間 OpenCvSharp_Watermark Removal_Image Restoration
{
public partial class Form1 : フォーム
{
public Form1()
{
InitializeComponent();
}
ビットマップbmp。
string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.png";
string imgPath = "";
public Mat img, img0, inpainted, inpaintMask;
int thickness = 10;
文字列 CommandText.
インペイントメソッド inpaintMethod.
リスト項目 li;
private void Form1_Load(object sender, EventArgs e)
{
this.SetStyle(ControlStyles.OptimisedDoubleBuffer|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)
{
を返す;
}
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 = 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);
}
});
試す
{
for (; ; )
{
switch ((char)Window.WaitKey(0))
{
case (char)27: // 終了
を返す;
case 'r'.
inpaintMask.SetTo(Scalar.Black);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img0.CopyTo(img);
wImage.ShowImage(img);
ブレイク
case 'i'.
case '\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%エラーフリーまたはバグがないわけではありませんの目的のために学ぶために通信する;あなたは、コードを読み、理解することができるように一定の基盤を持っている必要があり、デバッグを変更することができます!コードを修正し、エラーを解決するためには、一定の基礎が必要です。同時に、このサイトの利用者は、ソースコードコンビニエンスストアがダウンロードのために提供されるソフトウェアに関するいかなる権利も所有していないことを理解する必要があり、著作権はリソースの法的所有者に帰属します。 4.このサイト上のすべてのリソースは、学習や研究目的のためにのみ、ダウンロードしたリソースの24時間以内に削除する必要がありますしてください、商業目的のために使用しないでください、そうでなければ、サイトと担保責任サイトの出版社から生じる法的紛争を負担することはありません! 5.複製可能なリソースの性質上、一度購入されたリソースの払い戻しはできません。