OpenCV学习之cv2.imshow()函数
一、简介
cv2.imshow
是 OpenCV 库中用于显示图像的基本函数之一。在图像处理和计算机视觉的过程中,使用该函数可以快速预览处理后的图像,便于调试和结果展示。
二、基本语法
cv2.imshow('WindowName', Imgmat)
三、参数说明
WindowName
(str): 窗口名称,用于唯一标识一个窗口。Imgmat
(numpy.ndarray): 要显示的图像,通常是一个 numpy 数组。- ⚠️⚠️⚠️❗❗❗一定要注意该处的图像数据
不能是浮点数
像素值,否则imshow函数将进行数据截断
将大于1的数都截断位1
,导致图像显示错误。 - 为什么要提这个?这是因为我们做图像处理经常会转换成浮点数进行计算
- ⚠️⚠️⚠️❗❗❗一定要注意该处的图像数据
四、示例
示例 1: 显示一张图像
import cv2
# 读取图像,读者需更改路径
image = cv2.imread('2015.jpg')
# 显示图像
cv2.imshow('Image Window', image)
# 等待用户按键(这里的 0 表示无限等待)
cv2.waitKey(0)
# 销毁所有窗口
cv2.destroyAllWindows()
示例 2: 错误显示一张图像
import cv2
import numpy as np
# 读取图像,读者需更改路径
image = cv2.imread('2015.jpg')
# 显示图像,这里会显示很奇怪,因为发生了数据截断,在参数说明部分已经做了说明
cv2.imshow('Image Window', image.astype(np.float64))
# 等待用户按键(这里的 0 表示无限等待)
cv2.waitKey(0)
# 销毁所有窗口
cv2.destroyAllWindows()
示例 3: 实时显示视频帧
import cv2
# 打开摄像头
cap = cv2.VideoCapture(0)
while True:
# 逐帧捕获
ret, frame = cap.read()
# 显示帧
cv2.imshow('Video Frame', frame)
# 按下 'q' 键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头
cap.release()
# 销毁所有窗口
cv2.destroyAllWindows()
五、非常实用的显示技巧
示例 1: 横向同时显示多张图片(横向拼接)
cv2.imshow('Image Window', np.hstack((image,image)))
示例 2: 纵向同时显示多张图片(纵向拼接)
cv2.imshow('Image Window', np.vstack((image,image)))
示例 3: 以矩阵形式同时显示多张图片(双向拼接)
cv2.imshow('Image Window', np.vstack((np.hstack((image,image)),np.hstack((image,image)))))