zoukankan      html  css  js  c++  java
  • Python-OpenCV图像处理

    0 Python图像处理库

    • 常用的有OpenCV, Pillow(PIL)和scikit-image. 比较常用的是前两个,做个简单的比较。
    • OpenCV
      - 原版OpenCV是基于C++的,现在使用的是python版本。
      - 处理速度快
      - 读取图片直接就是numpy ndarray类型
      - 读取图片是(B,G,R)通道,比较特殊
      - image.shape得到的是(H,W,C)
    • Pillow
      - Pytorch中比较常用
      - 读取图片是PIL Image格式,需要进一步转换为numpy ndarray类型
      - image.size得到的是(W,H)
    • 有比较说明OpenCV处理速度优势比较大,Python Pillow 和 cv2 图片 resize 速度的比较

    1 图像的读取与保存

    读取图像

    imread(filename[, flags]). 关于flag的含义:

    Flag 变量 含义
    -1 cv.IMREAD_UNCHANGED 读取原图像,保留所有通道和原位深。例如,png图像有alpha通道则会保留,而其他模式会丢弃alpha通道。
    0 cv.IMREAD_GRAYSCALE 将读取的图片转换为1-channel,8-bit的灰度图像。所以可能改变原图像的通道数和位深。
    1 cv.IMREAD_COLOR (默认)将读取的图片转换为3-channel,8-bit的BGR彩色图像。所以可能改变原图像的通道数和位深。
    2 cv.IMREAD_ANYDEPTH 根据图像的位深,可以读取为1-channel,8、16或32-bit的图像。所以可能改变原图像的通道数。
    3 cv.IMREAD_ANYCOLOR If set, the image is read in any possible color format.
    >3 - 不常用

    注意:

    • 大多数彩色图像都是3-channel,8-bit的,所以直接调用默认模式(flag=1)就可以。
    • 对于特殊的图像,如深度图、高度图,保存格式为32-bit float的要指定flag=2,否则会出错(opencv并不提醒,只是返回None对象)。
    • 对于未知的图像(通道、位深都未知),采用flag=-1模式进行读取比较保险。

    保存图像

    imwrite(filename, img). 保存格式通过文件的后缀名指定。一般情况下,只有8-bit,1-channel或8-bit,3-channel的图像可以通过此函数保存。不过有以下例外:

    • 16-bit unsigned 图像,可以保存为PNG, JPEG200或TIFF格式。
    • 32-bit float 图像,可以保存为PFM, TIFF, OpenEXR, and Radiance HDR格式。32-bit,3-channel的TIFF图像保存时采用LogLuv高动态范围编码。
    • 包含alpha通道的PNG图像可以通过此函数保存。保证图像为 8-bit(or 16-bit),4-channel 的BGRA格式,全透明像素alpha值为0,完全不透明的像素alpha值为255/65535.

    BGR转RGB

    有下面三种方法,推荐第2,3种,比较快。

    • 方法1
    b, g, r = cv2.split(im)
    im_rgb1 = cv2.merge([r, g, b])
    
    • 方法2
    im_rgb2 = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
    
    • 方法3
    im_rgb3 = im[: , : , ::-1]
    

    颜色映射

    当我们想要可视化特殊二维图像(如从浮点格式的高度、深度图转换而来)时,可以使用颜色映射指定显示的效果

    cv2.applyColorMap(img, colormap)
    

    这里的colormap可用的选项如下:
    opencv colormap

  • 相关阅读:
    CSS常用记录
    CSS字体图标使用方式
    CSS之多个div一行排列
    Mysql MVCC原理和幻读解决
    第8章 管理还原数据
    第20章 数据的移动
    oracle恢复删除的数据
    第11章 索引的管理与维护
    第10章 管理表
    第19章 归档模式下的数据库恢复
  • 原文地址:https://www.cnblogs.com/tofengz/p/13587260.html
Copyright © 2011-2022 走看看