在 Opencv 中,如果想要加载展示一张图片,有以下几个步骤:
OpenCV 提供函数 cv2.imread()
读取图像,该函数的一般形式如下:
image_arr = cv2.imread(filename, flags)
filename
:要读取的图像文件路径;flags
:可选参数,用于指定如何读取图像:
cv2.IMREAD_COLOR
:默认值,读取 RGB 三通道图像;cv2.IMREAD_GRAYSCALE
:读取图像,并调整为单通道灰度图像;cv2.IMREAD_UNCHANGED
:读取图像,保持原始所有通道信息;读取图像后,将以数字矩阵的形式保存在内存中 image_arr
变量中。这个数字矩阵包含了图像的像素信息,可以进行各种图像处理和分析操作,比如后续博文会介绍到图像转换、滤波、边缘检测等。
e . g . c o d e . e.g.code. e.g.code. 读取一张图像以及其灰度图矩阵信息:
import cv2
image_arr_1 = cv2.imread("universe.jpg")
image_arr_2 = cv2.imread("universe.jpg", cv2.IMREAD_GRAYSCALE)
print("原图矩阵为:", image_arr_1)
print("灰度图矩阵为:", image_arr_2)
OpenCV 提供函数 cv2.namedWindow()
来创建一个展示窗口并赋予名称,该函数的一般形式如下:
cv2.namedWindow('WindowName', WindowSize)
WindowName
:指定窗口名称;WindowSize
:可选参数,指定窗口大小:
WINDOW_AUTOSIZE
: 默认值,窗口大小自适应内容;WINDOW_NORMAL
: 窗口正常显示,用户可以调整窗口大小;WINDOW_KEEPRATIO
: 保持图像的宽高比;创建窗口后,我们将在显示图像时使用该窗口进行展示;
e . g . c o d e e.g.code e.g.code
# 创建一个名为 "MyWindow" 的窗口,用户可以调整窗口大小
cv2.namedWindow('MyWindow', cv2.WINDOW_NORMAL)
OpenCV 提供的 imshow()
函数用来显示图像。该函数接受两个参数,第一个参数为窗口名称,第二个参数为要显示的图像数字矩阵。
到此,理论上我们已经可以打开一个名为 Image Of Universe 的窗口并展示我们的图像 universe.jpg,但是我们还缺少两行代码;
import cv2
# 读取图像
image_arr = cv2.imread('universe.jpg', cv2.IMREAD_COLOR)
# 创建展示窗口
cv2.namedWindow("Image Of Universe", cv2.WINDOW_NORMAL)
# 展示图像
cv2.imshow('Image Of Universe', image_arr)
# 未完待续
# 缺少设定窗口展示时间
# 缺少释放内存资源代码
首先,缺少设定窗口展示时间。Opencv 规定,需要设定窗口展示的时间,否则将会一闪而过。设定函数为 waitKey
,单位为毫秒;
cv2.waitKey(1000) # 代表窗口展示时间为1s
cv2.waitKey(0) # 窗口将一直展示
最后,展示完成后,通过函数 destoryAllWindows()
释放内存;
cv2.destoryAllWindows()
综上,完整代码如下:
import cv2
image_arr = cv2.imread('universe.jpg', cv2.IMREAD_COLOR)
cv2.namedWindow("Image Of Universe", cv2.WINDOW_NORMAL)
cv2.imshow('Image Of Universe', image_arr)
key = cv2.waitKey(0)
if key == ord('q'):
print("退出展示窗口")
cv2.destroyAllWindows()
定稿:2024/1/24
版本:第三版
如有任何问题,请留言或私信,感谢!