38.05MBRAR
C# OpenCvSharp 워터마크 제거 이미지 복구.rar
전체 데모, 실행 준비 완료
스포츠 이벤트
VS2022+.net4.8+OpenCvSharp4
코딩
System.
Generic; System.Collections를 사용합니다.
System.ComponentModel을 사용합니다.
System.Data를 사용합니다.
System.Drawing을 사용합니다.
System.IO를 사용합니다.
System.Linq를 사용합니다.
System.Security.Cryptography를 사용합니다.
System.Text를 사용합니다.
System.Windows.Forms를 사용합니다.
OpenCvSharp를 사용합니다.
OpenCvSharp.Extensions를 사용합니다.
네임스페이스 OpenCvSharp_워터마크 제거_이미지 복원
{
공용 부분 클래스 Form1 : Form
{
public Form1()
{
초기화 컴포넌트();
}
비트맵 bmp.
문자열 fileFilter = "*. *|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
문자열 imgPath = "";
public Mat img, img0, inpainted, inpaintMask;
int 두께 = 10;
문자열 CommandText.
인페인트 메서드 인페인트 메서드.
ListItem li;
private void Form1_Load(객체 sender, EventArgs e)
{
이.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true)을 설정합니다;
이.업데이트스타일();
//아이템 추가:
cBoxThresholdTypes.Items.Add(new ListItem("NS", InpaintMethod.NS));
cBoxThresholdTypes.Items.Add(new ListItem("Telea", InpaintMethod.Telea));
//선택 항목을 설정합니다:
cBoxThresholdTypes.SelectedIndex = 0; //색인별
}
private void trackBar2_Scroll(객체 sender, EventArgs e)
{
두께 = 트랙바2.값;
}
private void button1_Click(객체 sender, EventArgs e)
{
OpenFileDialog ofd = 새 OpenFileDialog();
ofd.Filter = 파일필터;
if (ofd.ShowDialog() ! = DialogResult.OK) 반환합니다;
이미지 경로 = ofd.파일 이름;
bmp = 새 비트맵(imgPath);
PictureBox1.Image = bmp;
img0 = Cv2.ImRead(imgPath);
inpaintMask = 새로운 Mat(img0.Size(), MatType.CV_8U, Scalar.Black);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
PictureBox3.Image = null;
}
private void cBoxThresholdTypes_SelectedIndexChanged(객체 sender, EventArgs e)
{
Inpaint().
}
private void trackBar1_Scroll(객체 sender, EventArgs e)
{
Inpaint().
}
private void button4_Click(객체 sender, EventArgs e)
{
if (pictureBox1.Image == null)
{
반환합니다;
}
이미지 = img0.Clone();
inpaintMask = 새로운 Mat(img0.Size(), MatType.CV_8U, Scalar.Black);
inpainted = img0.EmptyClone();
창 wImage = 새 창("이미지", img);
OpenCvSharp.Point prevPt = 새로운 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 = 새로운 OpenCvSharp.Point(-1, -1);
}
else if (ev == MouseEventTypes.LButtonDown)
{
prevPt = 새로운 OpenCvSharp.Point(x, y);
}
else if (ev == MouseEventTypes.MouseMove && (flags & MouseEventFlags.LButton) ! = LButton)!
{
OpenCvSharp.Point pt = 새로운 OpenCvSharp.Point(x, y);
if (prevPt.X < 0)
{
이전Pt = pt;
}
inpaintMask.Line(prevPt, pt, Scalar.White, 두께, LineTypes.AntiAlias, 0);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img.Line(prevPt, pt, Scalar.White, thickness, LineTypes.AntiAlias, 0);
이전Pt = pt;
wImage.ShowImage(img);
}
});
시도
{
for (; ; )
{
switch ((char)Window.WaitKey(0))
{
case (char)27: // exit
반환합니다;
대소문자 'r'.
인페인트마스크.세트투(스칼라.블랙);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img0.CopyTo(img);
wImage.ShowImage(img);
break;
케이스 'i'.
케이스 '\r'.
Inpaint().
break;
}
}
}
마침내
{
창을 모두 파괴합니다();
}
}
private void button3_Click(객체 sender, EventArgs e)
{
Inpaint().
}
void Inpaint()
{
if (pictureBox1.Image == null)
{
반환합니다;
}
li = (ListItem)cBoxThresholdTypes.SelectedItem;
인페인트 메서드 = (인페인트 메서드)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; System.Collections를 사용합니다.
System.ComponentModel을 사용합니다.
System.Data를 사용합니다.
System.Drawing을 사용합니다.
System.IO를 사용합니다.
System.Linq를 사용합니다.
System.Security.Cryptography를 사용합니다.
System.Text를 사용합니다.
System.Windows.Forms를 사용합니다.
OpenCvSharp를 사용합니다.
OpenCvSharp.Extensions를 사용합니다.
네임스페이스 OpenCvSharp_워터마크 제거_이미지 복원
{
공용 부분 클래스 Form1 : Form
{
public Form1()
{
초기화 컴포넌트();
}
비트맵 bmp.
문자열 fileFilter = "*. *|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
문자열 imgPath = "";
public Mat img, img0, inpainted, inpaintMask;
int 두께 = 10;
문자열 CommandText.
인페인트 메서드 인페인트 메서드.
ListItem li;
private void Form1_Load(객체 sender, EventArgs e)
{
이.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true)을 설정합니다;
이.업데이트스타일();
//아이템 추가:
cBoxThresholdTypes.Items.Add(new ListItem("NS", InpaintMethod.NS));
cBoxThresholdTypes.Items.Add(new ListItem("Telea", InpaintMethod.Telea));
//선택 항목을 설정합니다:
cBoxThresholdTypes.SelectedIndex = 0; //색인별
}
private void trackBar2_Scroll(객체 sender, EventArgs e)
{
두께 = 트랙바2.값;
}
private void button1_Click(객체 sender, EventArgs e)
{
OpenFileDialog ofd = 새 OpenFileDialog();
ofd.Filter = 파일필터;
if (ofd.ShowDialog() ! = DialogResult.OK) 반환합니다;
이미지 경로 = ofd.파일 이름;
bmp = 새 비트맵(imgPath);
PictureBox1.Image = bmp;
img0 = Cv2.ImRead(imgPath);
inpaintMask = 새로운 Mat(img0.Size(), MatType.CV_8U, Scalar.Black);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
PictureBox3.Image = null;
}
private void cBoxThresholdTypes_SelectedIndexChanged(객체 sender, EventArgs e)
{
Inpaint().
}
private void trackBar1_Scroll(객체 sender, EventArgs e)
{
Inpaint().
}
private void button4_Click(객체 sender, EventArgs e)
{
if (pictureBox1.Image == null)
{
반환합니다;
}
이미지 = img0.Clone();
inpaintMask = 새로운 Mat(img0.Size(), MatType.CV_8U, Scalar.Black);
inpainted = img0.EmptyClone();
창 wImage = 새 창("이미지", img);
OpenCvSharp.Point prevPt = 새로운 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 = 새로운 OpenCvSharp.Point(-1, -1);
}
else if (ev == MouseEventTypes.LButtonDown)
{
prevPt = 새로운 OpenCvSharp.Point(x, y);
}
else if (ev == MouseEventTypes.MouseMove && (flags & MouseEventFlags.LButton) ! = LButton)!
{
OpenCvSharp.Point pt = 새로운 OpenCvSharp.Point(x, y);
if (prevPt.X < 0)
{
이전Pt = pt;
}
inpaintMask.Line(prevPt, pt, Scalar.White, 두께, LineTypes.AntiAlias, 0);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img.Line(prevPt, pt, Scalar.White, thickness, LineTypes.AntiAlias, 0);
이전Pt = pt;
wImage.ShowImage(img);
}
});
시도
{
for (; ; )
{
switch ((char)Window.WaitKey(0))
{
case (char)27: // exit
반환합니다;
대소문자 'r'.
인페인트마스크.세트투(스칼라.블랙);
pictureBox2.Image = BitmapConverter.ToBitmap(inpaintMask);
img0.CopyTo(img);
wImage.ShowImage(img);
break;
케이스 'i'.
케이스 '\r'.
Inpaint().
break;
}
}
}
마침내
{
창을 모두 파괴합니다();
}
}
private void button3_Click(객체 sender, EventArgs e)
{
Inpaint().
}
void Inpaint()
{
if (pictureBox1.Image == null)
{
반환합니다;
}
li = (ListItem)cBoxThresholdTypes.SelectedItem;
인페인트 메서드 = (인페인트 메서드)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 (#를 @로 대체)으로 이메일을 보내 주시기 바랍니다. 이 사이트는 부정적인 변경이 없도록 다운로드 가능한 모든 리소스 (소프트웨어 등) 사이트를 제공합니다. 그러나이 사이트는 리소스의 정확성, 보안 및 무결성을 보장 할 수 없으며 사용자는 자신의 재량에 따라 다운로드하며 모든 소스 코드가 100% 오류가 없거나 버그가없는 것은 아니라는 목적으로 배우기 위해 통신하며 코드를 읽고 이해할 수있는 특정 기초가 있어야 디버깅을 수정할 수 있습니다! 코드를 수정하고 오류를 해결할 수 있어야 합니다. 동시에 이 사이트의 사용자는 소스 코드 편의점이 다운로드용으로 제공된 소프트웨어에 대한 어떠한 권리도 소유하지 않으며, 저작권은 리소스의 법적 소유자에게 있음을 이해해야 합니다. 4. 본 사이트의 모든 자료는 학습 및 연구 목적으로 만 다운로드 한 후 24시간 이내에 삭제해야 하며, 상업적 목적으로 사용하지 마시고, 그렇지 않을 경우 발생하는 법적 분쟁은 사이트 및 부수적 책임 사이트의 게시자에게 있으며 책임을지지 않습니다! 5. 재생산 가능한 자원의 특성으로 인해 일단 구매하면 환불이 불가능하며, 충전 잔액도 환불되지 않습니다.