计算机视觉是一种理解图像和视频存储方式以及从中提取信息的方法。人工智能领域在很大程度上依赖于计算机视觉技术,例如自动驾驶汽车、机器人技术和图片编辑应用等。人类视觉与计算机视觉有相似之处,人类视觉通过各种生活经验学习,以区分物体和解释物体之间的距离,估计相对位置。计算机视觉通过摄像头、数据和算法训练机器在更短的时间内完成这些任务。计算机视觉允许计算机和系统从数字图像和视频输入中提取有用的数据。
OpenCV是深度学习中非常重要的一个方面,它是一个开源库(包),专门用于计算机视觉、机器学习和图像处理应用,仅在CPU上运行。它支持多种编程语言,包括Python。可以通过简单的命令安装和导入:
pip install opencv-python
Python中的包是包含预写程序的模块集合。这些包允许单独或整体导入模块。导入包就像调用“cv2”模块一样简单:
import cv2 as cv
数字图像包括彩色照片、灰度照片、二值照片和多光谱照片。在彩色图像中,每个像素包含其颜色信息。二值图像只有两种颜色,通常是黑色和白色像素,灰度图像只有灰色阴影作为其唯一的颜色。多光谱图像收集特定波长内的电磁谱图像数据。
要读取图像,使用cv2包中的“imread”方法,其中第一个参数是图像的路径,包括文件名和扩展名,第二个参数是标志,决定如何读取图像。
img = cv2.imread("pythonlogo.png", cv2.IMREAD_COLOR)
通过更改图像的绝对路径,可以测试从本地计算机或甚至互联网读取它!如果图像已经在当前的工作目录中,只需要指定图片名称和扩展名类型。将第二个参数设置为0以灰度图像读取,-1以未修改的方式读取(如果存在,则读取图像作为alpha或透明度通道),1以彩色图像读取。
要发现图像的类型,使用“dtype”技术。这种方法使能够理解视觉数据的表示和像素值。除了图像类型,它还是具有相似形状和大小的事物的多维容器。
print("The data type of the image is", image.dtype)
输出将是:
The data type of the image is uint8
uint8表示每个像素值是一个8位的无符号整数。这种数据类型范围在0到255之间。
图像分辨率定义为图像中的像素数量。随着像素数量的增加,图像质量提高。正如之前看到的,图像的形状决定了行数和列数。图像中的像素值:320 x 240像素(最适合小屏幕设备),1024 x 768像素(适合在标准计算机显示器上查看),720 x 576像素(适合在标准清晰度电视上查看,具有4:3的纵横比),1280 x 720像素(适合在宽屏显示器上查看),1280 x 1024像素(适合在全屏显示器上查看)。
图像可以被视为一系列小样本的集合。这些样本的单位是像素。为了更好地理解图像,尝试尽可能放大图片。相同的可以被分成几个不同的正方形。这些是像素,当它们组合在一起时,就形成了图像。
让看看如何使图像出现在窗口中。需要创建一个图形用户界面(GUI)窗口来在屏幕上显示图像。标题是GUI窗口的第一个参数,必须是字符串格式。使用cv2.imshow()方法可以在弹出窗口中显示图像。但是,如果尝试关闭它,可能会卡在它的窗口中。可以使用“waitKey”方法来缓解这个问题。
cv2.imshow("The Logo", img)
“waitKey”参数设置为‘0’以保持窗口打开,直到关闭它。(可以指定时间以毫秒为单位代替0,表示应该打开多长时间。)
cv2.waitKey(0)
要移除/删除从屏幕上创建的GUI窗口和内存:
cv2.destroyAllWindows()
检查输入图像的属性:
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = plt.imread("my pic.jpg")
plt.imshow(img)
print(img.shape)
print(img.size)
print(img.dtype)
输出将是:
(1921, 1921, 3)
11070723
uint8
输入图像:
import matplotlib.pyplot as plt
import cv2
import numpy as np
image = cv2.imread("baby yoda.jpg")
img2 = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
输入图像:
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = plt.imread("baby yoda.jpg")
kernel = np.ones((5,5), np.uint8)
img_erosion = cv2.erode(img, kernel, iterations=1)
img_dilation = cv2.dilate(img, kernel, iterations=1)
plt.imshow(img)
plt.imshow(img_erosion)
plt.imshow(img_dilation)
OpenCV基础在深度学习中的概念应用于面部识别。例如,在购物中心统计人数(人流量),在高速公路上统计汽车数量及其速度,交互式艺术装置,生产过程中检测异常(缺陷产品),从街景拼接图像,街景图像拼接,视频/图像搜索和检索,机器人和自动驾驶汽车的导航和控制,物体识别,医学图像分析,电影 - 从运动中获取3D结构。
I/O,图像和视频的处理和显示,对象和特征的检测,基于几何的计算机视觉,计算机辅助摄影。
在本文中,介绍了OpenCV库的基础知识及其在实时场景中的应用。还涵盖了其他关键术语和领域,其中OpenCV在深度学习中被部署(计算机视觉)以及实现Python代码以使用OpenCV库执行一些基本图像操作(膨胀、腐蚀和更改图像颜色)。除此之外,OpenCV基础在深度学习也将在各个行业中找到应用。
Q1.OpenCV是什么,它的主要应用是什么? A. OpenCV代表开源计算机视觉。它是一个庞大的开源库,用于计算机视觉、机器学习和图像处理等领域。其应用包括物体检测、面部识别、医学图像分析等。