当前位置: 首页 > news >正文

推荐一个最好用的高性能、低内存、跨平台的图片处理库

今天给推荐一个可以媲美OpenCV的开源库,它具有高性能、低内存、跨平台、无内存泄漏的特性。

项目简介

这是用C++开发的图像处理库,支持的API超过300多个,涵盖了算术、颜色、图片转换、卷积、形态、马赛克、合并、切割等。

支持多种图像格式,包括:JPEG、JPEG2000、JPEG-XL、TIFF、PNG、WebP、HEIC、AVIF、FITS、Matlab、OpenEXR、PDF、SVG、HDR、PPM/PGM/PFM、CSV、GIF、分析、NIfTI、DeepZoom 和 OpenSlide。支持相应的图片格式直接保存,不需转换。

性能好、运行速度非常快、占用很少的内存,相对同类库,表现最优秀,性能快5倍以上。

图片

官方提供SDK

官方提供各种语言的SDK,包括:Ruby、Python、PHP、C#/.Net、Go、Lua、Crystal、Elixir。

图片

**使用例子
**

在C#使用还是比较方便,通过Nuget先安装库。此示例加载png文件、并进行颜色转换,并以png格式保存。

using NetVips;
var i = NetVips.Image.NewFromFile("E:projectTestProjectConsoleAppConsoleApp.png");
var i2 = i.CMC2LCh();
i2.Pngsave("E:projectTestProjectConsoleAppConsoleAppCMC2LCh.png");

图片

简单使用

通道分割

NetVips.Image image = NetVips.Image.NewFromFile("E:projectTestProjectConsoleAppConsoleApp.png", memory: false, access: Enums.Access.Random);
NetVips.Image[] images = image.Bandsplit();
foreach(var item in images)
{
    item.Pngsave("E:projectTestProjectConsoleAppConsoleAppBandsplit"+DateTime.Now.Ticks+".png");
}

图片

高斯滤波

NetVips.Image image = NetVips.Image.NewFromFile(imgFile, memory: false, access: Enums.Access.Random);
NetVips.Image gauss = image.Gaussblur(15);
i2.Pngsave(imgPath+"gauss.png");

图片

增强绿色通道,锐化图像

var image = Image.NewFromFile(imgFile, access: Enums.Access.Sequential);
var multiply = image * new[] { 1, 2, 1 };
using var mask = Image.NewFromArray(new[,]
{
    {-1, -1, -1},
    {-1, 16, -1},
    {-1, -1, -1}
}, scale: 8);
var convolve = multiply.Conv(mask, precision: Enums.Precision.Integer);
convolve.Pngsave(imgPath + "convole.png");

图片

Mosaic

var i1 = Image.NewFromFile("E:\\project\\TestProject\\ConsoleApp\\ConsoleApp\\d.png");
var i2 = i.CMC2LCh();
i2 = i.Mosaic(i2, Enums.Direction.Horizontal, 0, 0, 10, 10);
i2.Pngsave("E:\\project\\TestProject\\ConsoleApp\\ConsoleApp\\Mosaic.png");

图片

GitHub:https://github.com/libvips/libvips

官网:https://www.libvips.org/

相关文章:

  • Windows使用内存映射文件
  • 基于Matlab使用激光雷达检测分类跟踪车辆仿真(附源码)
  • 火狐浏览器 优化教程
  • 计算机的发展史,让你想到了什么?
  • 记一次SQL注入的收获
  • 大数据必学Java基础(八十):网络编程的深入了解
  • 建议收藏丨你想了解的动捕内容全在这儿!
  • 基于蚂蚁-遗传优化算法的路径规划问题(Matlab代码实现)
  • 【数据结构】-----二叉树(递归、层次实现二叉树的遍历)
  • Spring MVC 请求处理过程。你这样回答保证通过面试!
  • 两台电脑mysql数据迁移,各版本mysql迁移(亲测)
  • MD5退出历史舞台你知道吗?
  • 使用nw.js将web项目打包为exe软件(xp版本)
  • 我,在日本开密室逃脱,钱还没赚,人进“橘子”了……
  • “池化技术” - 深度剖释底层内存管理细节,明晰“池化技术”内存管理技术
  • 0基础学习移动端适配
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • extract-text-webpack-plugin用法
  • idea + plantuml 画流程图
  • 初探 Vue 生命周期和钩子函数
  • 目录与文件属性:编写ls
  • 三分钟教你同步 Visual Studio Code 设置
  • 06-01 点餐小程序前台界面搭建
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • "无招胜有招"nbsp;史上最全的互…
  • #java学习笔记(面向对象)----(未完结)
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (6)设计一个TimeMap
  • (Charles)如何抓取手机http的报文
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Git) gitignore基础使用
  • (十一)图像的罗伯特梯度锐化
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转) ns2/nam与nam实现相关的文件
  • (转)scrum常见工具列表
  • (转)shell中括号的特殊用法 linux if多条件判断
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .NET Core 成都线下面基会拉开序幕
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net MySql
  • .NET 药厂业务系统 CPU爆高分析
  • .net经典笔试题
  • .Net中的集合
  • /3GB和/USERVA开关
  • @Autowired和@Resource装配
  • @Bean有哪些属性
  • @JsonFormat 和 @DateTimeFormat 的区别
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • [C++][opencv]基于opencv实现photoshop算法可选颜色调整
  • [C++][数据结构][算法]单链式结构的深拷贝
  • [dfs] 图案计数