计算机视觉是机器学习领域中最引人入胜的应用之一。顾名思义,计算机视觉赋予计算机在三维空间中检测、识别和识别对象和模式的能力。如果尚未阅读之前关于计算机视觉的文章,请点击以下链接查看:
文章1:。
文章2:。
本文将向介绍OpenCV库的更多特性。
在进一步探索OpenCV的世界之前,让花一点时间回顾或复习已经学到的内容。已经对机器学习有了简短的、一般性的了解,被介绍到了OpenCV库,并且知道OpenCV实现是在Python编程语言中进行的。已经将图像加载到系统内存中,并观察了两种不同颜色格式的图像,即标准(默认)和灰度。理解OpenCV表示图像的基本方式,即包含代表像素强度的整数的NumPy数组。到目前为止,只看了灰度图像。
查看了一些重要的图像数组属性,如内容、形状和数据类型。
已经了解了如何将图像加载到系统主内存中。现在将查看可以对图像数据执行的更复杂操作。为了促进这次OpenCV学习体验,将使用可以从以下链接下载的图像。或者,可以保存下面找到的图像。
来源:Pinterest。
首要步骤是将图像加载到系统内存中,如下所示:
import cv2
# 以灰度模式加载图像...
image = cv2.imread("""C:/Users/Shivek/Pictures/cd0c13629f217c1ab72c61d0664b3f99.jpg""", 0)
cv2.imshow('Analytics Vidhya Computer Vision- Nature.png Gray', image)
cv2.waitKey()
cv2.destroyAllWindows()
请注意:将C:/Users/Shivek/Pictures/cd0c13629f217c1ab72c61d0664b3f99.jpg替换为个人计算机上存储图像的位置(文件路径)。
上述代码成功地将所需图像加载到系统内存中。知道已经以灰度颜色格式加载了图像。
让通过查看相关属性来深入了解图像。现在将讨论图像的形状。
print(image.shape)
输出如下:
注意shape方法返回两个值给,以元组的形式。这两个值分别代表图像的高度(y轴)和宽度(x轴)。本质上说的是:
print("The Image Height Is: %d Pixels"%(image.shape[0]))
print("The Image Width Is: %d Pixels"%(image.shape[1]))
上述代码的输出如下:
在某些情况下,shape方法返回一个包含三个整数值的元组。第一个值代表高度(y轴),第二个值代表宽度(x轴),第三个值代表颜色通道的数量。颜色通道影响像素的颜色范围(即类型/色调的颜色|红色、蓝色、粉红色等)。
例如,为了示例和体验目的,让重新加载自然图像,并查看形状属性-然而,在这次特定的情况下,以标准颜色格式加载图像。
import cv2
# 以颜色模式重新加载...
image = cv2.imread("C:/Users/Shivek/Pictures/cd0c13629f217c1ab72c61d0664b3f99.jpg", cv2.IMREAD_COLOR)
cv2.imshow('Analytics Vidhya Computer Vision- Nature.png Color', image)
cv2.waitKey()
cv2.destroyAllWindows()
请注意:将代码中的文件路径替换为个人计算机上图像的绝对位置。
颜色图像将如下所示:
颜色图像如下载时一样-即,它没有以任何方式被操纵。现在让继续使用shape方法处理这个图像。
print(image.shape)
print("Image Height: %d Pixels"%(image.shape[0]))
print("Image Width: %d Pixels"%(image.shape[1]))
print("Number Of Color Channels: %d "%(image.shape[2]))
上述代码的输出将如下所示:
注意元组中有一个第三个数字。这是图像中存在的颜色通道数量。这种特定图像中存在的颜色通道是BGR颜色通道。它是BGR,不是RGB。
默认情况下,OpenCV是为了使用BGR颜色通道而创建的。因为图像是标准颜色的,所以看图像可以看到几种混合和色调的颜色。这是因为有三个颜色通道-每个像素数组的元素有三个值,范围从0到255,每个值代表BGR(蓝色、绿色、红色)在该特定像素的强度,因此允许颜色混合和操纵。将在未来的文章中更多地关注彩色图像。
回到灰度图像,现在将尝试调整图像大小,使其在计算机屏幕上占据更小的面积。要调整图像大小,需要使用OpenCV库提供的resize()方法。
import cv2
# 以灰度格式加载图像
image = cv2.imread("C:/Users/Shivek/Pictures/cd0c13629f217c1ab72c61d0664b3f99.jpg", cv2.IMREAD_GRAYSCALE)
cv2.imshow('Analytics Vidhya Computer Vision- Nature Standard Image', image)
cv2.waitKey()
cv2.destroyAllWindows()
# 将图像调整为350x350像素尺寸
resized_image = cv2.resize(image, dsize=(350, 350))
cv2.imshow('Analytics Vidhya Computer Vision- Nature Resized (350, 350)', resized_image)
cv2.waitKey()
cv2.destroyAllWindows()
第二块代码的解释:
resized_image = cv2.resize(src=image, dsize=(350, 350))
使用resize()方法来调整手头的图像大小-这意味着增加大小或减小它。选择减小图像大小,即使其更小。此方法需要指定高度和宽度的像素尺寸,图像将在这两个尺寸之间调整大小。值需要以不可变的元组传递。指定了350像素的高度和宽度。
cv2.imshow('Analytics Vidhya Computer Vision- Nature Resized (350, 350)', resized_image)
cv2.waitKey()
cv2.destroyAllWindows()
到目前为止,应该熟悉上述三行代码的作用-它将显示窗口,等待一段时间,并在用户命令后终止所有窗口。
最后的任务是验证图像大小是否已经减小。