OpenCV | 图像处理基本操作

在图像处理过程中,读取图像、显示图像、保存图像是最基本的操作。下面将简单介绍这几项基本操作。

1.1读取图像

使用函数cv2.imread()来读取图像,该函数支持各种静态图像格式。

retval = cv2.imread(filename[,flags])
  • retval的值是读取到的图像,若未读取到则返回None
  • filename表示图像的完整文件名
  • flags是读取标记

flags标记可取值,其中第一列和第三列都可作为标记值

OpenCV | 图像处理基本操作插图

例1-读取当前目录下名为rhz.png的图像,并保持原有格式读入

import cv2

rhz = cv2.imread("rhz.png",-1)

print(rhz)

运行程序后,会输出图像的像素值,如图1-1所示。

OpenCV | 图像处理基本操作插图1
图1-1图像部分像素值

1.2 显示图像

OpenCV中有多个与显示有关的函数

1.namedWindow函数

函数cv2.namedWindow()用来创建指定名称的窗口

#Test = cv2.namedWindow("窗口名字")

cv2.namedWindow("窗口1")

2.imshow函数

函数cv2.imshow()用来显示图像

Test = cv2.imshow("窗口名字",要显示的图像)

例2-创建一个窗口并在其中显示读取的图像

import cv2
#读取图像
test = cv2.imread("rhz.jpg")
#创建窗口
cv2.namedWindow("窗口1")
#显示图像
cv2.imshow("窗口1",test)

3.waitKey函数

函数cv2.waitKey()用来等待按键,当用户按下键盘后,该语句会被执行,并获取返回值。

#retval表示返回值,若按键未被按下,则返回-1;若按下,则返回按键的ASCII码值
#delay time表示等待按键触发的时间(ms),当该值为负或者0,表示无限等待,默认值为0,只有事件触发后才执行后续代码

retval = cv2.waitKey([delay time])

通过将返回值与ASCII码值进行比较,就可以确定是否按下了某个特定的键。

Python提供了函数ord(),用来获取字符的ASCII码值。

if cv2.waitKey()==ord('A'):
      #如果按下"A",则响应

例1-3 在一个窗口内显示图像,并针对按键响应不同事件

import cv2
test = cv2.imread("rhz.jpg")
cv2.imshow("xxx",test)
key = cv2.waitKey()
if key == ord("A"):
    cv2.imshow("A被按下-新的窗口名A",test)
elif key == ord("B"):
    cv2.imshow("B被按下-新的窗口名B",test)

4.destroyWindow函数

函数cv2.destroyWindow()用来释放(销毁)指定窗口

None = cv2.destroyWindow("窗口名字")

例1-4 按下按键"A“释放窗口

import cv2
test = cv2.imread("rhz.jpg")
cv2.imshow("xxx",test)
key = cv2.waitKey()
if key == ord("A"):
    cv2.destroyWindow("xxx")

运行上述程序,首先会在一个名为XXX的窗口内显示rhz.jpg图像。在程序运行的过程中,当未按下键盘上的按键时,程序没有新的状态出现;当按下键盘上的按键"A"后,窗口XXX会被释放。

5.destroyAllWindows函数

函数cv2.destroyAllWindows()用来释放(销毁)所有窗口

None = cv2.destroyALLWindows()

例1-5 按下按键A展示第一张图片,按下按键B展示第二张图片,按下按键C,使用函数cv2.destroyAllWindows()释放所有窗口

import cv2
test = cv2.imread("rhz.jpg")
cv2.imshow("xxx0",test)
while(1):
    key = cv2.waitKey()
    if key == ord("A"):
        cv2.imshow("xxx1",test)
    elif key == ord("B"):
        cv2.imshow("xxx2",test)
    elif key == ord("C"):
        cv2.destroyAllWindows()

1.3 保存图像

使用函数cv2.imwrite(),用来保存图像

#函数返回的是布尔值,True表示保存成功,False为失败
#filename保存的目标文件的完整路径,包含文件扩展名
#img是保存图像的名字
#params保存类型参数,可选
test = cv2.imwrite(filename,img[,params])

例1-6 读取的图像以名称1.png保存到当前目录下

import cv2
#读取图像,生成副本图像test
test = cv2.imread("rhz.jpg")
#保存图像
r = cv2.imwrite("1.png",test)
OpenCV | 图像处理基本操作插图2

版权声明:
作者:RHZ
链接:https://www.rhzhz.cn/?p=1156
来源:RHZ | 用文字记录工作和学习生活
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
OpenCV | 图像处理基本操作
在图像处理过程中,读取图像、显示图像、保存图像是最基本的操作。下面将简单介绍这几项基本操作。 1.1读取图像 使用函数cv2.imread()来读取图像,该函……
<<上一篇
下一篇>>