使用OpenCV实现读取和显示图像与视频
作者:燕鹏01
概述
OpenCV 是一个强大的计算机视觉库,广泛应用于图像处理和视频处理等领域。本文将详细介绍如何使用 OpenCV 在 Python 中读取和显示图像以及视频,并通过具体的代码示例来展示整个过程。
环境准备
在开始之前,请确保已经安装了 OpenCV 库。如果没有安装,可以通过以下命令进行安装:
pip install opencv-python
完整代码
import cv2 def read_img(): """ 读取图片 :return: """ img = cv2.imread(r'./resources/lena.jpeg') cv2.imshow('lena img', img) cv2.waitKey(0) def read_video(): """ 读取视频/摄像头 :return: """ # 视频路径为获取资源,id序号则为摄像头id,0为默认第一个摄像头id cap = cv2.VideoCapture(r'./resources/video.mp4') # cap = cv2.VideoCapture(0) # cap propId 0-18 cap.set(3, 800) # 3为宽 cap.set(4, 600) # 4为高 cap.set(10, 5) # 10为亮度 while True: success, img = cap.read() if success: cv2.imshow('video', img) else: break if cv2.waitKey(1) & 0xFF == ord('q'): # 有按键则返回按键ASCII码,无按键则返回-1 # 取按键返回ASCII码二进制后8位,为按键'q'退出循环 break cap.release() cv2.destroyAllWindows() if __name__ == '__main__': # read_img() read_video()
示例代码详解
1. 读取和显示图像
import cv2 def read_img(): """ 读取图片 :return: """ img = cv2.imread(r'./resources/lena.jpeg') cv2.imshow('lena img', img) cv2.waitKey(0)
读取图像:
img = cv2.imread(r'./resources/lena.jpeg')
使用 cv2.imread() 函数读取图像文件。路径使用原始字符串(r'...')以避免转义字符的问题。
显示图像:
cv2.imshow('lena img', img) cv2.waitKey(0)
使用 cv2.imshow() 函数显示图像。第一个参数是窗口名称,第二个参数是要显示的图像。
cv2.waitKey(0) 使程序等待用户按键后退出。0 表示无限期等待。
2. 读取和显示视频
def read_video(): """ 读取视频/摄像头 :return: """ # 视频路径为获取资源,id序号则为摄像头id,0为默认第一个摄像头id cap = cv2.VideoCapture(r'./resources/video.mp4') # cap = cv2.VideoCapture(0) # cap propId 0-18 cap.set(3, 800) # 3为宽 cap.set(4, 600) # 4为高 cap.set(10, 5) # 10为亮度 while True: success, img = cap.read() if success: cv2.imshow('video', img) else: break if cv2.waitKey(1) & 0xFF == ord('q'): # 有按键则返回按键ASCII码,无按键则返回-1 # 取按键返回ASCII码二进制后8位,为按键'q'退出循环 break cap.release() cv2.destroyAllWindows()
读取视频或摄像头:
cap = cv2.VideoCapture(r'./resources/video.mp4') # cap = cv2.VideoCapture(0)
使用 cv2.VideoCapture() 函数读取视频文件或摄像头。传入视频文件路径或摄像头ID(例如 0 表示默认摄像头)。
设置视频属性:
cap.set(3, 800) # 3为宽 cap.set(4, 600) # 4为高 cap.set(10, 5) # 10为亮度
使用 cap.set() 方法设置视频捕获属性。参数 3 表示宽度,4 表示高度,10 表示亮度。
读取和显示视频帧:
while True: success, img = cap.read() if success: cv2.imshow('video', img) else: break
使用 cap.read() 方法读取视频帧。如果读取成功,success 为 True,img 为当前帧的图像;否则,success 为 False,表示视频结束或读取失败。
按键检测:
if cv2.waitKey(1) & 0xFF == ord('q'): break
使用 cv2.waitKey(1) 等待1毫秒,如果有按键按下,则返回按键的ASCII码。& 0xFF 用于取按键ASCII码的后8位。ord('q') 返回字符 ‘q’ 的ASCII码。如果按键为 ‘q’,则退出循环。
释放资源:
cap.release() cv2.destroyAllWindows()
使用 cap.release() 释放视频捕获对象。
使用 cv2.destroyAllWindows() 关闭所有OpenCV窗口。
主函数
if __name__ == '__main__': # read_img() read_video()
主函数:
if __name__ == '__main__': 确保当脚本直接运行时才执行以下代码。
调用 read_img() 或 read_video() 函数来读取和显示图像或视频。
总结
本文详细介绍了如何使用 OpenCV 在 Python 中读取和显示图像以及视频,并通过具体的代码示例展示了整个过程。通过使用 cv2.imread()、cv2.imshow()、cv2.VideoCapture() 和 cv2.waitKey() 等函数,我们可以轻松地处理图像和视频数据。
到此这篇关于使用OpenCV实现读取和显示图像与视频的文章就介绍到这了,更多相关OpenCV读取显示图像与视频内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!