使用 OpenCV 读取和显示图像与视频
概述
OpenCV 是一个强大的计算机视觉库,广泛应用于图像处理和视频处理等领域。本文将详细介绍如何使用 OpenCV 在 Python 中读取和显示图像以及视频,并通过具体的代码示例来展示整个过程。
环境准备
在开始之前,请确保已经安装了 OpenCV 库。如果没有安装,可以通过以下命令进行安装:
pip install opencv-python
完整代码
import cv2def 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为默认第一个摄像头idcap = cv2.VideoCapture(r'./resources/video.mp4')# cap = cv2.VideoCapture(0)# cap propId 0-18cap.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:breakif cv2.waitKey(1) & 0xFF == ord('q'):# 有按键则返回按键ASCII码,无按键则返回-1# 取按键返回ASCII码二进制后8位,为按键'q'退出循环breakcap.release()cv2.destroyAllWindows()if __name__ == '__main__':# read_img()read_video()
示例代码详解
1. 读取和显示图像
import cv2def 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为默认第一个摄像头idcap = cv2.VideoCapture(r'./resources/video.mp4')# cap = cv2.VideoCapture(0)# cap propId 0-18cap.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:breakif cv2.waitKey(1) & 0xFF == ord('q'):# 有按键则返回按键ASCII码,无按键则返回-1# 取按键返回ASCII码二进制后8位,为按键'q'退出循环breakcap.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 读取和显示图像与视频的技术讲解,希望对你的学习和实践有所帮助!如果有任何疑问或需要进一步的帮助,请随时提问!