没有服务器怎么先做网站,2016企业网站建设方案,自己创造网站,建设一个商城网站的成本文章目录 前言 1、OpenCV 2、Scikit-Image 3、Scipy 4、Python Image Library#xff08;Pillow / PIL#xff09; 5、Matplotlib 6、SimpleITK 7、Numpy 8、Mahotas 前言
正如IDC所指出的#xff0c;数字信息将飙升至175ZB#xff0c;而这些信息中的巨大一部分是图片。数…文章目录 前言 1、OpenCV 2、Scikit-Image 3、Scipy 4、Python Image LibraryPillow / PIL 5、Matplotlib 6、SimpleITK 7、Numpy 8、Mahotas 前言
正如IDC所指出的数字信息将飙升至175ZB而这些信息中的巨大一部分是图片。数据科学家需要预先测量这些图像然后再将它们放入人工智能和深度学习模型中。在愉快的部分开始之前他们需要做重要的工作。
为了快速地处理大量信息科学家需要利用图像准备工具来完成人工智能和深度学习任务。
在本文中将深入研究Python中最有用的图像处理库这些库正在人工智能和深度学习任务中得到大力利用。 1、OpenCV
OpenCV是最著名和应用最广泛的开源库之一用于图像处理、目标检测、图像分割、人脸识别等计算机视觉任务。除此之外它还可以用于机器学习任务。
这是英特尔在2022年开发的。它是用C编写的但是开发人员已经提供了Python和java绑定。它易于阅读和使用。
为了建立计算机视觉和机器学习模型OpenCV有超过2500种算法。这些算法对于执行各种任务非常有用例如人脸识别、目标检测等。让我们看一些可以使用OpenCV执行的示例 1灰度缩放
灰度缩放是一种将3通道图像如RGB、HSV等转换为单通道图像即灰度的方法。最终的图像在全白和全黑之间变化。灰度缩放的重要性包括降维将3通道图像转换为单通道图像、降低模型复杂度等。
下面的代码片段展示了OpenCV中的灰度缩放
import cv2 as cv
img cv.imread(example.jpg)
cv.imshow(Original, img)
cv.waitKey()
#Use cvtColor, to convert to grayscale
gray_img cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow(Grayscale, gray_img)
cv.waitKey(0) 2旋转图像
OpenCV有助于使用从0到360度的任意角度旋转图像。
检查以下代码将图像旋转180度
import matplotlib.pyplot as plt
img cv.imread(example.jpg)
h, w image.shape[:2]
rot_matrix cv.getRotationMatrix2D((w/2,h/2), -180, 0.5)
rot_image cv.warpAffine(img, rot_matrix, (w, h))
plt.imshow(cv.cvtColor(rot_image, cv.COLOR_BGR2RGB)) OpenCV还提供了除我们到目前为止讨论的功能之外的其他功能。除此之外它还有助于人脸检测、图像分割、特征提取、目标检测和三维重建等。
有关更多信息请查看官方文档https://opencv.org/
2、Scikit-Image
Scikit-Image 是另一个伟大的开源图像处理库。它几乎适用于任何计算机视觉任务。它是最简单、最直接的库之一。这个库的某些部分是有Cython编写的它是Python编程语言的超集旨在使python比C语言要快。
它提供了大量的算法包括分割、颜色空间操作、几何变换、滤波、形态学、特征检测等。
Scikit-Image使用Numpy数组作为图像对象。让我们看看如何在scikit图像中执行活动轮廓操作。活动轮廓描述图像中形状的边界。 查看以下活动轮廓操作代码
import numpy as np
import matplotlib.pyplot as plt
from skimage.color import rgb2gray
from skimage import data
from skimage.filters import gaussian
from skimage.segmentation import active_contour
image data.astronaut()
# Data for circular boundary
s np.linspace(0, 2*np.pi, 400)
x 220 100*np.cos(s)
y 100 100*np.sin(s)
init np.array([x, y]).T
# formation of the active contour
centre active_contour(gaussian(image, 3),init, alpha0.015, beta10, gamma0.001)
figure, axis plt.subplots(1, 2, figsize(7, 7))
ax[0].imshow(image, cmapplt.cm.gray)
ax[0].set_title(Original Image)
ax[1].imshow(image, cmapplt.cm.gray) 有关更多信息请查看官方文档https://scikit-image.org/docs/stable/auto_examples/
3、Scipy
Scipy 主要用于数据和科学计算但有时也可以使用子模块Scipy.ndimage用于基本的图像操作和处理任务。
归根结底图像只是多维数组Scipy提供了一组用于操作n维Numpy操作的函数。Scipy提供了一些基本的图像处理操作如人脸检测、卷积、图像分割、读取图像、特征提取等。
除此之外还可以执行过滤在图像上绘制轮廓线。 请查看以下代码使用Scipy模糊图像
from scipy import ndimage, misc
from matplotlib import pyplot as plt
f misc.face()
b_face ndimage.gaussian_filter(f, sigma3)
figure, axis plt.subplots(1, 2, figsize(16, 8)) 有关更多信息请查看官方文档https://docs.scipy.org/doc/scipy/reference/ndimage.html
4、Python Image LibraryPillow / PIL
它是一个用于图像处理任务的开放源码python库。它提供了其他库通常不提供的特殊功能如过滤、打开操作和保存图像。这个库支持多种文件格式这使它更高效。PIL还支持图像处理、图像显示和图像存档等功能。让我们看看使用Pillow / PIL的图像增强。 更改图像的清晰度 有关更多信息请查看官方文档https://pillow.readthedocs.io/en/stable/index.html
5、Matplotlib
Matplotlib 主要用于二维可视化如散点图、条形图、直方图等但我们也可以将其用于图像处理。从图像中提取信息是有效的。它不支持所有的文件格式。 背景颜色更改操作后请查看以下图像 有关更多信息请查看官方文档https://matplotlib.org/stable/tutorials/introductory/images.html
6、SimpleITK
它也称为图像分割和注册工具包。它是一个用于图像注册和图像分割的开源库。像OpenCV这样的库将图像视为一个数组但是这个库将图像视为空间中某个区域上的一组点。 有关更多信息请查看官方文档https://itk.org/
7、Numpy
它是一个用于数值分析的开放源码python库。它包含一个矩阵和多维数组作为数据结构。但是NumPy也可以用于图像处理任务例如图像裁剪、操作像素和像素值的蒙版。 检查下图以从图像中提取绿色/红色/蓝色通道 有关更多信息请查看官方文档http://https://scikit-image.org/docs/dev/user_guide/numpy_images.html
8、Mahotas
它是另一个用于计算机视觉和图像处理的开放源码python库。它是为生物信息学而设计的。它提供了很多算法这些算法是用C编写的速度很快使用了一个好的Python接口。它以NumPy数组读取和写入图像。
使用Mahotas检查下面的模板匹配图像 有关更多信息请查看官方文档 参考小白学视觉