Python基于opencv的图像压缩算法实例分析

  

本文实例讲述了Python基于opencv的图像压缩算法。分享给大家供大家参考,具体如下:

  

<>强插值方法:

  

CV_INTER_NN -最近邻插值,
  CV_INTER_LINEAR——双线性插值(缺省使用)
  CV_INTER_AREA——使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于CV_INTER_NN方法。
  CV_INTER_CUBIC——立方插值。

  

函数cvResize将图像src改变尺寸得到与dst同样大小。若设定ROI,函数将按常规支持ROI。

  

<强>程序1:图像压缩(第一版)

        #=utf - 8编码   导入的时间   time1=time.time ()   进口cv2   形象=cv2.imread (“c:/1. jpg”)   res=cv2。调整(图片,(1280,960),插值=cv2.INTER_AREA)   # cv2。imshow(“形象”,图片)   # cv2。imshow(“调整”,res)   # cv2.waitKey (0)   # cv2.destroyAllWindows ()   cv2.imwrite (5.“C:/jpg”, res)   time2=time.time ()   打印u '总共耗时:“+ str (time2 - time1) +“年代”      之前      

4.19 - 377 k的压缩了11倍

  

<强>程序2:图像压缩(第二版)

        # - *编码:utf - 8 - *   # # # # # # # # # # # # #设置编码# # # # # # # # # # # # # # # #   导入系统   重载(系统)   sys.setdefaultencoding (“utf - 8”)   # # # # # # # # # # # # # # # # # # #导入计算机视觉库opencv和图像处理库公益诉讼# # # # # # # # # # # # # # # # # # # #   从公益诉讼导入图像   从公益诉讼进口ImageEnhance   从公益诉讼进口ImageFilter   进口cv2   导入的时间   time1=time.time ()   # # # # # # # # # # # # # # # # # # # #读入图像# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   形象=cv2.imread (“c:/图片//0. jpg”)   # # # # # # # # # # # # # # # # # # # #双三次插值# # # # # # # # # # # # # # # # # # # # # # # # # # # # #   res=cv2。调整(图片,(1280,960),插值=cv2.INTER_AREA)   # # # # # # # # # # # # # # # # # # # #写入图像# # # # # # # # # # # # # # # # # # # # # # # #   cv2.imwrite (101.“C:/图片/jpg”(res)   # # # # # # # # # # # # # # # # # # # # # # # # # # #图像对比度增强# # # # # # # # # # # # # # # # # #   imgE=Image.open (“c:/图片/101. jpg”)   imgEH=ImageEnhance.Contrast (imgE)   img1=imgEH.enhance (2.8)   # # # # # # # # # # # # # # # # # # # # # # # #图像转换为灰度图# # # # # # # # # # # # # # #   灰色=img1.convert (“L”)   gray.save (“C:/图片/3. jpg”)   # # # # # # # # # # # # # # # # # # # # # # # # # #图像增强# # # # # # # # # # # # # # # # # # # # # # # # # # #   #创建滤波器,使用不同的卷积核   gary2=gray.filter (ImageFilter.DETAIL)   gary2.save (“C:/图片/2. jpg”)   # # # # # # # # # # # # # # # # # # # # # # # # # # # # #图像点运算# # # # # # # # # # # # # # # # #   gary3=gary2。点(λ:我* 0.9)   gary3.save (“C:/图片/4. jpg”)   # img1.show (“new_picture”)   time2=time.time ()   打印u '总共耗时:“+ str (time2 - time1) +“年代”      之前      

4.17→290 kb

  

<强>程序3:函数版本

        # - *编码:utf - 8 - *   # # # # # # # # # # # # #设置编码# # # # # # # # # # # # # # # #   导入系统   重载(系统)   sys.setdefaultencoding (“utf - 8”)   # # # # # # # # # # # #导入计算机视觉库opencv和图像处理库公益诉讼# # # # # # # # # # # # # # # # # # # #   从公益诉讼导入图像   从公益诉讼进口ImageEnhance   从公益诉讼进口ImageFilter   进口cv2   导入的时间   time1=time.time ()   # # # # # # # # # # # # # # # # # # # # # # # #自定义图像压缩函数# # # # # # # # # # # # # # # # # # # # # # # # # # # #   def img_zip(路径、filename1 filename2):   形象=cv2.imread(路径+ filename1)   res=cv2。调整(图片,(1280,960),插值=cv2.INTER_AREA)   cv2。imwrite(路径+ filename2 res)   + filename2 imgE=Image.open(路径)   imgEH=ImageEnhance.Contrast (imgE)   img1=imgEH.enhance (2.8)   gray1=img1.convert (“L”)   gary2=gray1.filter (ImageFilter.DETAIL)   gary3=gary2。点(λ:我* 0.9)   gary3.save(路径+ filename2)   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #主函数# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   if __name__==癬_main__”:   路径=u“c:/图片/?   filename1=" 0. jpg”   filename2=" 1. jpg”   img_zip(路径、filename1 filename2)   time2=time.time ()   打印u '总共耗时:“+ str (time2 - time1) +“年代”      

Python基于opencv的图像压缩算法实例分析