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 16 Python
python实现的jpg格式图片修复代码
Apr 21 Python
python取数作为临时极大值(极小值)的方法
Oct 15 Python
Python实现计算字符串中出现次数最多的字符示例
Jan 21 Python
python框架flask表单实现详解
Nov 04 Python
PyTorch中permute的用法详解
Dec 30 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
python的pip有什么用
Jun 17 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
pycharm中leetcode插件使用图文详解
Dec 07 Python
Python基础之函数嵌套知识总结
May 23 Python
python实现对doc、txt、xls等文档的读写操作
Apr 02 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
初级的用php写的采集程序
2007/03/16 PHP
str_replace只替换一次字符串的方法
2013/04/09 PHP
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
js变量以及其作用域详解
2020/07/18 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
AngularJS 面试题集锦
2016/09/06 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
微信小程序 如何保持登录状态
2019/08/16 Javascript
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
Python 自动刷博客浏览量实例代码
2017/06/14 Python
Python 异常处理的实例详解
2017/09/11 Python
Python实现自动发送邮件功能
2021/03/02 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
Python生成器generator用法示例
2018/08/10 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
Python3离线安装Requests模块问题
2019/10/13 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
数控专业个人求职信范例
2013/11/29 职场文书
行政办公员自我评价分享
2013/12/14 职场文书
化工专业求职信
2014/07/01 职场文书
护士医德考评自我评价
2015/03/03 职场文书
利用 JavaScript 构建命令行应用
2021/11/17 Javascript
python 离散点图画法的实现
2022/04/01 Python