嘿编码员!我确信您已经实现了多个图像处理库。但你知道蟒蛇的口袋里总是藏着一些诡计吗?!它还有另一个计算机视觉和图像处理库,称为 Mahotas
.
该库是在 中实现的 C++ and operates on NumPy arrays
,这使得它更快。目前,它包含 around 100
计算机视觉和图像处理功能。
在本教程中,我们将从使用 Mahotas 库进行一些简单的图像操作开始。在继续之前,我们将首先使用命令安装库 pip
。可以使用如下所示的命令完成相同的操作。
pip install mahotas |
安装库后,我们将继续将库导入到程序中。我们将导入 pylab
与图像显示相关的功能。
1
2
|
import mahotas from pylab import imshow, show |
您可以使用任何图像进行图像处理。在本教程中,我们将使用来自互联网的随机图像。我们将使用 mahotas.imread
加载图像和 imshow
显示图像的函数。
1
2
3
|
img = mahotas.imread( 'sample.jpg' ) imshow(img) show() |
它 mean of an image
有多种用途,包括图像处理中的降噪。Mahotas 能够计算图像的平均值,但一次仅限于一个通道,因为我们的图像是彩色的,我们会将其减少为一次一个通道。
1
2
3
4
5
6
7
8
9
|
img0 = img[:,:, 0 ] img1 = img[:,:, 1 ] img2 = img[:,:, 2 ] mean0 = img0.mean() mean1 = img1.mean() mean2 = img2.mean() print ( "Mean Value for the channel 1 is " , mean0) print ( "Mean Value for the channel 2 is " , mean1) print ( "Mean Value for the channel 3 is " , mean2) |
我使用的图像共有 3 个通道。所以我分别计算 3 个通道的 3 个平均值。
Mean Value for the channel 1 is 195.63318904447684 Mean Value for the channel 2 is 172.86992779952305 Mean Value for the channel 3 is 172.8701535539508 |
使用该库,我们还可以使用下面的代码片段裁剪图像。您可以将起始像素和结束像素指定为所需的任何像素值。
我将首先尝试使灯泡和手处于焦点位置,其位于 x 轴上的 1000 和 3000 像素值之间。
1
2
3
|
img2 = img[:, 1000 : 3000 ] imshow(img2) show() |
我们不要尝试通过沿 y 轴裁剪来进一步裁剪图像,以仅聚焦在灯泡上。看下面的代码片段。我们像以前一样从完整图像图中的 x 轴和 y 轴选择了值。
1
2
3
|
img2 = img[ 1000 : 2500 , 1300 : 2300 ] imshow(img2) show() |
roundness
是图像中的对象与形成完美圆形的相似/接近程度的度量。让我们看一下同一图像的两个不同值,一个用于完整图像,另一个用于带有灯泡聚焦的图像。价值观的差异非常明显。
1
2
3
4
5
|
img1 = img[::, 1 ] r1 = mahotas.features.roundness(img1) r2 = mahotas.features.roundness(img2) print ( "Roundness of the full image : " , r1) print ( "Roundness of the bulb focused image : " , r2) |
代码的输出如下:
Roundness of the full image : 0.0 Roundness of the bulb focused image : 0.0009273648133338048 |
图像的 是 图像中local maxima
被识别为 的区域 。local peaks
可以使用以下代码行显示它们。
1
2
3
4
|
img2 = img. max ( 1 ) lmaxim = mahotas.locmax(img) imshow(lmaxim) show() |
我们可以借助 Overlay image
下面的代码片段中的类似内容获得图像的灰度版本。
1
2
3
4
|
img = img[:, :, ] ol = mahotas.overlay(img) imshow(ol) show() |
结论
在本教程中,我们了解并学习了开发人员如何借助一些基本功能来使用 mahotas 进行图像处理。库中还有更多可用的函数。请继续关注更多!