import cv2
import numpy as np
"""
图像灰度化,图像保存,按键事件
1.读取本地图片
2.输出当前图片的宽、高、通道数
3.显示图片
4.判断用户输入
如果输入为q则退出,
如果输入为m则保存灰度化图片到本地
否则继续等待
"""
img = cv2.imread("download.png") # 读取图片
print(np.array(img).shape) # 输出图片的宽、高、通道数
cv2.imshow("download.png", img) # 显示文件
keypress = cv2.waitKey(200) # 等待用户键盘,延时200ms
while keypress != ord('q') and keypress != ord('m'): # 判断用户的键盘输入,ord为将字符转为ascii码值
keypress = cv2.waitKey(200) # 如果不符合操作,循环继续等待
if keypress == ord('m'): # 用户如果按下m键保存图片到本地
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # bgr转换到灰度
cv2.imwrite("gray.jpg", gray)
# 销毁所有的窗口
cv2.destroyAllWindows()
这段代码使用 OpenCV 加载图像文件 "download.png",显示该图像,然后等待用户的键盘输入。如果用户按下 'q' 键,程序退出;如果用户按下 'm' 键,程序将图像转换为灰度图并保存为 "gray.jpg"。
以下是代码的主要步骤:
使用 OpenCV 的 cv2.imread
函数读取图像文件 "download.png"。
使用 np.array(img).shape
输出图像的宽度、高度和通道数。
使用 cv2.imshow
显示读取的图像,窗口标题为 "download.png"。
使用 cv2.waitKey(200)
等待用户的键盘输入,等待时间为 200 毫秒。在等待期间,程序会持续检测用户按键。
进入循环,判断用户的键盘输入,如果输入是 'q' 或 'm' 之一,则退出循环。
如果用户按下 'm' 键,使用 cv2.cvtColor
将图像转换为灰度图,然后使用 cv2.imwrite
将灰度图保存为 "gray.jpg"。
使用 cv2.destroyAllWindows()
关闭所有打开的窗口。
请注意,在Jupyter Notebook中执行这样的代码可能会导致窗口无法正确显示,因为Jupyter不是一个交互式图形用户界面(GUI)环境。最好在本地Python脚本或集成开发环境(IDE)中运行此类代码。