10 个图像处理的Python库!
1、PIL/PillowPillow是一个通用且用户友好的Python库提供了丰富的函数集和对各种图像格式的支持使其成为开发人员在其项目中处理图像的必要工具。它支持打开、操作和保存许多不同的图像文件格式用户还可以对图像执行基本操作如裁剪、调整大小、旋转和更改图像颜色。Pillow还可以让你在图像上添加文字和形状提供一种简单的方式来注释你的视觉效果。这个库也是torchvison使用的图像处理库它功能强大并且使用很简单推荐使用。2、OpenCV (Open Source Computer Vision Library)OpenCV无疑是最流行的图像处理库之一。它最初由英特尔公司开发已被广泛应用于计算机视觉领域。它支持无数与计算机视觉和机器学习相关的算法这有助于理解视觉数据并做出有见地的决策。OpenCV还针对实时应用进行了高度优化使其成为视频监控自动驾驶汽车和先进机器人的绝佳选择。OpenCV 功能最多并且在处理速度方面要比Pillow快所以在对于速度有要求的情况下推荐使用它。另外一点就是OpenCV 读取的通道是BGR 而其他的库都是RGB 的所以如果混用的话需要转换还记得这个代码吧 cv2.cvtColor(image, cv2.COLOR_BGR2RGB)3、MahotasMahotas包括一组用于图像处理和计算机视觉的函数这些函数主要是在高性能的c中完成的并且使用多线程使其速度非常快。它还包括各种形态操作如侵蚀扩张和连接成分分析。这些操作是图像二值化、去噪和形状分析等任务的基础。这些功能OpenCV 都有但是Mahotas更专注于图像的图像处理而并不像OpenCV那样什么都有所以Mahotas的API更简单、也更友好。并且学习起来也比OpenCV简单但是速度方面却差不多。例子这是一个简单的示例使用 mahotas 附带的示例文件使用上述阈值区域作为种子调用分水岭我们使用 Otsu 定义阈值。# import using mh abbreviation which is common:import mahotas as mh# 强烈建议关注公众号数据STUDIO 更多好文定时推送# Load one of the demo imagesim mh.demos.load(nuclear)# Automatically compute a thresholdT_otsu mh.thresholding.otsu(im)# Label the thresholded image (thresholding is done with numpy operationsseeds,nr_regions mh.label(im T_otsu)# Call seeded watershed to expand the thresholdlabeled mh.cwatershed(im.max() - im, seeds)这是一个非常简单的使用示例mahotas.distance计算距离图import pylab as pimport numpy as npimport mahotas as mhf np.ones((256,256), bool)f[200:,240:] Falsef[128:144,32:48] False# f is basically True with the exception of two islands: one in the lower-right# corner, another, middle-leftdmap mh.distance(f)p.imshow(dmap)p.show()4、Scikit-ImageScikit-Image建立在Scikit-Learn机器学习库的基础上的扩展功能包括更高级的图像处理能力。所以如果已经在使用Scikit进行ML那么可以考虑使用这个库。它提供了一套完整的图像处理算法。它支持图像分割、几何变换、色彩空间操作和过滤。与许多其他库不同Scikit-Image支持多维图像这对于涉及视频或医学成像的任务是很有帮助的。Scikit-Image与其他Python科学库(如NumPy和SciPy)无缝集成。from skimage import data, io, filtersimage data.coins()# ... or any other NumPy array!edges filters.sobel(image)io.imshow(edges)io.show()5、TensorFlow ImageTensorFlow Image是TensorFlow的一个模块它支持图像解码、编码、裁剪、调整大小和转换。还可以利用TensorFlow的GPU支持为更大的数据集提供更快的图像处理。也就是说如果你使用TF那么可以使用它来作为训练Pipline的一部分。使用 Keras 效用函数加载数据tf.keras.utils.image_dataset_from_directory 效用函数从磁盘加载图像。创建数据集为加载器定义一些参数batch_size 32img_height 180img_width 180开发模型时最好使用验证拆分。您将使用 80% 的图像进行训练20% 的图像进行验证。train_ds tf.keras.utils.image_dataset_from_directory(data_dir,validation_split0.2,subsettraining,seed123,image_size(img_height, img_width),batch_sizebatch_size)6、PyTorch Vision与TensorFlow Image类似PyTorch Vision是PyTorch生态系统的一部分主要用于与图像处理相关的机器学习任务。import torchvisionvideo_path path to a test videoreader torchvision.io.VideoReader(video_path, video)reader_md reader.get_metadata()print(reader_md[video][fps])video.set_current_stream(video:0)7、SimpleCVSimpleCV建立在OpenCV、PILPython Imaging Library和NumPy之上为用户提供了一组简单而强大的函数和工具用于加载、处理和分析图像。SimpleCV的设计目标是使计算机视觉技术对于初学者和非专业人士也能更加可靠和易于使用。它提供了一个简单的API隐藏了底层的复杂性使用户能够快速实现常见的计算机视觉任务。但是目前官方维护也较少所以这个项目很有可能会夭折。import SimpleCVcamera SimpleCV.Camera()image camera.getImage()image.show()8、ImageioImageio是一个用于读取和写入多种图像格式的Python库。它提供了一个简单而强大的API使用户能够轻松地处理图像和视频数据。Imageio提供了一个通用的数据模型使用户能够以多种方式存储图像数据。它可以使用NumPy数组、PIL图像对象或简单的Python字节字符串来表示图像数据。并且它提供了逐帧读取和写入视频文件的功能这对于处理视频流或从视频中提取帧非常有用。import imageio.v3 as iioim iio.imread(imageio:chelsea.png) # read a standard imageim.shape # im is a NumPy array of shape (300, 451, 3)iio.imwrite(chelsea.jpg, im) # convert to jpg9、albumentationsAlbumentations是一个用于图像增强和数据增强的Python库。它专注于在机器学习和计算机视觉任务中提供高效、灵活和易于使用的数据增强方法。我一直把这个库当成torchvision的替代因为它不仅有很多数据增强方法还能够直接处理掩码bbox的增强。import albumentations as Aimport cv2# Declare an augmentation pipelinetransform A.Compose([A.RandomCrop(width256, height256),A.HorizontalFlip(p0.5),A.RandomBrightnessContrast(p0.2),])# Read an image with OpenCV and convert it to the RGB colorspaceimage cv2.imread(image.jpg)image cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# Augment an imagetransformed transform(imageimage)transformed_image transformed[image]10、timmtimm是一个PyTorch模型库虽然可能和图像处理没有关系但是它提供了广泛的预训练模型和计算机视觉模型的集合这对我们来进行深度学习的时候是非常有帮助的。现在它已经是huggingface的子项目了这意味着这个项目有了资金的支持所以不会担心发展的问题。import timmimport torchmodel timm.create_model(resnet34)x torch.randn(1, 3, 224, 224)model(x).shape总结无论你是刚开始基本的图像处理还是探索高级机器学习模型这些库都为广泛的图像处理任务提供了必要的工具。

相关新闻

GLM-5:当代码理解不再依赖“大模型暴力”,而走向知识图谱的静默革命

GLM-5:当代码理解不再依赖“大模型暴力”,而走向知识图谱的静默革命

👋 Hi,我热衷于 (AI 大模型应用落地、Python 实战进阶与 AI 开发工具链)。代表专栏:《AI大模型应知应会短平快系列100篇》《解密OpenClaw》《解码意识NCTransformer》《WeClaw Agent实战》> 💡 创业路上&#xff0c…

2026/10/15 0:08:24 阅读更多 →
Unity Tilemap+Shader+分层数据架构打造高性能SLG大地图

Unity Tilemap+Shader+分层数据架构打造高性能SLG大地图

1. 项目概述:当SLG遇上大地图,一场技术与艺术的硬仗做SLG(Simulation Game,模拟策略游戏)的兄弟们都懂,大地图是项目的灵魂,也是开发中最硬的骨头之一。它不像一个简单的UI界面或者一个角色模型…

2026/10/14 17:24:30 阅读更多 →
思科模拟器Packet Tracer 6.2安装与配置全指南

思科模拟器Packet Tracer 6.2安装与配置全指南

1. 项目概述:为什么你需要思科模拟器? 如果你正在学习网络技术,或者准备考取思科认证(比如CCNA),那么“思科模拟器”(Cisco Packet Tracer)这个名字你一定不陌生。它就像是网络工程师…

2026/10/14 14:13:36 阅读更多 →

最新新闻

064、广播数据长度超出承载上限时的分包处理

064、广播数据长度超出承载上限时的分包处理

现场:一条永远发不出去的广播 几年前做一个分布式采集系统,主控通过广播通道向所有节点下发同步命令和参数。协议栈的单帧净荷上限是 31 字节,这是链路层硬约束,改不了。前期功能很简单,同步命令就几个字节&#xff0c…

2026/10/15 0:08:01 阅读更多 →
063、广播间隔与扫描窗口错配导致的设备不可见

063、广播间隔与扫描窗口错配导致的设备不可见

一个做资产追踪标签的团队遇到过这样一件事。标签固件烧录完毕,功耗测试过了,广播内容用嗅探工具抓包也正常,RSSI 在预期范围内。但配套的接收端在实验室里就是扫不到这批标签。换一台接收端,能扫到。再换回来,又扫不到…

2026/10/15 0:08:01 阅读更多 →
062、连接建立瞬间超时断开的原因分类

062、连接建立瞬间超时断开的原因分类

一个半夜被叫起来处理的问题 去年冬天做的一个数据采集项目,现场大概两百多个节点,通过无线链路往中心网关上报数据。上线跑了三天都正常,第四天凌晨两点,值班同事打电话说监控大屏上设备在线数从两百多掉到了三十几个&#xff0c…

2026/10/15 0:08:01 阅读更多 →
061、广播包发出后没有回应时的链路排查思路

061、广播包发出后没有回应时的链路排查思路

上个月帮一个做工业数据采集的团队看问题,他们用一套自研的无线轮询协议,主站每隔两秒向从站发一轮广播包,从站收到后回传采集数据。现场跑了三个月一直正常,突然有一天主站日志里开始出现大量“广播发出后无回应”的告警&#xf…

2026/10/15 0:08:01 阅读更多 →
别再让“虚拟时装毕设”卡在论文上:数字时尚设计人的 AI 工具搭子清单 ✨

别再让“虚拟时装毕设”卡在论文上:数字时尚设计人的 AI 工具搭子清单 ✨

如果你读的是数字时尚设计,大概率会遇到这样一种“分裂”的毕业状态: 一边在用 CLO 3D / Style3D 调版片、缝份、面料垂坠和动态走秀效果;一边还要翻虚拟时尚、数字服装、AIGC、非遗纹样、用户审美评价等一大堆中英文文献;最后还…

2026/10/15 0:08:01 阅读更多 →
二次规划QP实战:从调包到手撕,解决不可行与病态问题

二次规划QP实战:从调包到手撕,解决不可行与病态问题

1. 从“调包”到“手撕”:为什么QP值得你花时间很多做算法落地的朋友,第一次接触二次规划(Quadratic Programming,简称QP)都是在MATLAB的quadprog或者Python的cvxopt.solvers.qp里填几个矩阵就完事了。模型跑通那一刻觉…

2026/10/15 0:07:00 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →