莱州教育网站,一站式网站搭建,网站在线seo,北京朝阳区天气预报一、图像入门
1、cv2.imread()函数 cv2.imread() 是 OpenCV 库中的一个函数#xff0c;用于读取图像文件。下面是 cv2.imread() 函数的基本介绍和使用方法#xff1a;
函数定义
cv2.imread(filename, flagscv2.IMREAD_COLOR)
参数
filename#xff1a;要读取的图像的路…一、图像入门
1、cv2.imread()函数 cv2.imread() 是 OpenCV 库中的一个函数用于读取图像文件。下面是 cv2.imread() 函数的基本介绍和使用方法
函数定义
cv2.imread(filename, flagscv2.IMREAD_COLOR)
参数
filename要读取的图像的路径和文件名。flags这是一个可选参数用于指定读取图像的方式。常用的选项有 cv2.IMREAD_COLOR默认参数读取一张彩色图像。这是任何图像加载的默认标志。cv2.IMREAD_GRAYSCALE以灰度模式读取图像。cv2.IMREAD_UNCHANGED读取图像包括其 alpha 通道如果存在。
返回值 如果成功读取图像该函数将返回一个多维 numpy 数组代表图像的像素值。如果无法读取图像例如文件不存在或格式不支持则返回 None。 2、cv2.imshow()函数 是 OpenCV 库中的一个函数用于在窗口中显示图像。这个函数允许开发者将图像数据可视化使得用户可以直观地查看和分析图像内容。
函数定义
cv2.imshow(winname, mat)
参数
winname一个字符串表示窗口的名字。通过这个窗口名我们可以引用、移动或关闭这个特定的窗口。mat要显示的图像。这通常是一个由 cv2.imread() 函数加载的图像或者是一个通过其他 OpenCV 函数处理后的图像。
返回值 cv2.imshow() 函数本身没有返回值。它的主要目的是在屏幕上显示图像。
3、cv2.waitKey()函数 cv2.waitKey() 和 cv2.destroyAllWindows() 是 OpenCV 库中用于控制图像显示窗口的两个重要函数。这两个函数通常与 cv2.imshow() 一起使用以实现图像显示的交互性。 cv2.waitKey() 函数用于等待一个特定的键盘按键事件。它在显示图像后使程序暂停执行直到用户按下一个键或者等待指定的时间。
函数定义
cv2.waitKey(delayNone)
参数
delay等待键盘输入的时间以毫秒为单位。如果参数为0则函数会无限期地等待直到用户按下一个键。
返回值 cv2.waitKey() 返回按下的键的ASCII码。如果在指定的延迟时间内没有键被按下则返回-1。
使用方法 cv2.waitKey() 常用于创建一个简单的键盘事件循环让用户有机会查看和交互图像。通常它放在 cv2.imshow() 后面以便在显示图像后暂停程序。
4、cv2.destroyAllWindows()函数 cv2.destroyAllWindows() 函数用于关闭所有由 OpenCV 创建的高GUI窗口。 在显示图像并等待用户交互后通常使用 cv2.destroyAllWindows() 来清理并关闭所有打开的窗口。这是一个良好的编程实践可以确保资源得到正确释放并避免程序结束时留下悬挂的窗口。
5、示例演示
import cv2 # 读取彩色图像
color_image cv2.imread(path_to_image.jpg, cv2.IMREAD_COLOR) # 读取灰度图像
gray_image cv2.imread(path_to_image.jpg, cv2.IMREAD_GRAYSCALE) # 检查图像是否成功读取
if color_image is not None: cv2.imshow(Color Image, color_image) # 等待用户按键参数0表示无限期等待 key cv2.waitKey(0) # 根据按键执行不同的操作可选 if key ord(q): # 如果按下q键 # 关闭所有OpenCV窗口 cv2.destroyAllWindows()
else: print(Error: Unable to load image.)
二、视频入门
1、读取摄像机视频 通常情况下我们必须用摄像机捕捉实时画面。提供了一个非常简单的界面。让我们从摄像头捕捉一段视频(我使用的是我笔记本电脑内置的网络摄像头) 将其转换成灰度视频并显示出来。只是一个简单的任务开始。 要捕获视频你需要创建一个 VideoCapture 对象。它的参数可以是设备索引或视频文件的名称。设备索引就是指定哪个摄像头的数字。正常情况下一个摄像头会被连接(就像我的情况一样)。所以我简单地传0(或-1)。你可以通过传递1来选择第二个相机以此类推。在此之后你可以逐帧捕获。
import numpy as np
import cv2 as cv # 创建一个VideoCapture对象参数0表示使用计算机的第一个摄像头
cap cv.VideoCapture(0) # 检查摄像头是否成功打开
if not cap.isOpened(): print(无法打开摄像头) exit() # 无限循环直到遇到退出条件
while True: # 逐帧捕获视频 # ret是一个布尔值如果正确读取帧则ret为True否则为False # frame是读取到的帧图像 ret, frame cap.read() # 检查是否成功读取到帧 if not ret: print(无法接收帧流结束。正在退出...) break # 将图像从BGR颜色空间转换为灰度颜色空间 gray cv.cvtColor(frame, cv.COLOR_BGR2GRAY) # 显示转换后的灰度图像 cv.imshow(frame, gray) # 等待键盘输入参数1表示等待时间为1毫秒 # 如果按下q键则退出循环 if cv.waitKey(1) ord(q): break # 释放VideoCapture对象关闭摄像头
cap.release() # 销毁所有OpenCV创建的窗口
cv.destroyAllWindows() 这段代码实现了一个简单的摄像头视频流捕获和显示程序。它使用OpenCV库来从计算机摄像头捕获视频帧将每帧图像转换为灰度图像并在窗口中显示。当按下q键时程序将退出。在退出前它会释放摄像头资源并销毁所有OpenCV创建的窗口。 2、读取保存的文件视频 它与从相机捕获相同只是用视频文件名更改摄像机索引。另外在显示框架时请使用适当的时间cv.waitKey()。如果太小则视频将非常快而如果太大则视频将变得很慢嗯这就是显示慢动作的方式。正常情况下25毫秒就可以了或者使用sleep延时来代替带验证。
import numpy as np
import cv2 as cv # 使用cv2.VideoCapture方法读取名为vtest.avi的视频文件
cap cv.VideoCapture(vtest.avi) # 当视频流处于打开状态时循环读取视频帧
while cap.isOpened(): # 读取视频帧ret是读取是否成功的标志frame是读取到的视频帧 ret, frame cap.read() # 如果ret为False说明没有成功读取到视频帧可能是视频已播放完毕 # 打印提示信息并退出循环 # 如果正确读取帧ret为True if not ret: print(无法接收帧视频结束。正在退出...) break # 将读取到的视频帧从BGR颜色空间转换为灰度颜色空间 gray cv.cvtColor(frame, cv.COLOR_BGR2GRAY) # 使用cv2.imshow方法显示灰度视频帧窗口名为frame cv.imshow(frame, gray) # 等待键盘输入参数1表示等待时间为1毫秒 # 如果按下q键则退出循环 if cv.waitKey(1) ord(q): break # 释放VideoCapture对象关闭视频文件
cap.release() # 销毁所有OpenCV创建的窗口
cv.destroyAllWindows()