OpenCV---基础入门--图像处理

一,计算机眼中的图像

      在计算机眼中,图像是由众多离散的像素点所组成的二维矩阵,每个像素点具有特定的颜色值或灰度值,这些数值通过特定的编码方式存储,计算机依据图像的格式规范对这些数据进行解析与处理,从而识别出图像的各种特征、形状、颜色分布等信息,以便进行诸如图像识别、分类、编辑等一系列操作。

二,图像视频读取

import cv2
import os
from PIL import Image
print(cv2.__version__)

def read_image(image_path):
    """
    读取指定路径的图像文件

    Args:
        image_path (str): 图像文件的路径

    Returns:
        numpy.ndarray or None: 读取成功返回图像数据(以numpy数组形式),失败返回None
    """
    try:
        image = Image.open(image_path)
        print("成功用Pillow库读取图像,图像尺寸为:", image.size)

        image = cv2.imread(image_path)
        if image is not None:
            print("成功读取PNG图像,图像尺寸为:", image.shape)
            return image
        else:
            print("无法读取PNG图像,请检查文件路径是否正确或文件是否损坏。")
            return None
    except Exception as e:
        print(f"读取图像时发生错误: {e}")
        return None


def read_video(video_path):
    """
    读取指定路径的视频文件

    Args:
        video_path (str): 视频文件的路径

    Returns:
        cv2.VideoCapture or None: 读取成功返回视频对象,失败返回None
    """
    try:
        video = cv2.VideoCapture(video_path)
        if video.isOpened():
            print("成功打开MP4视频。")
            # 获取视频的一些基本信息
            frame_width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
            frame_height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
            fps = video.get(cv2.CAP_PROP_FPS)
            frame_count = int(video.get(cv2.CAP_PROP_FRAME_COUNT))

            print("视频尺寸: {}x{}".format(frame_width, frame_height))
            print("帧率: {}".format(fps))
            print("总帧数: {}".format(frame_count))

            return video
        else:
            print("无法打开MP4视频,请检查文件路径是否正确或文件是否损坏。")
            return None
    except Exception as e:
        print(f"读取视频时发生错误: {e}")
        return None


if __name__ == "__main__":
    # 读取PNG图像
    image_path = "屏幕截图 2024-09-07 162535.jpg"
    image = read_image(image_path)

    # 读取MP4视频
    video_path = r"A:\OpenCV代码\videos\项目演示.mp4"
    video = read_video(video_path)

    if image is not None and video is not None:
        # 这里可以添加后续对读取到的图像和视频进行进一步处理的代码

        # 处理完成后,释放视频资源
        video.release()
    elif image is not None:
        # 只读取到图像的情况,可根据需要添加相应处理代码
        pass
    elif video is not None:
        # 只读取到视频的情况,可根据需要添加相应处理代码
        video.release()

三,ROI区域

3.1,含义:

    ROI(Region of Interest)即感兴趣区域,在图像处理和计算机视觉领域,ROI 是指图像中我们重点关注或者需要进一步处理的特定区域。例如,在一张包含人物的风景照片中,如果我们只想分析人物部分的特征,如面部表情或者手部动作,那么人物所在的区域就是 ROI;在医学影像中,医生可能只关心病变组织的区域,这个病变组织区域就是 ROI。它有助于减少处理的数据量,提高处理效率,同时能聚焦于关键区域获取更精准的信息。

3.2,实现方式:

3.2.1,规则提取ROI


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值