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打开网页和暂停实例
Sep 30 Python
python获取当前运行函数名称的方法实例代码
Apr 06 Python
通过python爬虫赚钱的方法
Jan 29 Python
python dlib人脸识别代码实例
Apr 04 Python
Python操作远程服务器 paramiko模块详细介绍
Aug 07 Python
django-filter和普通查询的例子
Aug 12 Python
python urllib爬虫模块使用解析
Sep 05 Python
python实现批量修改文件名
Mar 23 Python
基于Python绘制美观动态圆环图、饼图
Jun 03 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 Python
python 如何对logging日志封装
Dec 02 Python
Python如何配置环境变量详解
May 18 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
Zend的MVC机制使用分析(一)
2013/05/02 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
Yii不依赖Model的表单生成器用法实例
2014/12/04 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
2018/04/13 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
使用Python中的tkinter模块作图的方法
2017/02/07 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
2018/10/26 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
你所在的项目是如何确定版本号的
2015/12/28 面试题
JVM是一个编译程序还是解释程序
2012/09/11 面试题
电气个人求职信范文
2014/02/04 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js