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运行时间的几种方法
Jun 17 Python
怎么使用pipenv管理你的python项目
Mar 12 Python
Python获取系统所有进程PID及进程名称的方法示例
May 24 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
Dec 15 Python
Python实现的爬取小说爬虫功能示例
Mar 30 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 Python
Django models filter筛选条件详解
Mar 16 Python
Python库skimage绘制二值图像代码实例
Apr 10 Python
Ubuntu中配置TensorFlow使用环境的方法
Apr 21 Python
iPython pylab模式启动方式
Apr 24 Python
matplotlib之pyplot模块实现添加子图subplot的使用
Apr 25 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迭代器实现斐波纳契数列的函数
2013/11/12 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
javascript中的几个运算符
2007/06/29 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
js实现方块上下左右移动效果
2017/08/17 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
2020/01/21 Javascript
[01:08:48]LGD vs OG 2018国际邀请赛淘汰赛BO3 第三场 8.25
2018/08/29 DOTA
python实现随机密码字典生成器示例
2014/04/09 Python
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
python获取多线程及子线程的返回值
2017/11/15 Python
解决pycharm界面不能显示中文的问题
2018/05/23 Python
Python中 map()函数的用法详解
2018/07/10 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
Python就将所有的英文单词首字母变成大写
2021/02/12 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
高三生物教学反思
2014/01/25 职场文书
小学教育见习报告
2014/10/31 职场文书
值班管理制度范本
2015/08/06 职场文书
经典人生语录分享:不畏将来,不念过去,笑对当下
2019/12/12 职场文书
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang
讨论nginx location 顺序问题
2022/05/30 Servers