OpenCV是计算机视觉领域最流行的库之一。它最初是用 C 和 C++ 编写的。现在也可以在 Python 中使用。它最初是由英特尔开发的。该库是一个跨平台的开源库。免费使用。OpenCV 库是一个高度优化的库,其主要重点是实时应用程序。
OpenCV 库是2500多个优化算法的组合。它可以用来检测和识别不同的人脸,在图像中或实时识别物体,使用视频和网络摄像头分类不同的人类行为,跟踪摄像机的运动,跟踪像汽车、人类等移动物体。
实时计数物体,将图像拼接在一起产生高分辨率图像,从图像数据库中找到类似的图像,从使用闪光灯拍摄的图像中去除红眼,提高图像质量,跟踪眼球运动,跟踪人脸等
它拥有大约4.7万活跃用户社区,估计下载量超过1800万次。许多大公司,如谷歌,亚马逊,特斯拉,微软,本田等使用OpenCV,使他们的产品更好,更智能。
先决条件
在开始编写代码之前,我们需要在我们的设备上安装 OpenCV 。如果你是专业的编程人员并且知道每一个 IDE,那么去 Pycharm 并且在设置中从它的包管理器中安装 OpenCV-python。
如果您是初学者或中级程序员,或者只是想关注该博客,那么我们将使用代码编辑器而不是IDE。只需转到Visual Studio Code网站并根据您的操作系统下载最新版本即可。现在,我们将创建一个虚拟环境,在其中将安装 OpenCV。打开终端,然后使用cd定位到桌面。使用名为opencv的mkdir创建一个文件夹然后在以下命令中运行。
python -m venv env
现在使用 env\\scripts\\activate 命令激活环境,你会看到在 C:\\Users\\username\\Desktop\\opencv 前出现一个带小括号的 (env)。现在只需使用 pip 安装 OpenCV。
pip install opencv-python
我们将在这个博客中涵盖7个主题:
- 读、写和展示一个图像
- 读取视频与集成网络摄像头
- 缩放和裁剪图像
- 使用函数的基本图像滤波器
- 绘制不同的形状
- 在图像上写文字
- 检测和裁剪人脸
读、写和展示一个图像
为了使用 OpenCV 读取图像,我们使用函数 imread() ,为了显示图像,我们使用函数 imshow() ,为了写入图像,我们使用函数 imwrite()。让我们看看每一个的语法。
imread():
img = cv2.imread("PATH_TO_IMAGE.jpg/png")
Example
img = imread("images/dog0.jpg")
imshow():
cv2.imshow("WINDOW NAME",IMG_VAR)
Example
imshow("Dog Image",img)
imwrite():
cv2.imwrite(FILENAME, IMAGE)
filename: A string representing the file name. The filename must include image format like .jpg, .png, etc.
image: It is the image that is to be saved.
Example
cv2.imwrite('images/img',img)
读取视频与集成网络摄像头
读取视频文件与读取 OpenCV 中的图像文件非常相似。不同之处在于我们使用 cv2.videocapture()
语法
video = cv2.VideoCapture("FILEPATH.mp4")
Example
video = cv2.VideoCapture("video/dog/dog.mp4")
视频是许多帧图像在一起的集合,每一帧都是一个图像。要使用 OpenCV 观看视频,我们只需要使用 while 循环显示视频的每一帧。
while True:
success , img = cap.read()
cv2.imshow("Video",img)
if cv2.waitKey(1) & 0xff==ord('q'):##key 'q' will break the loop
break
为了与网络摄像头集成,我们需要传递网络摄像头的端口值,而不是路径到视频。如果你使用的是笔记本电脑,没有连接任何外部摄像头,那么简单地传递0,如果你连接了任何外部摄像头,那么传递一个摄像头端口值。
cap = cv2.VideoCapture(0)
cap.set(3,640) ## Frame width
cap.set(4,480) ## Frame Height
cap.set(10,100) ## Brightness
while True:
success, img = cap.read()
cv2.imshow("Video",img)
if cv2.waitKey(1) & 0xff == ord('q'):
break
-
C++
+关注
关注
22文章
2104浏览量
73480 -
计算机视觉
+关注
关注
8文章
1696浏览量
45923 -
OpenCV
+关注
关注
29文章
626浏览量
41247
发布评论请先 登录
相关推荐
评论