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

今天给推荐一个可以媲美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");

源码地址

私信回复:1045

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章