使用OpenCV实现读取和显示图像与视频

 更新时间:2024年11月03日 08:43:01   作者:燕鹏01  
OpenCV 是一个强大的计算机视觉库,广泛应用于图像处理和视频处理等领域,本文将详细介绍如何使用 OpenCV 在 Python 中读取和显示图像以及视频,希望对大家有所帮助

概述

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读取显示图像与视频内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python连接打印机实现自动化打印的实用技巧和示例代码

    Python连接打印机实现自动化打印的实用技巧和示例代码

    在计算机科学领域,打印机是一种重要的外部设备,用于将电子文档转换成实际的纸质文件,下面这篇文章主要给大家介绍了关于Python连接打印机实现自动化打印的实用技巧和示例代码,需要的朋友可以参考下
    2024-05-05
  • Python深度学习实战PyQt5信号与槽的连接

    Python深度学习实战PyQt5信号与槽的连接

    本文讲解信号与槽的连接机制,详细示范各种类型的信号/槽连接的实现方法,这是图形用户界面的核心内容。还将介绍面向对象的程序设计,这是图形用户界面的基本思想
    2021-10-10
  • python银行卡号码校验Luhn模10算法

    python银行卡号码校验Luhn模10算法

    这篇文章主要为大家介绍了python银行卡号码校验Luhn模10算法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Python3实现取图片中特定的像素替换指定的颜色示例

    Python3实现取图片中特定的像素替换指定的颜色示例

    这篇文章主要介绍了Python3实现取图片中特定的像素替换指定的颜色,涉及Python3针对图片文件的读取、转换、生成等相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • python使用hdfs3模块对hdfs进行操作详解

    python使用hdfs3模块对hdfs进行操作详解

    这篇文章主要介绍了python使用hdfs3模块对hdfs进行操作详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python实现的Excel文件读写类

    Python实现的Excel文件读写类

    这篇文章主要介绍了Python实现的Excel文件读写类,涉及Python针对Excel常见的读写、打印等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 使用Python Cupy模块加速大规模数值计算实例深究

    使用Python Cupy模块加速大规模数值计算实例深究

    Cupy是一个基于NumPy的库,专门设计用于在GPU上进行高性能计算,它提供了与NumPy相似的API,因此用户可以很容易地将现有的NumPy代码迁移到Cupy上,从而充分利用GPU的并行计算能力
    2023-12-12
  • Python调用shell命令常用方法(4种)

    Python调用shell命令常用方法(4种)

    这篇文章主要介绍了Python调用shell命令常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • python字典中items()函数用法实例

    python字典中items()函数用法实例

    Python字典items()函数作用以列表返回可遍历的(键, 值)元组数组,下面这篇文章主要给大家介绍了关于python字典中items()函数用法的相关资料,需要的朋友可以参考下
    2022-11-11
  • Python实现网页截图(PyQT5)过程解析

    Python实现网页截图(PyQT5)过程解析

    这篇文章主要介绍了Python实现网页截图(PyQT5)过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08

最新评论