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


Posted in Python onMay 03, 2018

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

插值方法:

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

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

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

# coding=utf-8
import time
time1 = time.time()
import cv2
image=cv2.imread("c:/1.jpg")
res = cv2.resize(image, (1280,960), interpolation=cv2.INTER_AREA)
# cv2.imshow('image', image)
# cv2.imshow('resize', res)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
cv2.imwrite("C:/5.jpg",res)
time2=time.time()
print u'总共耗时:' + str(time2 - time1) + 's'

4.19M—377k 压缩了11倍

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

#-*-coding:utf-8-*-
#############设置编码################
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
###################导入计算机视觉库opencv和图像处理库PIL####################
from PIL import Image
from PIL import ImageEnhance
from PIL import ImageFilter
import cv2
import time
time1 = time.time()
####################读入图像###############################
image=cv2.imread("c:/pic//0.jpg")
####################双三次插值#############################
res = cv2.resize(image, (1280,960), interpolation=cv2.INTER_AREA)
####################写入图像########################
cv2.imwrite("C:/pic/101.jpg",res)
###########################图像对比度增强##################
imgE = Image.open("c:/pic/101.jpg")
imgEH = ImageEnhance.Contrast(imgE)
img1=imgEH.enhance(2.8)
########################图像转换为灰度图###############
gray = img1.convert("L")
gray.save("C:/pic/3.jpg")
##########################图像增强###########################
# 创建滤波器,使用不同的卷积核
gary2=gray.filter(ImageFilter.DETAIL)
gary2.save("C:/pic/2.jpg")
#############################图像点运算#################
gary3=gary2.point(lambda i:i*0.9)
gary3.save("C:/pic/4.jpg")
# img1.show("new_picture")
time2=time.time()
print u'总共耗时:' + str(time2 - time1) + 's'

4.17M?>290kb

程序3:函数版本

#-*-coding:utf-8-*-
#############设置编码################
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
############导入计算机视觉库opencv和图像处理库PIL####################
from PIL import Image
from PIL import ImageEnhance
from PIL import ImageFilter
import cv2
import time
time1 = time.time()
########################自定义图像压缩函数############################
def img_zip(path,filename1,filename2):
  image = cv2.imread(path+filename1)
  res = cv2.resize(image, (1280, 960), interpolation=cv2.INTER_AREA)
  cv2.imwrite(path+filename2, res)
  imgE = Image.open(path+filename2)
  imgEH = ImageEnhance.Contrast(imgE)
  img1 = imgEH.enhance(2.8)
  gray1 = img1.convert("L")
  gary2 = gray1.filter(ImageFilter.DETAIL)
  gary3 = gary2.point(lambda i: i * 0.9)
  gary3.save(path+filename2)
################################主函数##################################
if __name__ == '__main__':
  path=u"c:/pic/"
  filename1="0.jpg"
  filename2="1.jpg"
  img_zip(path,filename1,filename2)
  time2 = time.time()
  print u'总共耗时:' + str(time2 - time1) + 's'

更多关于Python相关内容可查看本站专题:《Python数学运算技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现在目录中查找指定文件的方法
Nov 11 Python
Python线程中对join方法的运用的教程
Apr 09 Python
Python基于PycURL实现POST的方法
Jul 25 Python
python如何统计序列中元素
Jul 31 Python
解决Mac安装scrapy失败的问题
Jun 13 Python
python 阶乘累加和的实例
Feb 01 Python
WxPython建立批量录入框窗口
Feb 27 Python
Python实现12306火车票抢票系统
Jul 04 Python
python简单实现矩阵的乘,加,转置和逆运算示例
Jul 10 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 Python
用Python将GIF动图分解成多张静态图片
Jun 11 Python
python实现数据导出到excel的示例--普通格式
May 03 #Python
python操作xlsx文件的包openpyxl实例
May 03 #Python
对Python字符串中的换行符和制表符介绍
May 03 #Python
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 #Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 #Python
Python 解决中文写入Excel时抛异常的问题
May 03 #Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 #Python
You might like
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
深入解析PHP的Yii框架中的缓存功能
2016/03/29 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
python如何为创建大量实例节省内存
2018/03/20 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
python中import与from方法总结(推荐)
2019/03/21 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
澳大利亚波希米亚风时尚品牌:Tree of Life
2019/09/15 全球购物
自荐信要包含哪些内容
2013/11/06 职场文书
产品设计开发计划书
2014/05/07 职场文书
干部对照检查材料范文
2014/08/26 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
商务邀请函
2015/01/30 职场文书
销售辞职信范文
2015/03/02 职场文书
机关保密工作承诺书
2015/05/04 职场文书
在校证明模板
2015/06/17 职场文书
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers
Mysql 一主多从的部署
2022/05/20 MySQL