zoukankan      html  css  js  c++  java
  • Python下的OpenCV学习 02 —— 图像的读取与保存

      OpenCV提供了众多对图片操作的函数,其中最基本的就是图片的读取与输出了。

    一、读取图片

      利用OpenCV读取一张图片是非常容易的,只需要用到 imread() 函数,打开shell或者cmd,进入python,输入help(cv2.imread)获取该函数的文档,得到:

    imread(...)
        imread(filename[, flags]) -> retval

      可见, imread需要提供两个参数,第一个是图片的路径,第二个是图片读取的模式(flags),函数返回一个存储着图片像素数据的矩阵。

      flags有三个值:

    • cv2.IMREAD_COLOR             加载彩色图片,透明度将被舍弃
    • cv2.IMREAD_GRAYSCALE      灰度模式
    • cv2.IMREAD_UNCHANGED     完整的加载一张图片,包括alpha通道值(用来表示透明度)

      这三个flags还可以分别用1,0,-1代替  

    img = cv2.imread("test.jpg", cv2.IMREAD_GRAYSCALE)
    img = cv2.imread("test.jpg", 0)
    # 这两者是等价的

      现在,我们已经获得了图像test.jpg的数据,存储在img中。img实际上是一个numpy的array数组,它包含着每个像素点的数据(如果是彩色模式,则包括了bgr值,灰度模式则是灰度值)。我们可以通过下标访问每一个像素点的数据,对每一个像素点进行更改操作。

    二、在窗口中展示图片

      在加载图片之后,我们可以利用 imshow() 函数把加载的图片展示出来,同样的,我们利用help(cv2.imshow)来查看该函数的用法:

    imshow(...)
        imshow(winname, mat) -> None

      imshow需要两个参数,第一个是窗口的名字(winname),第二个是图片的像素矩阵(mat),函数没有返回值。imshow()会创建一个窗口,并在该窗口中把图片展示出来,我们不用操心图片是彩色的还是灰色,OpenCV会自动推导出图片数据的模式。那我们现在把之前存储在img里的图片展示出来:

    cv2.imshow("test", img)
    cv2.waitKey(0)            # 等待用户按下按键
    cv2.destroyAllWindows()   # 关闭所有窗口

        展示效果:                            原图:

                            

    我们可以看到,原来透明的像素点都变成黑色了,这是因为灰度模式下透明度信息被舍弃,原来透明的像素点的值变为0,也就变成了黑色(255是白色)

    三、保存图片

      我们获得了一张灰色的图片,如果想要把它保存下来,应该怎么做呢?这时候就需要利用 imwrite() 函数,python环境下输入help(cv2.imwrite),得到:

    imwrite(...)
        imwrite(filename, img[, params]) -> retval

      filename为输出图片的名字,img为要输出的图片,params为图片格式的参数,如果图片写入成功则返回True,否则返回False。

      我们把这张灰度图像保存为gray.jpg:

    cv2.imwrite("gray.jpg", img)
  • 相关阅读:
    更换glibc版本进行调试
    HDCTF 2020 Writeup
    Srop 原理与利用方法
    form使用DELETE被转换为GET的原因
    sqlite将时间转换为本地时间读取
    firewall-cmd命令
    windows创建系统服务命令
    Open_vSwitch操作
    Dublin Core
    CWM(Common warehouse metamodel)
  • 原文地址:https://www.cnblogs.com/magic-girl/p/opencv-python-02.html
Copyright © 2011-2022 走看看