You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用OpenCV在同一屏幕同时显示多张图片?

解决OpenCV同时显示多张图片仅显示最后一张的问题

你的代码逻辑本身没问题,但出现这种情况通常是两个原因:窗口重叠覆盖,或者图片读取失败。以下是具体的解决方法:

1. 先确认图片是否成功加载

如果cv2.imread读取失败(比如路径错误、文件损坏),对应的窗口会无法正常显示。先加判断确保图片加载成功:

import cv2

# 读取图片并检查是否成功
img = cv2.imread('img1.png')
img2 = cv2.imread('img2.png')

if img is None:
    print("无法加载img1.png,请检查路径或文件")
if img2 is None:
    print("无法加载img2.png,请检查路径或文件")

2. 手动设置窗口位置,避免重叠

默认情况下,OpenCV的窗口会在同一个位置弹出,后面的窗口会覆盖前面的。用cv2.moveWindow()把窗口移到不同位置:

# 显示图片
cv2.imshow('Image 1', img)
cv2.imshow('Image 2', img2)

# 移动窗口:参数分别是窗口名、x坐标、y坐标
cv2.moveWindow('Image 1', 100, 100)
cv2.moveWindow('Image 2', 400, 100)

# 等待按键后关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

3. 补充:强制刷新窗口(部分系统需要)

在某些桌面环境下,窗口可能需要触发事件循环才能完成渲染。可以在imshow后加一句cv2.waitKey(1)(等待1毫秒,不影响用户操作),确保窗口正常绘制:

cv2.imshow('Image 1', img)
cv2.waitKey(1)  # 触发窗口渲染
cv2.imshow('Image 2', img2)
cv2.waitKey(1)

cv2.moveWindow('Image 1', 100, 100)
cv2.moveWindow('Image 2', 400, 100)

cv2.waitKey(0)
cv2.destroyAllWindows()

这样修改后,两张图片就会分别在屏幕的不同位置同时显示了。

内容的提问来源于stack exchange,提问作者Daniele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 18:52:10