当前位置: 首页 > news >正文

OpenCV(二):加载图片

核心函数:cv2.imread()

从文件中读取(加载)图像到一个 NumPy 数组 中。
该数组是 OpenCV 的图像基本表示形式(即 cv2.Mat 在 Python 中对应 numpy.ndarray)。

函数定义

cv2.imread(filename, flags=cv2.IMREAD_COLOR)

参数详解

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

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:加载彩色图像(默认方式)

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:加载灰度图像

import cv2gray = 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)

import cv2img = 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:读取图像并缩小加载(节省内存)

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:错误处理(路径错误)

import cv2
import ospath = "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()支持中文路径
http://www.dtcms.com/a/453519.html

相关文章:

  • 免费的网站推广怎么做效果好服务营销策划方案
  • 【征文计划】Rokid 语音唤醒技术深度解析:从声学模型到低功耗优化实践
  • Linux---进程信号
  • 从汽车传动到航空航天:滚珠花键的跨领域精密革命
  • 电子电气架构 --- 汽车座舱市场发展核心方向
  • leetcode 69.x的平方根
  • 网站建设策划方案书论文免费seo诊断
  • 【密码学实战】openHiTLS keymgmt命令行:密钥管理工具
  • 网站上线倒计时html5模板企业培训机构有哪些
  • 中型规模生产架构部署详细步骤
  • 如何加强英文网站建设重庆网站建设的公司哪家好
  • 逆向分析文档:基于 app.endata.com.cn 票房数据接口的加密与解密流程
  • 为什么做腾讯网站如何压缩网站
  • 吴恩达机器学习课程(PyTorch适配)学习笔记:1.1 基础模型与数学原理
  • 【全志V821_FoxPi】6-1 MIPI协议与MIPI摄像头
  • 【防火墙源码】WordPress防火墙插件1.0测试版
  • 全国美容网站建设房源信息网
  • CentOS 7 环境下 MySQL 5.7 深度指南:从安装、配置到基础 SQL 操作
  • ⚡ arm 32位嵌入式 Linux 系统移植 NTP 服务
  • 抖音,小红书等自媒体平台多开账号如何操作不违规
  • [Java]PTA: jmu-Java-03面向对象基础-Object
  • 【大模型实战篇】基于xiaohongshu-mcp实现对话模式的小红书笔记操作
  • LangChain详解(一)
  • 门户网站建设需求wordpress云主机
  • 【OpenArm|Control】openarm机械臂ROS2仿真控制
  • 网站开发小组百度网页制作网站建设
  • 中小型项目组织架构和职能说明
  • wordpress发表文章更新失败网站标题优化工具
  • C++网络编程(五)socket编程---从socket()到connect()
  • 23-25年总结:23年因为大模型而转型科技,24年起发力具身,25年长沙具身开始一轮轮突飞猛进