【OpenCV】P2 程序加载显示图片

发布时间:2024年01月24日

Opencv 中,如果想要加载展示一张图片,有以下几个步骤:

  1. 读取图像:根据指定路径读取图像,将图像转化为数字矩阵形式;
  2. 创建窗口:创建图像显示窗口,命名窗口名称;
  3. 显示图像:通过窗口以数字矩阵形式展示图像;
  4. 释放内存:展示完成,释放内存。

四个步骤

读取图像

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
版本:第三版
如有任何问题,请留言或私信,感谢!

文章来源:https://blog.csdn.net/weixin_43098506/article/details/135764007
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。