zoukankan      html  css  js  c++  java
  • opencv和matplotlib库图像读写显示对比和总结

    图片格式:

    • bmp
      • 全称:Bitmap
      • 不压缩
    • png
      • 全称:Portable Network Graphics
      • 无损压缩
    • jpg
      • 全称:Joint Photographic Experts Group
      • 有损压缩

    opencv(python)中图像读写显示:

    import cv2 as cv
    
    new_img = cv.imread('baby.png') # 文件大小:362KB
    
    # bmp
    cv.imwrite('img_bmp.bmp',new_img) # 文件大小:768KB
    
    # jpg 默认95%质量
    cv.imwrite('img_jpg95.jpg',new_img) # 文件大小:90.7KB
    # jpg 20%质量
    cv.imwrite('img_jpg20.jpg',new_img,[int(cv.IMWRITE_JPEG_QUALITY),20]) # 文件大小:13.2KB
    # jpg 100%质量
    cv.imwrite('img_jpg100.jpg',new_img,[int(cv.IMWRITE_JPEG_QUALITY),100]) # 文件大小:183KB
    
    # png 默认1压缩比
    cv.imwrite('img_png1.png',new_img) # 文件大小:431KB
    # png 9压缩比
    cv.imwrite('img_png9.png',new_img,[int(cv.IMWRITE_PNG_COMPRESSION),9]) # 文件大小:366KB
    
    cv.imshow('result',new_img)
    
    cv.waitKey(0)
    cv.destroyAllWindows()
    

    Matplotlib库中图像读写显示

    Matplotlib是Python的一个很常用的绘图库。OpenCV中的图像是以BGR的通道顺序存储的,但Matplotlib是以RGB模式显示的,所以直接在Matplotlib中显示OpenCV图像会出现问题,因此需要转换一下。

    # Writer : wojianxinygcl@163.com
    # Date   : 2020.3.27
    import cv2 as cv 
    import matplotlib.pyplot as plt
    
    # img = pli.imread('baby.png')
    
    img = cv.imread('baby.png')
    # 图像复制 + BGR->RGB
    img2 = img[:, :, ::-1]
    # or
    # img2 = cv.cvtColor(img, cv.COLOR_BGR2RGB)
    
    plt.figure(1)
    
    # 显示不正确的图
    plt.subplot(121)
    plt.xticks([]), plt.yticks([]) # 隐藏x和y轴
    plt.axis('off') # 去图像边框
    plt.title('False Channel Show')
    plt.imshow(img)
    
    # 显示正确的图
    plt.subplot(122)
    plt.xticks([]), plt.yticks([]) # 隐藏x和y轴
    plt.axis('off') # 去图像边框
    plt.title('Right Channel Show')
    plt.imshow(img2)
    
    plt.savefig('baby_true.jpg') # 在show前面保存图像
    plt.show()
    

    实验输出:

    上面这段代码输出结果

  • 相关阅读:
    Could not find the Qt platform plugin windows错误解决方法
    解决MySQL 8.0数据库出现乱码的问题
    C# Winform程序设计运行在高分屏下模糊解决办法
    如何配置SQL Server数据库远程连接
    PyCharm安装及使用教程
    Chrome谷歌浏览器实用插件
    Visual Studio 2017中如何创建安装打包项目
    Python如何打包EXE可执行文件
    C#中控制线程池的执行顺序
    .net core 部署在Centos 7/8 的几个小坑
  • 原文地址:https://www.cnblogs.com/wojianxin/p/12584213.html
Copyright © 2011-2022 走看看