一,计算机眼中的图像
在计算机眼中,图像是由众多离散的像素点所组成的二维矩阵,每个像素点具有特定的颜色值或灰度值,这些数值通过特定的编码方式存储,计算机依据图像的格式规范对这些数据进行解析与处理,从而识别出图像的各种特征、形状、颜色分布等信息,以便进行诸如图像识别、分类、编辑等一系列操作。
二,图像视频读取
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。它有助于减少处理的数据量,提高处理效率,同时能聚焦于关键区域获取更精准的信息。