本文实例讲述了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的图像压缩算法实例分析