点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本文旨在让你快速入门opencv。

OpenCV

OpenCV是计算机视觉中最受欢迎的库,最初由intel使用C和C ++进行开发的,现在也可以在python中使用。该库是一个跨平台的开源库,是免费使用的。OpenCV库是一个高度优化的库,主要关注实时应用程序。

OpenCV库是2500多种优化算法的组合,可用于检测和识别不同的人脸,实时识别图像中的对象,使用视频和网络摄像头对不同的人类动作进行分类,跟踪摄像机的运动,跟踪运动对象(例如汽车,人等),实时计数对象,缝合图像来产生高分辨率图像,从图像数据库中查找相似的图像,从使用闪光灯拍摄的图像中消除红眼并提高图像质量,跟踪眼睛的运动,跟踪脸部等。

它拥有大约4.7万活跃用户社区,下载量超过1800万。谷歌,亚马逊,特斯拉,微软,本田等许多大公司都使用Open cv来改善他们的产品,它更是驱动了AI的发展。

先决条件

在开始编写代码之前,我们需要在设备上安装opencv。

如果你是ProIn编程专家,并且熟悉每个IDE,那么请使用Pycharm并从设置中的程序包管理器安装OpenCV-python。

如果你是初学者或中级程序员,或者只是想关注博客,那么我们将使用代码编辑器而不是IDE。

只需转到Visual Studio Code网站并根据你的操作系统下载最新版本即可。

  • https://code.visualstudio.com/download

现在,我们将创建一个虚拟环境,并在其中安装opencv。打开终端,然后使用cd定位到桌面,使用mkdir 创建一个名为opencv的文件夹,然后运行以下命令。

python -m venv env

现在,使用env\scripts\activate激活环境,你会在C:\Users\username\Desktop\opencv之前看到小括号(env)出现。

现在,只需使用pip安装OpenCV。

pip install opencv-python

我们会在本文中涵盖7个主题

1. 读,写和显示图像

2. 读取视频并与网络摄像头集成

3. 调整大小和裁剪图像

4. 基本的图像过滤器使用的函数

5. 绘制不同的形状

6. 在图像上书写文字

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 loopbreak

要与网络摄像头集成,我们需要传递网络摄像头的端口值而不是视频路径。如果你使用的是笔记本电脑,但没有连接任何外部网络摄像头,则只需传递参数0;如果你有外部网络摄像头,则传递参数1。

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

调整大小和裁剪图像

调整大小是更改图像形状的过程。在Opencv中,我们可以使用resize函数调整图像形状的大小。

句法

cv2.resize(IMG,(WIDTH,HEIGHT))
IMG: image which we want to resize
WIDTH: new width of the resize image
HEIGHT: new height of the resize image
Example
cv2.resize(img,(224,224))

要首先调整图像的大小,我们需要知道图像的形状。我们可以使用shape来找到任何图像的形状,然后根据图像形状,可以增加或减小图像的大小。让我们看看示例。

import cv2
img = cv2.imread("images/img0.jpg") ##Choose any image
print(img.shape)
imgResize = cv2.resize(img,(224,224)) ##Decrease size
imgResize2 = cv2.resize(img,(1024,1024)) ##Increase size
cv2.imshow("Image",img)
cv2.imshow("Image Resize",imgResize)
cv2.imshow("Image Increase size",imgResize2)
print(imgResize.shape)
cv2.waitKey(0)

如果你不想对宽度和高度进行硬编码,也可以使用形状,然后使用索引来增加宽度和高度。

import cv2
img = cv2.imread("images/img0.jpg") ##Choose any image
print(img.shape)
shape = img.shape
imgResize = cv2.resize(img,(shape[0]//2,shape[1]//2))##Decrease size
imgResize2 = cv2.resize(img,(shape[0]*2,shape[1]*2)) ##Increase size
cv2.imshow("Image",img)
cv2.imshow("Image Resize",imgResize)
cv2.imshow("Image Increase size",imgResize2)
print(imgResize.shape)
cv2.waitKey(0)

裁剪图像

裁剪是获取图像的一部分过程。在OpenCV中,我们可以通过定义裁剪后的矩形坐标来执行裁剪。

句法

imgCropped = img[y1:y2, x1:x2]
(x1,y1): top-left vertex
(x2,y2): bottom-right vertex
Example
imgCropped = img[0:100,200:200]

使用裁剪方法,让我们尝试从图像中获取蒙娜丽莎的脸。

import cv2
img = cv2.imread("images/img0.jpg")
imgCropped = img[50:250,120:330]
cv2.imshow("Image cropped",imgCropped)
cv2.imshow("Image",img)
cv2.waitKey(0)

你也可以使用paint来找到(x1,y1),(x2,y2)的正确坐标。

右键单击图像并保存,尝试从图像中获取王卡。

提示:使用paint来找到正确的坐标,最后使用调整大小来增加裁剪图像的大小。

“在寻求解决方案之前,请尝试自己动手做。”

OpenCV基础知识入门相关推荐

  1. OpenCv基础知识(入门)

    理论基础: 1.图像与矩阵 一般来说,图像是一个标准的矩形,有着宽度(width)和高度(height).而矩阵有着行(row)和列(column),矩阵的操作在数学和计算机中的处理都很常见且成熟,于 ...

  2. Python计算机视觉编程第十章——OpenCV基础知识

    Python计算机视觉编程 (一)OpenCV 的 Python 接口 (二)OpenCV 基础知识 2.1 读取和写入图像 2.2 颜色空间 2.3 显示图像及结果 (三)处理视频 3.1 视频输入 ...

  3. swift5.x基础知识入门

    swift5.x基础知识入门 源码在我的主页下,欢迎下载,我非常喜欢swift和oc的语法,两者相似,我坚信天下没有学不会的技术. 基本介绍 ///这里只介绍一些初学swift的基本概念,需要提前了解 ...

  4. OpenCV基础知识 图像

    OpenCV基础知识 图像 位图模式 灰度模式 RGB模式 位图模式 位图模式是是1位深度的图像,只有黑和白两种颜色.它可以由扫描或置入黑色的矢量线条图像生成,也能由灰度模式转换而成.其他图像模式不能 ...

  5. 学习笔记:Java 并发编程①_基础知识入门

    若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 视频下载: ...

  6. GIS地图基础知识--入门教程

    wenzhanhttp://www.gisbbs.net/viewthread.php?tid=106&extra=page%3D1 GIS地图基础知识--入门教程 GIS 地 图 知 识 1 ...

  7. C语言基础知识入门和C语言入门基础知识大全

    一.C语言基础知识入门 C语言一出现,就以其丰富的功能.强大的表达能力.灵活性.方便性和广泛的应用,在世界范围内迅速普及和普及.C语言不仅高效而且可移植.它可以用来开发应用软件.驱动程序.操作系统等. ...

  8. JavaScript 基础知识 - 入门篇(二)

    11. 函数 11.1 函数的基础知识 为什么会有函数? 在写代码的时候,有一些常用的代码需要书写很多次,如果直接复制粘贴的话,会造成大量的代码冗余: 函数可以封装一段重复的javascript代码, ...

  9. R语言基础知识入门学习(一)

    目录 系列文章目录 一.软件下载 二.基本知识 1. 对象 2. 向量 3. 向量化 4. 因子 总结 系列文章目录 R语言基础知识入门学习(一) 一.软件下载 我们可以通过这个网址对R语言软件进行下 ...

最新文章

  1. winform的UI设计关键属性汇总
  2. Python运算符优先级
  3. 程序闪退怎么运行_苹果应用程序崩溃闪退怎么办?如何解决苹果设备的软故障?...
  4. 一文尽览 CVPR 2022 workshop 所有算法竞赛
  5. 一般微型计算机有几十条,计算机单选题.doc
  6. Apache Dubbo的使用
  7. VS2008 安装部署工程的小问题
  8. mysql5.7.10 performance_schema_MySQL的show profile简介以及该功能在MySQL 5.7中performance_schema中的替代...
  9. 过来康康,一起来学VScode插件
  10. 焊接计算机软件系统,计算机在焊接中的应用
  11. sip信令跟踪工具sngrep
  12. 手机号码或账号查询支付宝名字和性别
  13. postman 配置参数自动签名
  14. 阿里云服务器租用价格最新收费标准(2019实时更新)
  15. php微信公众点歌台,PHP实现微信公众平台音乐点播功能
  16. rx6800s什么水平N卡 rx6800s什么水平
  17. 数据采集与数据分析的二八定律
  18. tp5分配计费统计小例
  19. 动作捕捉在动物神经与运动研究领域的应用
  20. 转移到ios下载安卓_转移到ios下载-转移到IOS 安卓版v2.10.0-PC6安卓网

热门文章

  1. 三年、四大顶会,深度推荐系统18篇论文只有7个可以复现
  2. 解决流程自动化“最后一公里问题”,达观数据发布智能 RPA
  3. 作业盒子完成1.5亿美元D轮融资,用AI普及教育资源
  4. 谷歌、阿里们的杀手锏:三大领域,十大深度学习CTR模型演化图谱
  5. 新款Tesla最低仅售26.2万,马斯克终于凑齐了S3XY
  6. 春招来袭!程序员如何拿下硅谷顶级公司200万年薪?
  7. Dropbox如何使用机器学习从数十亿图片中自动提取文字
  8. 资源 | 8张思维导图帮你梳理深度学习机器学习多个知识点
  9. java8中谨慎使用实数作为HashMap的key
  10. 3行代码写出8个接口,开挂了?