网站字体选择,代理注册公司怎么找,现在ui做的比较好的网站,宁波网络营销怎么做一、图像/视频的基本属性
在计算机视觉中#xff0c;图像和视频的本质是多维数值矩阵。图像或视频数据的一些基本属性。
宽度#xff08;W#xff09; 和 高度#xff08;H#xff09; 定义了图像的像素分辨率#xff0c;单位通常是像素。例如#xff0c;一张 1920x10…一、图像/视频的基本属性
在计算机视觉中图像和视频的本质是多维数值矩阵。图像或视频数据的一些基本属性。
宽度W 和 高度H 定义了图像的像素分辨率单位通常是像素。例如一张 1920x1080 的图像有 1920 列宽度和 1080 行高度。通道C 表示图像的颜色空间常见的有RGB红、绿、蓝三通道彩色图像和单通道灰度图像。
在深度学习框架中通常使用四维数组 [batch_size, channel, height, width] 或简称 [N, C, H, W] 来表示一批图像的数据格式。而对于视频数据我们则需要额外增加一个时间维度即 [batch_size, channel, height, width, time_step]将视频拆解为单帧图像后复用图像处理逻辑。
RGB三通道彩色图像和单通道灰度图像是数字图像处理中的两种基本类型它们在色彩表示、数据存储以及应用场景等方面有着显著的区别。理解这两者的差异有助于更好地进行图像处理与分析。
二、理解彩色与灰度图像
2.1 RGB三通道彩色图像 定义RGB图像由红Red、绿Green、蓝Blue三个颜色通道组成。每个像素的颜色通过这三个通道的不同强度组合来表示。每个通道通常是一个8位的整数取值范围为0到255。 色彩表示 每个像素点由三个数值R, G, B组成分别对应红色、绿色和蓝色的强度。这种模式允许表示超过1600万种不同的颜色(256^3)从而可以精确地再现自然界的大多数颜色。 应用场景适用于需要高保真度色彩再现的应用场景如照片编辑、影视制作、游戏开发等。
2.2 单通道灰度图像 定义灰度图像仅包含一个通道用来表示亮度信息。每个像素的值代表该点的亮度级别范围通常是0黑色到255白色中间值则表示不同深浅的灰色。 色彩表示 因为只有一个通道所以每个像素只需要一个数值来表示其亮度。尽管只能显示从黑到白的不同灰度级但这种简化有时对于特定任务来说已经足够并且能减少计算复杂度和存储需求。 应用场景常用于文本识别、边缘检测、医学影像分析等领域在这些领域中颜色信息并非关键因素而对比度和亮度的变化更为重要。
2.3 区别总结 信息量 RGB图像包含了更多的信息每个像素3个值能够表达丰富的色彩。灰度图像每个像素只有1个值信息量较少但足以描述图像的亮度分布。 存储空间 RGB图像占用的空间大约是灰度图像的三倍因为需要存储三个通道的数据。 处理速度 处理灰度图像通常比处理RGB图像更快因为它涉及的数据量较小。 用途 RGB图像适合于那些依赖色彩区分的任务比如物体识别、场景分类等。灰度图像更适合于那些基于形状或纹理特征的任务例如文档扫描、X光片分析等。 转换关系 可以通过一定的算法将RGB图像转换为灰度图像常用的方法之一是加权平均法即根据人眼对不同颜色敏感度的不同给RGB分量赋予不同的权重来计算灰度值。例如常用的公式为Gray 0.299*R 0.587*G 0.114*B。
三、图像的读取框架
Python 生态中有三大主流图像处理库各有适用场景
3.1 Matplotlib
Matplotlib 是一个强大的数据可视化工具它模仿了 Matlab 的绘图功能。虽然它没有内置的图像处理功能如旋转、滤波需手动实现。但可以方便地与 科学计算库NumPy 结合使用来进行图像操作。
from matplotlib import pyplot as plt
import numpy as np
# 读取为 [H, W, C] 的 NumPy 数组RGB
img plt.imread(哪吒.jpeg)
H, W, C img.shape
print(img.shape) # 输出(2160, 3840, 3)
# 显示图像
plt.imshow(img)
# 保存图像
plt.imsave(哪吒output.jpeg, img) # 提取红色通道并显示为灰度图
img_r img[:, :, 0]
plt.imshow(img_r, cmapgray)# 下采样每4像素取1个
plt.imshow(img[::4, ::4, :])从尺度上看图像的像素点少了 4 分之 1
# 截取左上角 1/4 图像
plt.imshow(img[:H//2, :W//2, :])3.2 OpenCV
OpenCV 是计算机视觉领域的金标准库功能全面覆盖图像处理、视频分析、实时摄像头捕获底层为 C 实现Python 通过 cv2 模块调用支持特征检测、目标跟踪、AR 等高级功能。
通过 pip install opencv-python 即可安装。
import cv2# 读取图像
# 读取为 [H, W, C] 的 BGR 格式数组
img cv2.imread(filename哪吒.jpeg)
print(img.shape) # 注意OpenCV默认读取为BGR格式
# 显示图像
cv2.imshow(winname Window, matimg)
# 等待按键
cv2.waitKey(delay0)
# 关闭窗口
cv2.destroyAllWindows() 使用 OpenCV 库从摄像头捕获视频流并在窗口中实时显示每一帧直到用户按下 ESC 键退出 # 视频读取示例
# 创建一个 VideoCapture 对象参数 0 表示使用第一个可用的摄像头笔记本内置摄像头或连接的第一个外置摄像头。如果你有多个摄像头可以通过改变这个数字来选择不同的设备如第二个摄像头可以使用 1。
cap cv2.VideoCapture(0)
# 开始一个无限循环用于持续读取和处理视频帧直到满足特定条件退出循环。
while True:# 读取帧# cap.read(): 从摄像头读取下一帧。此方法返回两个值# status: 布尔值表示是否成功读取了帧。如果为 True则表示成功读取如果为 False则表示读取失败。# frame: 当前捕获的帧通常是一个 NumPy 数组包含图像数据。status, frame cap.read()if not status: break# 显示帧# 在名为 demo 的窗口中显示当前帧 frame# 每次调用此函数都会更新窗口中的图像。cv2.imshow(winnamedemo, matframe)# 按 ESC 退出# 等待按键事件。参数 delay 指定了等待的时间以毫秒为单位。# 这里设置为 1000 // 24即大约每秒24帧的速度模拟电影的帧率这意味着每帧之间会有短暂的延迟。# 如果检测到按下了 ESC 键ASCII码为27则跳出循环并结束程序。if cv2.waitKey(delay1000 // 24) 27: break
# 释放摄像头资源确保摄像头不再被占用以便其他应用程序可以访问它。
cap.release()
# 关闭所有由 OpenCV 创建的窗口释放相关资源。
cv2.destroyAllWindows()3.3 PIL
PIL (Python Imaging Library) 轻量级图像处理 是专门用于图像处理的 Python 库Python 内置库适合简单编辑与格式转换。易于使用且能无缝衔接 PyTorch。
from PIL import Imageimg Image.open(哪吒.jpeg) # 读取为 PIL.Image 对象
print(img.size, img.width) # 输出 (3840, 2160) 3840
img.resize((100, 100)) # 调整尺寸
img.rotate(-20) # 旋转
img.convert(L) # 转灰度图
np.array(img).shape
img.save(fp哪吒2.jpeg) # 保存