OpenCV(二):加载图片

核心函数:cv2.imread()

从文件中读取(加载)图像到一个 NumPy 数组 中。

该数组是 OpenCV 的图像基本表示形式(即 cv2.Mat 在 Python 中对应 numpy.ndarray)。

函数定义

复制代码
cv2.imread(filename, flags=cv2.IMREAD_COLOR)

参数详解

参数名 类型 说明
filename str 图像文件路径,可以是绝对路径或相对路径
flags int 指定加载方式(见下表)

flags 参数选项(图像加载模式)

模式常量 说明
cv2.IMREAD_COLOR 以彩色模式加载图像(默认值),忽略透明度通道(即读取 BGR 三通道)。
cv2.IMREAD_GRAYSCALE 以灰度模式加载图像(单通道)。
cv2.IMREAD_UNCHANGED 保留图像的原始通道,包括 alpha 通道(如 PNG 的透明度)。
cv2.IMREAD_ANYDEPTH 如果图像是 16 位或 32 位,则以相应的深度加载。
cv2.IMREAD_ANYCOLOR 以任意颜色类型加载图像。
cv2.IMREAD_REDUCED_COLOR_2 以 1/2 尺寸读取彩色图像(加快读取速度)。
cv2.IMREAD_REDUCED_COLOR_4 以 1/4 尺寸读取彩色图像。
cv2.IMREAD_REDUCED_COLOR_8 以 1/8 尺寸读取彩色图像。
cv2.IMREAD_REDUCED_GRAYSCALE_2 以 1/2 尺寸读取灰度图像。
cv2.IMREAD_REDUCED_GRAYSCALE_4 以 1/4 尺寸读取灰度图像。
cv2.IMREAD_REDUCED_GRAYSCALE_8 以 1/8 尺寸读取灰度图像。

返回值

返回一个 numpy.ndarray:

  • 彩色图像 → 3 通道矩阵 (B, G, R)
  • 灰度图像 → 单通道矩阵
  • 失败时返回 None

示例

示例 1:加载彩色图像(默认方式)

python 复制代码
import cv2

# 读取彩色图像
img = cv2.imread("test.jpg", cv2.IMREAD_COLOR)

# 判断是否读取成功
if img is None:
    print("无法加载图像,请检查路径或文件名。")
else:
    print("图像加载成功,尺寸:", img.shape)
    cv2.imshow("Color Image", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

示例 2:加载灰度图像

python 复制代码
import cv2

gray = cv2.imread("test.jpg", cv2.IMREAD_GRAYSCALE)
print("灰度图像尺寸:", gray.shape)

cv2.imshow("Gray Image", gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

注意:灰度图像只有一个通道(shape 类似 (height, width))

示例 3:加载带透明通道的图像(如 PNG)

python 复制代码
import cv2

img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)
print("图像通道数:", img.shape[2] if len(img.shape) == 3 else 1)

cv2.imshow("With Alpha", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

若文件包含透明通道,则 shape 会是 (H, W, 4)(B, G, R, A)

示例 4:读取图像并缩小加载(节省内存)

python 复制代码
import cv2

# 以 1/4 尺寸读取
img_small = cv2.imread("test.jpg", cv2.IMREAD_REDUCED_COLOR_4)

cv2.imshow("Reduced Image", img_small)
cv2.waitKey(0)
cv2.destroyAllWindows()

在处理大图片(例如 8K 或超大卫星图)时,这种模式能显著节省内存。

示例 5:错误处理(路径错误)

python 复制代码
import cv2
import os

path = "not_exist.jpg"
img = cv2.imread(path)

if img is None:
    print(f"图像 {path} 加载失败,请检查路径或文件格式。")
else:
    print("图像加载成功。")

总结

功能 函数 示例
加载彩色图像 cv2.imread(path, cv2.IMREAD_COLOR) 彩色图像(默认)
加载灰度图像 cv2.imread(path, cv2.IMREAD_GRAYSCALE) 灰度化处理
加载含透明通道 cv2.imread(path, cv2.IMREAD_UNCHANGED) 保留 alpha
缩放加载 cv2.imread(path, cv2.IMREAD_REDUCED_COLOR_4) 加快速度
检查加载失败 if img is None: 检测是否成功
中文路径加载 np.fromfile() + cv2.imdecode() 支持中文路径
相关推荐
IT_陈寒3 分钟前
JavaScript的闭包陷阱,这个坑我躺了三天才爬出来
前端·人工智能·后端
北京中科新远科技15 分钟前
兼容光模块上线前怎么测:识别、DOM、误码与批次回归清单
人工智能·数据挖掘·回归
RockHopper202517 分钟前
统一目的的分布式智能体 vs 多个独立应用智能体的集成
人工智能·系统架构·智能体·agent 工程
桃西西呀22 分钟前
饭桌上又卡壳了?我用 TRAE 写了个嘴替鸭,把回话提前备好
人工智能·llm·ai编程
袋鼠云数栈23 分钟前
让 SQL 解析不再重复造轮子:SqlParserX 正式开源
数据库·人工智能·sql·开源·数据治理
kyriewen28 分钟前
我让 AI 当候选人面了一轮:居然一个问题都没问倒它
人工智能·程序员·ai编程
月与清酒35 分钟前
2026年10月AI大模型全景对比:GPT-6、Claude 5.5、Gemini 4、DeepSeek V4.1到底差在哪
人工智能·gpt·ai
来自于狂人42 分钟前
AI前沿速递|AI自己“进化“操作界面干翻GPT-5.5!8B“流体模型“提速2.54倍,清华让Agent学会“收拾记忆“成本直降28%
人工智能·gpt
科技看点说1 小时前
AI画面不廉价:质感的三层来源详解
人工智能
秦先生在广东1 小时前
Agentic Awesome Skills 解析:构建本地优先的 Agent 技能控制平面
人工智能