OpenCV读取与显示图像:从基础代码到多图显示技巧

发布时间:2026/10/23 6:39:08

OpenCV读取与显示图像:从基础代码到多图显示技巧 在OpenCV的学习中图像的读取与显示是最基础也是最关键的操作。就像盖房子需要打好地基一样掌握好图像的读取和显示能为后续更复杂的图像处理操作奠定坚实的基础。接下来我们就一起深入学习如何使用OpenCV进行图像的读取和显示以及多图显示的技巧。实操模块使用OpenCV读取和显示单张图像代码实现下面是使用Python和OpenCV实现图像读取和显示的基础代码importcv2# 读取图像imagecv2.imread(example.jpg)# 检查图像是否成功读取ifimageisNone:print(图像读取失败请检查图像路径是否正确。)else:# 显示图像cv2.imshow(Image,image)# 等待按键事件cv2.waitKey(0)# 关闭所有窗口cv2.destroyAllWindows()代码解释cv2.imread(example.jpg)这行代码的作用是读取指定路径下的图像文件。cv2.imread函数会返回一个表示图像的NumPy数组如果读取失败则返回None。cv2.imshow(Image, image)这行代码用于显示图像。cv2.imshow函数接受两个参数第一个参数是显示窗口的标题第二个参数是要显示的图像。cv2.waitKey(0)这行代码会让程序暂停等待用户按下任意按键。参数0表示无限等待直到用户按键。cv2.destroyAllWindows()这行代码用于关闭所有由OpenCV创建的显示窗口。常见问题及解决方法图像读取失败如果图像读取失败可能是图像路径不正确或者图像文件损坏。可以检查图像路径是否正确或者尝试打开其他图像文件。显示窗口异常如果显示窗口没有正常显示图像或者显示异常可以检查OpenCV版本是否兼容或者尝试更新OpenCV库。实操模块OpenCV多图显示及布局调整多图显示的基本原理在实际应用中我们可能需要同时显示多张图像。OpenCV并没有直接提供多图显示的函数但我们可以通过创建多个显示窗口或者将多张图像拼接成一张图像来实现多图显示。多窗口显示方法下面是使用多个窗口显示多张图像的代码示例importcv2# 读取图像image1cv2.imread(example1.jpg)image2cv2.imread(example2.jpg)# 检查图像是否成功读取ifimage1isNoneorimage2isNone:print(图像读取失败请检查图像路径是否正确。)else:# 显示图像cv2.imshow(Image 1,image1)cv2.imshow(Image 2,image2)# 等待按键事件cv2.waitKey(0)# 关闭所有窗口cv2.destroyAllWindows()图像拼接显示方法除了使用多个窗口显示多张图像我们还可以将多张图像拼接成一张图像进行显示。下面是将两张图像水平拼接的代码示例importcv2importnumpyasnp# 读取图像image1cv2.imread(example1.jpg)image2cv2.imread(example2.jpg)# 检查图像是否成功读取ifimage1isNoneorimage2isNone:print(图像读取失败请检查图像路径是否正确。)else:# 调整图像大小确保两张图像高度一致heightmin(image1.shape[0],image2.shape[0])image1cv2.resize(image1,(int(image1.shape[1]*height/image1.shape[0]),height))image2cv2.resize(image2,(int(image2.shape[1]*height/image2.shape[0]),height))# 水平拼接图像combined_imagenp.hstack((image1,image2))# 显示拼接后的图像cv2.imshow(Combined Image,combined_image)# 等待按键事件cv2.waitKey(0)# 关闭所有窗口cv2.destroyAllWindows()代码解释np.hstack((image1, image2))这行代码使用NumPy的hstack函数将两张图像水平拼接成一张图像。cv2.resize在拼接图像之前我们需要确保两张图像的高度一致因此使用cv2.resize函数调整图像大小。布局调整技巧在进行多图显示时我们可以根据需要调整图像的布局。例如我们可以将多张图像排列成网格状或者根据图像的重要性调整图像的大小和位置。核心技术点总结通过上面的学习我们掌握了使用OpenCV读取和显示单张及多张图像的方法。核心技术点包括使用cv2.imread函数读取图像。使用cv2.imshow函数显示图像。使用多个窗口或者图像拼接的方法实现多图显示。小节总结通过本小节的学习我们学会了使用OpenCV读取和显示单张及多张图像的方法掌握了多图显示的布局调整技巧同时也解决了图像读取失败、显示窗口异常等常见问题。这些知识对于我们后续进行更复杂的图像处理操作非常重要。掌握了OpenCV图像读取和显示的内容后下一节我们将深入学习OpenCV的图像基本操作进一步完善对本章OpenCV基础入门主题的认知。 系列专栏导航 专栏导航 深入浅出OpenCV其他专栏衔接 《若依框架全攻略从入门到项目实战》 《深入浅出Mybatis》 全面掌握MySQL工具 《深入浅出Maven》 《深入浅出Kafka》 《全面掌握Swagger从入门到实战》 《Lombok高效Java开发的秘密武器完全解读》 博客概览《程序员技术成长导航专栏汇总》建议按系列顺序阅读从基础到进阶逐步掌握核心能力避免遗漏关键知识点全景导航博文系列《一口气学完fastJson》《一文搞懂PageHelper》《一文搞懂MyBatis》
延伸阅读

更多相关文章

2026/10/23 6:39:08

虚拟化与 KVM 实战:拆解云计算底层基石

虚拟化与 KVM 实战:拆解云计算底层基石摘要:我们日常使用的公有云 ECS、私有云平台,底层核心都离不开虚拟化技术。很多初学云计算的同学,容易混淆存储架构、虚拟化类型、KVM/QEMU/Libvirt 组件关系。本文结合 PDF 文档资料&#x…

2026/10/23 6:39:08

DeepInfer 昇腾适配与计算架构分析

完整交互版:https://besproma.github.io/deepinfer-ascend-analysis/ 代码快照:774ce24 分析日期:2026-10-21 分析范围:并行调度、模型级优化、昇腾适配、芯片内数据流、源码证据与公开性能数据 DeepInfer 是 DeepSeek 面向 DeepS…

2026/10/23 9:49:48

.Net Core 2.1 JWT身份认证实战:从Token生成到问题排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/23 9:49:48

【c++】c语言入门到c++使用高手: c语言入门之指针(三)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/23 9:49:48

【c++】c语言入门到c++使用高手: c语言入门之指针(一)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/23 9:49:48

Windows Server 2008 IIS SSL证书安装与TLS调优实战

1. 先搞明白:为什么在老系统上装证书比新系统费劲干运维这行的,多少都会碰到一台跑着 Windows Server 2008 的老机器,上面挂着 IIS,业务还活着,老板一句"网站要上 HTTPS",活儿就落到你头上。Wind…

2026/10/23 9:49:48

Dify批量处理实战:从重复劳动到高效工作流维护

做工作流开发的人大概都有过这种体验:一个业务场景跑通之后,紧接着就是无穷无尽的重复劳动——同样的节点配置要在十几个工作流里各改一遍,同样的变量名要挨个核对,同样的模型参数要逐个调整。单条流程调试的时候还好,…

2026/10/23 9:44:47

港口存量摄像头零成本实现跨镜追踪与无感管控

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/23 0:02:26

Verilog实现FPGA密码锁:矩阵键盘与状态机设计实战

说实话,这几年接触了不少想入门FPGA的朋友,如果你问哪个项目能一口气把Verilog的核心基本功串起来,我通常会推荐电子密码锁。这个项目看着不起眼,却把矩阵键盘扫描、按键消抖、状态机设计、动态显示刷新、外设控制这些数字逻辑里的…

2026/10/23 0:02:26

数据服务监控运维实战:从指标体系到告警治理与故障排查

周末凌晨两点,手机震了。第一反应是“数据服务挂了”。打开电脑看了下,果然,某张核心报表的数据产出时间已经超过SLA两小时,下游三个业务方连着发来问询。这种场景,做过大数据运维的人都不会陌生。数据服务的监控与运维…

2026/10/23 0:02:26

FreeRTOS任务通知实战详解:内核原理、API与避坑指南

裸机编程切到RTOS之后,任务之间的通信和同步永远是躲不开的坎。前面聊过队列、信号量、互斥锁、事件组,这次把FreeRTOS任务通知(Task Notification)单独拎出来讲透。原因很简单:任务通知是FreeRTOS里最容易用错、也最容…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑