Opencv 图像的读取与写入

目录

导入cv2

读取图像数据

创建一个窗口

waitKey方法

关闭所有窗口

完整示例

保存图片

示例


导入cv2

复制代码
# 导入opencv包
import cv2

读取图像数据

复制代码
cv2.imread(path, flag)
复制代码
参数说明:
path:要读取的图像文件的路径。
flag(可选):指定图像的读取方式。它可以是以下标志之一:
cv2.IMREAD_COLOR(默认值):以彩色图像形式读取图像,忽略任何透明度。
cv2.IMREAD_GRAYSCALE:以灰度图像形式读取图像。
cv2.IMREAD_UNCHANGED:以包含Alpha通道(如果存在)的形式读取图像。
返回值:
如果成功读取图像,imread()函数将返回一个表示图像数据的NumPy数组对象。
如果无法读取图像(例如文件路径错误或文件格式不支持),则返回None。
复制代码
    # 读取图像数据,保存到image变量里
    image = cv2.imread(path, cv2.IMREAD_COLOR)

创建一个窗口

复制代码
# 创建一个自动调整大小的新窗口
cv2.namedWindow('new', cv2.WINDOW_AUTOSIZE)
cv2.imshow('new', 0)
复制代码
# 创建一个具有可调整大小的新窗口
cv2.namedWindow('new', cv2.WINDOW_NORMAL)
# 将窗口大小调整为指定的宽度和高度(这里是1920x1080)
cv2.resizeWindow('new', 1920, 1080)
复制代码
# 创建一个名为new的显示窗口,并显示图像数据
cv2.imshow('new', image)

waitKey方法

复制代码
# 等待键盘输入,waitKey方法表示等待按键, 会返回按键的ascii的值
# 0表示任何按键, 其他整数表示等待按键的时间,单位是毫秒, 超过时间没有发生按键操作窗口会自动关闭.
# ord获得字符的ascii的值,可以据此判断输入的字符,然后进行进一步操作
python 复制代码
Key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
    cv2.destroyAllWindows()  
# 如果输入的是q  key & 0xFF将保留key的低八位(即最后8个二进制位),相当于对256取余。

关闭所有窗口

python 复制代码
cv2.destroyAllWindows()

完整示例

python 复制代码
import cv2

# 展示图片
def show_image(path):
    # 读取图像数据,保存到image变量里
    image = cv2.imread(path, cv2.IMREAD_COLOR)
    # 检查图像是否成功读取
    if image is not None:
        # 创建一个自动调整大小的新窗口
        cv2.namedWindow('new', cv2.WINDOW_AUTOSIZE)
        cv2.imshow('new', 0)

        # 创建一个具有可调整大小的新窗口
        cv2.namedWindow('new', cv2.WINDOW_NORMAL)
        # 将窗口大小调整为指定的宽度和高度(这里是1920x1080)
        cv2.resizeWindow('new', 1920, 1080)

        # 创建一个名为new的显示窗口,并显示图像数据
        cv2.imshow('new', image)

        # 等待键盘输入,waitKey方法表示等待按键, 会返回按键的ascii的值
        # 0表示任何按键, 其他整数表示等待按键的时间,单位是毫秒, 超过时间没有发生按键操作窗口会自动关闭.
        Key = cv2.waitKey(0)

        # ord获得字符的ascii的值,可以据此判断输入的字符,然后进行进一步操作
        # if key & 0xFF == ord('q'):  # 如果输入的是q  key & 0xFF将保留key的低八位(即最后8个二进制位),相当于对256取余。
        if Key:
            # 关闭所有窗口
            cv2.destroyAllWindows()
        print(f'{path}的图像成功读取')
        return 0
    else:
        print("无法读取图像")
        return -1

show_image('1.jpg')

保存图片

复制代码
cv2.imwrite("路径名称",要保存的图像(NumPy数组对象))
python 复制代码
img=cv2.imread('img.jpg')
cv2.imwrite("./123.png", img)

示例

python 复制代码
# 保存图片
cv2.namedWindow('img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('img', 320, 240)
img = cv2.imread("images/5.jpg")
# 利用while循环优化退出逻辑
print("开始保存图片,按esc键退出")
while True:
    cv2.imshow('img', img)
    key = cv2.waitKey(0)
    if key & 0xFF == 27:
        break
    elif key & 0xFF == ord('s'):
        # 使用imwrite保存图片
        cv2.imwrite("./123.png", img)
        print("图片保存成功")
    else:
        print(key)
cv2.destroyAllWindows()
相关推荐
美狐美颜sdk13 小时前
2026主流直播美颜sdk对比:效果、算法与成本分析
前端·人工智能·计算机视觉·美颜sdk·直播美颜sdk·第三方美颜sdk·视频美颜sdk
EDPJ14 小时前
从 Grounding DINO 到 DINO-X:开放集目标检测的架构演进与细节拆解
目标检测·计算机视觉·架构·图像分割·图像分类
xinxiangwangzhi_16 小时前
CREStereo 论文总结(2022)
计算机视觉
Fevered 路小小呀!17 小时前
mediapipe新版本怎么玩--面部特征检测
人工智能·python·计算机视觉
Hong_Youth17 小时前
OpenCV + YOLOv5 落地工程:视频实时计数、追踪、画线统计
opencv·yolo·音视频
sali-tec17 小时前
C# 基于OpenCv的视觉工作流-章45-圆卡尺
图像处理·人工智能·opencv·算法·计算机视觉
刘若里17 小时前
【论文阅读】自适应稀疏自注意力——可直接用!
论文阅读·人工智能·笔记·深度学习·计算机视觉
刘简爱学习18 小时前
用于病理图像多类分割的弱监督状态空间模型PathMamba
人工智能·深度学习·计算机视觉
AI人工智能+19 小时前
医疗器械注册证识别技术采用深度学习与计算机视觉技术,实现注册证关键信息的智能提取与结构化转换
深度学习·计算机视觉·ocr·医疗器械注册证识别
kay_54519 小时前
YOLO26 | 注意力机制 | 以分解式双层注意力提升语义表达与细节捕捉【完整步骤】
人工智能·目标检测·计算机视觉·目标跟踪·视觉检测·yolo26·yolo26改进