OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它由一系列的C函数和少量C++类构成,同时提供Python、Java和MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
# 导入OpenCV库
import cv2
# 打印OpenCV版本
print(cv2.__version__)
输出:
4.5.2
OpenCV的设计目标是提供一套简单而且可扩展的计算机视觉库,使得它能够方便地在实际的应用、研究、开发中被使用。
OpenCV的起源可以追溯到1999年,当时在英特尔公司由一群热情的研发工程师开始进行开发。2000年,OpenCV以开源的方式发布,旨在推动计算机视觉的发展并帮助更多人应用这一技术。自此之后,OpenCV已经不断发展,增加了大量新的功能,并已成为全球最流行的计算机视觉库之一。
OpenCV具有极广的应用领域,它包括但不限于:
# 例如,以下代码展示了如何使用OpenCV进行图像读取和显示
import cv2
# 读取一张图像
img = cv2.imread('image.jpg')
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
综上,OpenCV凭借其强大的功能、开源的优势以及广泛的应用领域,成为了学者和工业界的重要工具。
OpenCV的安装方式根据不同的操作系统和使用环境有所不同。以下我们将分别介绍在Windows、Linux和Mac OS下的安装方式,以及如何配置Python环境使用OpenCV。
在Windows系统下,推荐使用Python的包管理工具pip来安装OpenCV。你可以在命令行中运行以下命令来安装:
pip install opencv-python
如果你需要使用到OpenCV的额外模块(如xfeatures2d等),可以安装opencv-contrib-python包:
pip install opencv-contrib-python
在Linux系统下,我们同样可以使用pip来安装OpenCV。打开终端,运行以下命令:
pip install opencv-python
同样,如果你需要使用到OpenCV的额外模块,可以安装opencv-contrib-python包:
pip install opencv-contrib-python
在Mac OS下,我们同样可以使用pip来安装OpenCV。打开终端,运行以下命令:
pip install opencv-python
如果你需要使用到OpenCV的额外模块,可以安装opencv-contrib-python包:
pip install opencv-contrib-python
安装完成OpenCV后,我们可以在Python环境中导入cv2模块来使用OpenCV的功能。你可以创建一个新的Python脚本,然后在其中输入以下代码来测试OpenCV是否安装成功:
import cv2
# 打印OpenCV版本
print(cv2.__version__)
如果输出了你所安装的OpenCV版本号,那么恭喜你,你已经成功安装并配置好了OpenCV!
总的来说,无论是在Windows、Linux还是Mac OS系统下,安装和使用OpenCV都是相对简单的。只需要几个简单的命令,就可以开始你的OpenCV之旅了。
在此部分,我们将介绍一些OpenCV的基础知识,包括图像的载入、显示和保存,以及图像的基本操作和色彩空间的转换。
在OpenCV中,我们通常使用imread()
函数来载入一张图像,使用imshow()
函数来显示一张图像,使用imwrite()
函数来保存一张图像。
以下是一个示例:
import cv2
# 载入一张图像
img = cv2.imread('image.jpg')
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 保存图像
cv2.imwrite('new_image.jpg', img)
OpenCV提供了一系列的函数来进行图像的基础操作,包括但不限于:
# 获取和修改像素值
px = img[100,100]
print(px)
# 修改像素值
img[100,100] = [255,255,255]
print(img[100,100])
# 获取图像属性
print(img.shape)
print(img.size)
print(img.dtype)
# 设置ROI
roi = img[100:200, 100:200]
# 拆分和合并图像通道
b,g,r = cv2.split(img)
img = cv2.merge((b,g,r))
OpenCV提供了200+种颜色空间的转换方法,但是我们最常用的还是RGB<->Gray和RGB<->HSV的转换。
我们可以使用cv2.cvtColor()
函数来进行颜色空间的转换,如下例:
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 转换为HSV图像
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
这是OpenCV基础操作的简单介绍,这些操作是我们在进行更高级的图像处理之前需要掌握的基础知识。
在计算机视觉中,图像处理是一个关键的环节,它包括图像阈值化、边缘检测、图像滤波、图像形态学操作和图像二值化等操作。下面我们将一一介绍。
图像阈值化是将图像从灰度转换为二值化图像的过程,OpenCV提供了cv2.threshold()
函数来进行这项操作。
import cv2
import numpy as np
# 载入图像并转为灰度图
img = cv2.imread('image.jpg',0)
# 阈值化处理
ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
# 显示处理结果
cv2.imshow('threshold',thresh1)
cv2.waitKey(0)
cv2.destroyAllWindows()
边缘检测是计算机视觉中的常见任务,它可以用来识别图像中的物体。Canny边缘检测是一种常用的边缘检测算法,OpenCV中可以使用cv2.Canny()
函数来进行Canny边缘检测。
import cv2
import numpy as np
# 载入图像
img = cv2.imread('image.jpg',0)
# 进行Canny边缘检测
edges = cv2.Canny(img,100,200)
# 显示处理结果
cv2.imshow('edges',edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
图像滤波是计算机视觉中常见的图像预处理方法,OpenCV提供了各种滤波函数,如cv2.filter2D()
、cv2.blur()
、cv2.GaussianBlur()
等。
import cv2
import numpy as np
# 载入图像
img = cv2.imread('image.jpg')
# 使用高斯滤波进行图像平滑处理
blur = cv2.GaussianBlur(img,(5,5),0)
# 显示处理结果
cv2.imshow('blur',blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
形态学操作是基于图像形状的一系列操作,包括腐蚀、膨胀、开运算和闭运算等。OpenCV提供了cv2.erode()
、cv2.dilate()
、cv2.morphologyEx()
等函数来进行形态学操作。
import cv2
import numpy as np
# 载入图像
img = cv2.imread('image.jpg',0)
# 创建一个5x5的结构元素
kernel = np.ones((5,5),np.uint8)
# 进行膨胀操作
dilation = cv2.dilate(img,kernel,iterations = 1)
# 显示处理结果
cv2.imshow('dilation',dilation)
cv2.waitKey(0)
cv2.destroyAllWindows()