当前位置 : 主页 > 编程语言 > java >

图像处理之OpenCvSharp(一.图像修复-处理水印)

来源:互联网 收集:自由互联 发布时间:2022-06-30
图像处理.OpenCvSharp.基于OpenCvSharp的图像修复.处理水印 ​​0.目录​​ ​​1.OpenCvSharp​​ ​​1.1 OpenCvSharp简介​​ ​​1.1.1 介绍​​ ​​1.1.2 特点​​ ​​1.1.3 运行环境​​ ​​1


图像处理.OpenCvSharp.基于OpenCvSharp的图像修复.处理水印

  • ​​0.目录​​
  • ​​1.OpenCvSharp​​
  • ​​1.1 OpenCvSharp简介​​
  • ​​1.1.1 介绍​​
  • ​​1.1.2 特点​​
  • ​​1.1.3 运行环境​​
  • ​​1.1.4 图标​​
  • ​​1.1.5 其他​​
  • ​​1.2 图像修复​​
  • ​​1.2.1 源码​​
  • ​​1.2.2 样例图​​

  • ​​下一章​​

0.目录

1.OpenCvSharp

1.1 OpenCvSharp简介

1.1.1 介绍

​​百度百科​​ OpenCvSharp 是一个OpenCV的.Net wrapper,应用最新的OpenCV库开发,使用习惯比EmguCV更接近原始的OpenCV,有详细的使用样例供参考。该库采用LGPL发行,对商业应用友好。使用OpenCvSharp,可用C#,VB.NET等语言实现多种流行的图像处理(image processing)与计算机视觉(computer vision)算法.

1.1.2 特点

1.相较于SharperCV与OpenCVDotNet,OpenCvSharp直接封装了更多的OpenCV方法,降低学习难度。
2.大部分了继承了IDisposable接口,方便使用using语句块。
3.不强加面向对象思维,可以直接调用原生风格的OpenCV方法。
4.可以将IplImage直接转为Bitmap(GDI+) 或者WriteableBitmap(WPF)。
5.支持Mono。可以运行于支持Mono的任何平台上(如Linux,BSD,Mac OS X等)。

1.1.3 运行环境

1…NET Framework 2.0 或 Mono
2.Visual C++ 2008 SP1 Redistributable Package 或 Visual C++ 2010 SP1 Redistributable Package
3.OpenCV 2.x / 1.1pre
使用者需要自行下载并安装与OpenCvSharp版本一致的OpenCV库。

1.1.4 图标

图像处理之OpenCvSharp(一.图像修复-处理水印)_运行环境

1.1.5 其他

目前博主使用的是Nuget开源库中的OpenCvSharp4,基于.Net Fragment4.6.1,做完简短的介绍,下面进入OpenCvSharp的世界…

1.2 图像修复

1.2.1 源码

​​对白色的水印​​

private const string _savePath = @".\Images\detectResult.png";
public static string _fileName = "detectResult.png";

public static bool ImageRestoring(string path=null)
{
if (path == null)
{
return false;
}

var src = new Mat(path);

Mat mask = new Mat(src.Size(), MatType.CV_8UC1, new Scalar(0));
for (int i = 0; i < src.Width; i++)
{
for (int j = 0; j < src.Height; j++)
{
Vec3b color = src.Get<Vec3b>(j, i);
if (color[0] + color[1] + color[2] > 750)
{
mask.Set<byte>(j, i, 1);
mask.Set<byte>(j + 1, i, 1);
mask.Set<byte>(j, i + 1, 1);
mask.Set<byte>(j - 1, i, 1);
mask.Set<byte>(j, i - 1, 1);
mask.Set<byte>(j + 1, i + 1, 1);
mask.Set<byte>(j - 1, i - 1, 1);
mask.Set<byte>(j + 1, i - 1, 1);
mask.Set<byte>(j - 1, i + 1, 1);
}
}
}

var result = new Mat();
Cv2.Inpaint(src, mask, result, 5.0, InpaintMethod.Telea);
result.SaveImage(保存地址);

return true;
}

1.2.2 样例图

图像处理之OpenCvSharp(一.图像修复-处理水印)_.net_02

图像处理之OpenCvSharp(一.图像修复-处理水印)_运行环境_03
​​​但如果图片的亮度过高,也会带来如下影响​​​图像处理之OpenCvSharp(一.图像修复-处理水印)_图像处理_04
算法参考:还是叫明

下一章

博客地址:


上一篇:【Android】Color不透明度阵列
下一篇:没有了
网友评论