import numpy as np
import cv2
1.2.1 读取图像
retval = cv2.imread( filename[, flags] )
- retval 是返回值,其值是读取到的图像。如果未读取到图像,则返回“None”.
- filename 表示要读取的图像的完整文件名。
- flags 是读取标记。该标记用来控制读取文件的类型,具体如表 1-1 所示。表 1-1 中的第一列参数与第三列数值是等价的。例如 cv2. IMREAD_UNCHANGED=−1,在设置参数 时,既可以使用第一列的参数值,也可以采用第三列的数值。
lena = cv2.imread("/Users/zhaofeier/Desktop/lenna.bmp")
print(lena)
1.2.2 显示图像
1. namedWindow函数
函数 cv2.namedWindow()用来创建指定名称的窗口,其语法格式为:
None = cv2.namedWindow( winname )
式中,winname 是要创建的窗口的名称。 例如,下列语句会创建一个名为 lesson 的窗口: cv2.namedWindow(“lesson”)
2. imshow函数
函数 cv2.imshow()用来显示图像,其语法格式为:
None = cv2.imshow( winname, mat )
式中:
- winname 是窗口名称。
- mat 是要显示的图像。
cv2.namedWindow("lesson")
cv2.imshow("lesson",lena)
3. waitKey函数
函数 cv2.waitKey()用来等待按键,当用户按下键盘后,该语句会被执行,并获取返回值。 其语法格式为:
retval = cv2.waitKey( [delay] )
式中:
- retval 表示返回值。如果没有按键被按下,则返回−1;如果有按键被按下,则返回该按 键的 ASCII 码。
- delay 表示等待键盘触发的时间,单位是 ms。当该值是负数或者零时,表示无限等待。 该值默认为 0。
import cv2
lena = cv2.imread("/Users/zhaofeier/Desktop/lenna.bmp")
cv2.imshow("lesson",lena)
key = cv2.waitKey()
if key == ord('A'):
cv2.imshow("PressA",lena)
elif key == ord('B'):
cv2.imshow("PressB",lena)
elif key != -1:
print("触发了按键")
- 如果按下的是键盘上的 A 键,则新出现的窗口名称为 PressA
- 如果按下的是键盘上的 B 键,则新出现的窗口名称为 PressB
4. destroyWindow函数
函数 cv2.destroyWindow()用来释放(销毁)指定窗口,其语法格式为:
None = cv2.destroyWindow( winname )
其中,winname 是窗口的名称。
import cv2
lena = cv2.imread("/Users/zhaofeier/Desktop/lenna.bmp")
cv2.imshow("lesson",lena)
cv2.waitKey()
cv2.destroyWindow("lesson")
运行上述程序,首先会在一个名为 demo 的窗口内显示 lena.bmp 图像。在程序运行的过程 中,当未按下键盘上的按键时,程序没有新的状态出现;当按下键盘上的任意一个按键后,窗 口 demo 会被释放。
5.destroyAllWindows函数
函数 cv2.destroyAllWindows()用来释放(销毁)所有窗口,其语法格式为:
None = cv2.destroyAllWindows( )
import cv2
lena = cv2.imread("/Users/zhaofeier/Desktop/lenna.bmp")
cv2.imshow("demo1", lena )
cv2.imshow("demo2", lena )
cv2.waitKey()
cv2.destroyAllWindows()
运行上述程序,会分别出现名称为 demo1 和 demo2 的窗口,在两个窗口中显示的都是 lena.bmp 图像。在未按下键盘上的按键时,程序没有新的状态出现;当按下键盘上的任意一个 按键后,两个窗口都会被释放
1.2.3 保存图像
OpenCV 提供了函数 cv2.imwrite(),用来保存图像,该函数的语法格式为:
retval = cv2.imwrite( filename, img[, params] )
式中:
- retval 是返回值。如果保存成功,则返回逻辑值真(True);如果保存不成功,则返回逻 辑值假(False)。
- filename 是要保存的目标文件的完整路径名,包含文件扩展名。
- img 是被保存图像的名称。
- params 是保存类型参数,是可选的。
import cv2
lena = cv2.imread("/Users/zhaofeier/Desktop/lenna.bmp")
r = cv2.imwrite("result.bmp",lena)