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)
  • 相关阅读:
    【原创】绝对居中
    MSSQL数据库各角色权限
    如何升级至 XHTML?
    XHTML 语法
    5.4 删除一个元素节点或者文本节点
    Ajax实现无刷新的获取数据并绑定到GridView,以及无刷新更新数据[转]
    鼠标滑过时显示图片内容隐藏和鼠标滑过图片隐藏内容显示的两种小方法
    纯CSS3魔方的制作
    201920201学期 20192415 《网络空间安全专业导论》XOR加密
    201920201学期 20192415 《网络空间安全专业导论》第四周学习总结
  • 原文地址:https://www.cnblogs.com/magic-girl/p/opencv-python-02.html
Copyright © 2011-2022 走看看