开发者

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

目录
  • 概述
  • 环境准备
  • 完整代码
  • 示例代码详解
    • 1. 读取和显示图像
    • 2. 读取和显示视频
  • 总结

    概述

    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, www.devze.com800)    # 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():
        """
        读取视js频/摄像头
        :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:
               python break
    
            if cv2.waitKey(1) & 0xFF == ord('q'):
                # 有按键则返回按键ASCII码,无按键则返回-1
                # 取按键返回ASCII码二进制后8位,为按键'q'退出循环
              www.devze.com  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读取显示图像与视频内容请搜索编程客栈(www.devze.com)以前的文章或python继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜