我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用Python的OpenCV库处理图像和视频

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用Python的OpenCV库处理图像和视频

介绍

众所周知,计算机视觉在机器学习和人工智能领域获得了巨大的普及。图像识别技术允许计算机处理比人眼更多的信息,通常更快、更准确,或者只是在人们不参与观看的情况下处理。因此,你可能想知道机器如何学习和解释视觉世界。

在本文中,我将介绍如何使用 Python 的 OpenCV 库开始处理图像和视频。我们将涵盖以下主题:

  • 计算机视觉简介
  • OpenCV 库及其应用简介
  • 如何使用 OpenCV 库处理图像和视频

计算机视觉

它是人工智能和计算机科学的一个领域,训练计算机理解视觉世界。它是机器学习的主要组成部分之一。它处理自然世界的图像(高维数据)。它执行各种任务,例如获取、分析和处理以理解图像并将其转换为数字或符号信息。

当今的计算机视觉算法基于模式识别,通常依赖于卷积神经网络 (CNN)。由于该领域的各种进步,计算机视觉正在蓬勃发展,并且它的受欢迎程度在过去几年中呈指数增长。

计算机视觉的应用范围从缺陷检测到入侵者检测、口罩检测到肿瘤检测、作物监测到植物监测、车辆分类到交通流量分析等。该技术主要应用于零售和制造、交通、媒体、农业、医疗保健、体育、银行、增强现实、家庭安全等。

OpenCV

Python 包含一个名为 OpenCV 的库,用于在计算机视觉领域工作。它是一个开源库,于 1999 年推出。我们可以执行图像处理、图像分析、视频分析等任务。该库主要用 C++ 编写,具有 C++、Python、Java 和 MATLAB 等接口。

应用:

  • 2D 和 3D 特征工具包
  • 视频/图像搜索检索
  • 人脸识别系统
  • 手势识别
  • 移动机器人
  • 对象识别
  • 医学影像分析
  • 运动追踪
  • 增强现实

安装

使用 pip 命令可以轻松安装 OpenCV,如下所示

pip install opencv-python

使用 OpenCV 处理图像

在处理图像时,OpenCV 有许多可以对图像执行的操作。其中,我将讨论:

  1. 读取图像
  2. 调整图像大小
  3. 旋转图像
  4. 翻转图像
  5. 重写图像
  6. 裁剪图像
  7. 在图像上绘制各种形状

1. 从文件中读取图像

  1. 使用函数imread()读取图片 (支持BMP、jpeg、tiff、png、便携图片格式等)
  2. 为了显示我们在上一步中读取的图像,我们使用函数“imshow()”。这个函数的第一个参数是标题,第二个是我们读到的图像。
  3. waitkey() 函数显示一个窗口几毫秒。毫秒数作为参数传递给函数。如果 0 作为参数传递,它将永远等待,直到按下任何键。
  4. 最后,destroyAllWindows() 将图像窗口显示后从内存中删除。

例子:

python 代码:

import cv2
 
img=cv2.imread('img.jpeg')
cv2.imshow('Image',img)
cv2.waitKey()
cv2.destroyAllWindows()

输出

8fcf702413cc22140704667f34159ac5.png

2. 调整图像大小:

在图像处理中,经常需要调整图像的大小。OpenCV 为我们提供了几种轻松重新缩放图像的方法。让我们通过一个例子来理解。

例子:

img2=cv2.resize(img,(400,400))
#resize by a fraction of original size
img3=cv2.resize(img,(0,0),fx=0.5,fy=0.6)
#using INTER_AREA to shrink the image
img4=cv2.resize(img,(600,700),interpolation=cv2.INTER_AREA)

3. 旋转图像

使用 OpenCV 旋转图像的语法是

M=cv2.getRotationMatrix2D(center, angle,scale)

然后我们使用方法

cv2.wrapAffine(class="lazy" data-src,M, (h,w))

让我们通过一个例子来深入了解:

例子:

#calculate height and width to get center
(h,w)=img.shape[:2]
center=(w/2,h/2)
 
#rotate by 90 degrees
M = cv2.getRotationMatrix2D(center, 90, 1.0)
img90 = cv2.warpAffine(img, M, (h, w))
 
#rotate by 180 degrees
M = cv2.getRotationMatrix2D(center, 180, 1.0)
img180 = cv2.warpAffine(img, M, (h, w))
 
#rotate by 270 degrees
M = cv2.getRotationMatrix2D(center, 270, 1.0)
img270 = cv2.warpAffine(img, M, (h, w))

34c7e0af8647c752d14a76f26d2e0446.jpeg

4. 翻转图像:

要翻转图像,我们使用函数 cv2.flip() 并传递参数,即图像和翻转代码(水平或垂直)

例子:

#flip- vertical axes
img=cv2.flip(img,0) 
#flip- horizontal axes
img=cv2.flip(img,1)

9e581f15a328c079c06a495c68fd5ab7.jpeg

5. 重写图像

要将图像重写为新文件,我们使用函数 imwrite() 如下:

cv2.imwrite('new_img.jpg',img)

6. 裁剪图像

#crop from top
img=img[0:100,0:100]
#crop by specifying height and width
img=img[50:200,50:100]

7d058824699703414b838ee6563a971c.jpeg

7. 绘制形状

使用 OpenCV,我们可以使用不同的函数在图像上快速绘制各种形状,如圆形、矩形、多边形等。让我们用一个例子来理解:

例子:

#creating a blank image
import cv2 as cv2
import numpy as np
img=np.zeros((500,500,3),dtype=float)
#changing the color of the image to green
img[:]=0,255,0
#Red
img[:]=0,0,255
#changing the color of a particular portion
img[200:300,300:450]=0,255,0
#drawing a rectangle
cv2.rectangle(img,(100,100),(180,180),color=(255,0,0),thickness=5)
#draw a circle with filling the color
cv2.circle(img,center=(100,300),radius=60,color=(0,255,0),thickness=-1)
#drawing a line 
cv2.line(img,(0,0),(317,356),thickness=3,color=(0,255,0))
#adding text
cv2.putText(img,org=(50,50),fontScale=3,color=(255,0,0)
,thickness=2,lineType=cv2.LINE_AA,text="IMAGES", fontFace=cv2.FONT_HERSHEY_COMPLEX_SMALL)
cv2_imshow(img)
cv2.waitKey(0)

e97758f81813a3bdff9bea40ad456e7f.png

使用 OpenCV 处理视频

视频是帧序列或图像序列。图像通常采用 BGR(蓝、绿、红)的形式。每个像素的值都在 0-255 之间。要开始使用 OpenCV 处理视频,我们使用以下函数:

Cv2.VideoCapture():它建立与视频的连接。它带有一个参数,该参数指示是使用内置摄像头还是附加摄像头。值“0”表示内置摄像头。

Cap.read():这个方法可以让我们得到一个帧。

Cv2.cvtColor():允许你更改图像使用的颜色模型。这包括从 BGR 转换为 RGB 和灰度。

在处理视频方面,在本文中,我们将学习

  1. 如何捕获视频帧的不同属性
  2. 读取视频文件
  3. 写视频

1. 捕获视频帧的属性:

让我们看几个捕获视频属性的示例。

要捕获帧形状:

frame.shape
(2160, 3840, 3)
plt.imshow(frame)
plt.show()

要更改框架的颜色,我们使用函数 cv2.cvtColor(),如下所示:

#changing the color of the frame
plt.show()
plt.imshow(cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY))

de074b28336c1c21270ccbdba5bb1f94.png

为了捕捉视频,我们使用函数 cv2.VideoCapture()

cap=cv2.VideoCapture('/content/video.mp4')
cap.read()

要获取框架的高度,我们使用 cap.get() 函数如下:

#height
cap.get(cv2.CAP_PROP_FRAME_HEIGHT)

为了获得框架的宽度,我们使用:

#width
cap.get(cv2.CAP_PROP_FRAME_WIDTH)

要获取帧数,我们使用函数 cap.get() 如下:

#number of frames
cap.get(cv2.CAP_PROP_FRAME_COUNT)

为了获得每秒的帧数,我们使用

#number of frames per sec
cap.get(cv2.CAP_PROP_FPS)

2. 读取视频文件

  1. 导入 cv2
  2. 然后我们使用函数 cv2.VideoCapture() 来捕捉视频。
  3. 接下来,我们循环遍历每一帧并使用函数 cap.read() 读取帧。
  4. 为了显示每一帧,我们使用方法 cv2.imshow()。
  5. 最后,我们使用 waitKey() 函数中断循环,当用户按下任意键时,该函数会中断循环。
  6. destroyAllWindows() 函数将关闭窗口。

例子:

#importing dependencies
import cv2
from matplotlib import pyplot as plt
#establish capture
cap=cv2.VideoCapture('/content/video.mp4')
#loop through each frame
while(cap.isOpened()):
  ret,frame=cap.read()
  frame=cv2.resize(frame,(1200,700))
  cv2.imshow(‘Video',frame)
  if cv2.waitKey(10) & 0xFF == ord('q'):
    break
#close down everything
cap.release()
cv2.destroyALLWindows()

3. 编写视频文件

  1. 导入 cv2
  2. 使用函数 cv2.VideoCapture() 捕获视频
  3. 然后我们使用函数 cv2.VideoWriter 来编写视频。该函数将参数作为
    1. cv2.VideoWriter(filename, fourcc, fps, framesize)
    2. filename - 捕获的输入视频文件
    3. Fourcc - 用于指定视频编解码器的代码
    4. fps - 每秒帧数
    5. framesize - 视频框的高度和宽度
  4. 接下来,我们循环遍历每一帧并使用对象 video_writer 来写入帧。
  5. 最后,我们使用 waitKey() 函数来打破循环
  6. 使用函数 destroyAllWindows() 关闭窗口
import cv2
from google.colab.patches import cv2_imshow
cap=cv2.VideoCapture('/content/video.mp4')
height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
fps=int(cap.get(cv2.CAP_PROP_FPS))
frame_size = (width,height)
video_writer= cv2.VideoWriter('/content/output.avi',cv2.VideoWriter_fourcc('M','J','P','G'), fps, frame_size)
for frame_idx in range(int(cap.get(cv2.CAP_PROP_FRAME_COUNT))):
  ret,frame=cap.read()
  gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
  video_writer.write(gray)
  if cv2.waitKey(10) & 0xFF== ord('q'):
    break
cap.release()
cv2.destroyALLWindows()

结论

本文帮助你创建了与计算机视觉相关的出色应用程序。希望你现在对以下内容有一个很好的了解:

  • 什么是计算机视觉
  • OpenCV 库的应用
  • 使用 OpenCV 库处理图像
  • 使用 OpenCV 库处理视频

总结

到此这篇关于如何使用Python的OpenCV库处理图像和视频的文章就介绍到这了,更多相关Python OpenCV处理图像和视频内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用Python的OpenCV库处理图像和视频

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python基于OpenCV的视频图像处理详解

OpenCV是一个开源的,跨平台的计算机视觉库,它采用优化的C/C++代码编写,能够充分利用多核处理器的优势。本文主要和大家来聊聊基于Python OpenCv的视频图像处理,感兴趣的可以了解一下
2023-02-02

如何使用使用python+opencv解析视频并处理视频中的水印

本篇内容主要讲解“如何使用使用python+opencv解析视频并处理视频中的水印”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用使用python+opencv解析视频并处理视频中的水印”
2023-06-02

如何使用python opencv库玩转视频帧率

这篇“如何使用python opencv库玩转视频帧率”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用python o
2023-06-30

Opencv图像处理中如何使用mask

这篇文章将为大家详细讲解有关Opencv图像处理中如何使用mask,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。图像基本运算图像的基本运算有很多种,比如两幅图像可以相加、相减、相乘、相除、位运算、平方根、
2023-06-14

Python图像处理库PIL如何使用

这篇文章主要介绍“Python图像处理库PIL如何使用”,在日常操作中,相信很多人在Python图像处理库PIL如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python图像处理库PIL如何使用”的疑
2023-07-06

C#开发中如何处理图像处理和视频处理问题

C#开发中如何处理图像处理和视频处理问题,需要具体代码示例摘要:图像处理和视频处理在计算机视觉和媒体领域中占据重要的位置。本文将介绍如何使用C#编程语言处理图像和视频相关的问题,并提供了具体的代码示例。在图像处理方面,我们将讨论如何读取、修
2023-10-22

详解如何使用OpenCV和像素处理图像灰度化

这篇文章主要为大家介绍了如何使用OpenCV和像素处理图像灰度化的方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-17

如何在Python中使用OpenCV实现图像平滑处理操作

这期内容当中小编将会给大家带来有关如何在Python中使用OpenCV实现图像平滑处理操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是图像平滑处理在尽量保留图像原有信息的情况下,过滤掉图像内部的噪
2023-06-15

怎么使用Python第三方opencv库实现图像分割处理

这篇文章主要介绍了怎么使用Python第三方opencv库实现图像分割处理的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Python第三方opencv库实现图像分割处理文章都会有所收获,下面我们一起来看
2023-07-02

如何使用OpenCV与JVM实现矩阵处理图像

这篇文章给大家分享的是有关如何使用OpenCV与JVM实现矩阵处理图像的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。submat(int rowStart, int rowEnd, int colStart, i
2023-06-26

Python音频处理库pydub如何使用

本篇内容主要讲解“Python音频处理库pydub如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python音频处理库pydub如何使用”吧!1. 安装使用pip安装即可(还需安装ffm
2023-07-05

Python+OpenCV数字图像处理中如何进行ROI区域的提取

本篇文章给大家分享的是有关Python+OpenCV数字图像处理中如何进行ROI区域的提取,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、实现原理先通过cv.cvtColor
2023-06-22

C#如何使用OpenCV剪切图像中的圆形和矩形

这篇文章主要介绍“C#如何使用OpenCV剪切图像中的圆形和矩形”,在日常操作中,相信很多人在C#如何使用OpenCV剪切图像中的圆形和矩形问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#如何使用OpenC
2023-06-07

常用的python图像处理库有哪些及怎么使用

这篇“常用的python图像处理库有哪些及怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“常用的python图像处理库
2023-06-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录