Opencv图像灰度化,图像保存,按键事件(附带解析)

2024-01-02 20:25:54
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"。

以下是代码的主要步骤:

  1. 使用 OpenCV 的 cv2.imread 函数读取图像文件 "download.png"。

  2. 使用 np.array(img).shape 输出图像的宽度、高度和通道数。

  3. 使用 cv2.imshow 显示读取的图像,窗口标题为 "download.png"。

  4. 使用 cv2.waitKey(200) 等待用户的键盘输入,等待时间为 200 毫秒。在等待期间,程序会持续检测用户按键。

  5. 进入循环,判断用户的键盘输入,如果输入是 'q' 或 'm' 之一,则退出循环。

  6. 如果用户按下 'm' 键,使用 cv2.cvtColor 将图像转换为灰度图,然后使用 cv2.imwrite 将灰度图保存为 "gray.jpg"。

  7. 使用 cv2.destroyAllWindows() 关闭所有打开的窗口。

请注意,在Jupyter Notebook中执行这样的代码可能会导致窗口无法正确显示,因为Jupyter不是一个交互式图形用户界面(GUI)环境。最好在本地Python脚本或集成开发环境(IDE)中运行此类代码。

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