怎样破解网站后台密码,东莞电子商务网站建设,网站论坛源码,物流网站建设规划总结前言
一、图像入门
1.1 读取图像cv.imread()
1.2 数组数据转换cv.cvtColor()
1.3数据窗口展示
1.4图像保存
1.5图像的截取 1.6 图像的比例缩放
二、视频入门
参考文献 前言
OpenCV 于 1999 年由 Gary Bradsky 在英特尔创立#xff0c;第一个版本于 2000 年问世。Vad…前言
一、图像入门
1.1 读取图像cv.imread()
1.2 数组数据转换cv.cvtColor()
1.3数据窗口展示
1.4图像保存
1.5图像的截取 1.6 图像的比例缩放
二、视频入门
参考文献 前言
OpenCV 于 1999 年由 Gary Bradsky 在英特尔创立第一个版本于 2000 年问世。Vadim Pisarevsky 加入了 Gary Bradsky负责管理英特尔的俄罗斯软件 OpenCV 团队。2005 年OpenCV 被用于 Stanley 这辆车赢得了 2005 年美国穿越沙漠 DARPA 机器人挑战大赛。后来在 Willow Garage 的支持下在 Gary Bradsky 和 Vadim Pisarevsky 主导下OpenCV 项目的开发工作变得活跃起来。OpenCV 现在支持与计算机视觉和机器学习相关的众多算法并且每天都在拓展中。
OpenCV 支持各种编程语言如 CPythonJava 等可在不同的平台上使用包括 WindowsLinuxOS XAndroid 和 iOS。基于 CUDA 和 OpenCL 的高速 GPU 操作接口也在积极开发中。OpenCV-Python 是 OpenCV 的 Python API结合了 OpenCV C API 和 Python 语言的最佳特性。
OpenCV-Python 是一个 Python 绑定库旨在解决计算机视觉问题。
Python 是一种由 Guido van Rossum 开发的通用编程语言它很快就变得非常流行主要是因为它的简单性和代码可读性。它使程序员能够用更少的代码表达思想而不会降低可读性。
与 C/C 这类语言相比Python 的速度更慢。好在可以使用 C/C 轻松的拓展 Python 我们可以在 C/C 中编写计算密集型代码并用 Python 来封装。这给我们带来了两个好处首先代码像原始的 C/C 代码一样快因为后台实际上就是 C/C 代码在工作其次在 Python 中编写代码比在 C/C 中更容易。OpenCV-Python 就是 OpenCV C 的 Python 封装。
OpenCV-Python 使用了 Numpy这是一个有着 MATLAB 风格语法高度优化的用于数值计算的库。所有 OpenCV 数组结构都与 Numpy 数组进行转换。这也使得与使用 Numpy 的其他库如 SciPy 和 Matplotlib集成更容易。
一、图像入门 都知道一张图片是由很多个像素点组成对于计算机而言最终呈现在用户面前的是由每个像素点的值所决定0~2550对应黑色255对应白色。我们在生活中通常接触的都是彩色图片由RGB三通道共同构成一张上面的彩色图片每一个通道对应的像素值反映出其亮度三个通道可以理解成三个矩阵。而灰度图像通常只有一个颜色通道来表现。
在这里你将学习如何读取图像、如何显示图像以及如何将其保存起来你要学习这些函数cv.imread()、cv.imshow()、cv.imwrite()您还可以选择学习如何使用 Matplotlib 显示图像。
1.1 读取图像cv.imread()
使用 cv.imread() 函数读取一张图像图片应该在工作目录中或者应该提供完整的图像路径。
第二个参数是一个 flag指定了应该读取图像的方式
cv.IMREAD_COLOR加载彩色图像任何图像的透明度都会被忽略它是默认标志cv.IMREAD_GRAYSCALE以灰度模式加载图像cv.IMREAD_UNCHANGED加载图像包括 alpha 通道
Note
你可以简单地分别传递整数 1、0 或-1而不是这三个 flag。
读取图片的代码如下所示:
import numpy as np
import cv2 as cv
# 用灰度模式加载图像
img cv.imread(images/demo2.png, 0)
cv.imshow(image, img)
cv.waitKey(0)
cv.destroyAllWindows() 1.2 数组数据转换cv.cvtColor()
import numpy as np
import cv2 as cv
# 用灰度模式加载图像
img_BGR cv.imread(images/demo2.png)
img cv.cvtColor(img_BGR,cv.COLOR_BGR2GRAY) #将其转换为灰度的二维数组数据
cv.imshow(image, img)
cv.waitKey(0)
cv.destroyAllWindows()
1.3数据窗口展示
img cv2.imread(cat.jpg)cv2.imshow(IMage,img)
cv2.waitKey(0) # 按任意键关闭窗口cv2.waitKey(1000) 延时一秒关闭窗口
cv2.destroyAllWindows()
1.4图像保存
cv2.imwrite(mycat.jpg,img)
1.5图像的截取
# 其实本质就是对np数组进行操作
img cv2.imread(cat.jpg)
cv2.imshow(IMage,img[:100,:200]) # 取前100行前200列的像素作为图像展示 1.6 图像的比例缩放
img_cat cv2.imread(cat.jpg)ret cv2.resize(img_cat,(0,0),fx3,fy1) #横向拉长三倍
ret2 cv2.resize(img_cat,(0,0),fx3,fy3) #图片扩大三倍
二、视频入门
学习加载视频、显示视频和保存视频。学习用相机捕捉并显示。你要学习这些函数cv.VideoCapture()cv.VideoWriter()
通常我们用相机捕捉直播。OpenCV 为此提供了一个非常简单的接口。我们用相机捕捉一个视频(我用的电脑内置摄像头)将它转换成灰度视频并显示。仅仅是一个简单的开始。去获取一个视频你需要创建一个VideoCapture对象。它的参数可以是设备索引或者一个视频文件名。设备索引仅仅是摄像机编号。通常会连接一台摄像机(as in my case)。所以我只传了 0(或者-1)。你可以通过传 1 来选择第二个摄像机以此类推。之后你能逐帧捕获。但是最后不要忘记释放这个 Capture 对象。
import numpy as np
import cv2 as cv
cap cv.VideoCapture(0)
while(True):# 一帧一帧捕捉ret, frame cap.read()# 我们对帧的操作在这里gray cv.cvtColor(frame, cv.COLOR_BGR2GRAY)# 显示返回的每帧cv.imshow(frame,gray)if cv.waitKey(1) 0xFF ord(q):break
# 当所有事完成释放 VideoCapture 对象
cap.release()
cv.destroyAllWindows()
Note
确保 ffmpeg 和 gstreamer 安装合适的版本。有时使用 Video Capture 是比较头痛的主要是因为错误的安装 ffmpeg 或 gstreamer。
保存视频
我们捕获视频逐帧处理然后保存下来。对于图像来说是非常的简单就用 cv.imwrite()。这里需要做更多的工作。
这次我们创建一个 VideoWriter 对象。我们应该指定输出文件的名字 (例如output.avi)。然后我们应该指定 FourCC 码 (下一段有介绍)。然后应该传递每秒帧数和帧大小。最后一个是 isColor flag。如果是 True编码器期望彩色帧否则它适用于灰度帧。
FourCC 是用于指定视频解码器的 4 字节代码。这里 fourcc.org 是可用编码的列表。它取决于平台下面编码就很好。
In Fedora: DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID 是最合适的. MJPG 结果比较大. X264 结果比较小)In Windows: DIVX (还需要测试和添加跟多内容)In OSX: MJPG (.mp4), DIVX (.avi), X264 (.mkv).
对于 MJPG FourCC 的代码作为 cv.VideoWriter_fourcc(‘M’,’J’,’P’,’G’) 或 cv.VideoWriter_fourcc(*’MJPG’) 传递。
下面的代码从相机捕获在垂直方向翻转每一帧然后保存它。
import numpy as np
import cv2 as cv
cap cv.VideoCapture(0)
# 声明编码器和创建 VideoWrite 对象
fourcc cv.VideoWriter_fourcc(*XVID)
out cv.VideoWriter(output.avi,fourcc, 20.0, (640,480))
while(cap.isOpened()):ret, frame cap.read()if retTrue:frame cv.flip(frame,1)# 写入已经翻转好的帧out.write(frame)cv.imshow(frame,frame)if cv.waitKey(1) 0xFF ord(q):breakelse:break
# 释放已经完成的工作
cap.release()
out.release()
cv.destroyAllWindows()
参考文献
1. 简介 - OpenCV-Python 教程简介 - 《OpenCV 中文文档 4.0.0》 - 书栈网 · BookStack
opencv——基础篇 - 小可爱真是太好了 - 博客园