一个可以媲美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
标签:Image,i2,跨平台,内存,libvips,var,image,NetVips,png From: https://www.cnblogs.com/firespeed/p/18180883官网:https://www.libvips.org/