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远程桌面协议RDPY安装使用介绍
Apr 15 Python
python用户评论标签匹配的解决方法
May 31 Python
详解Django 中是否使用时区的区别
Jun 14 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
python整小时 整天时间戳获取算法示例
Feb 20 Python
在python3中使用shuffle函数要注意的地方
Feb 28 Python
python多维数组分位数的求取方式
Mar 03 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 Python
python requests模块的使用示例
Apr 07 Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 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+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
深入理解javascript学习笔记(一) 编写高质量代码
2012/08/09 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
javascript操作数组详解
2014/12/17 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
Python文件夹与文件的操作实现代码
2014/07/13 Python
在Python中操作字符串之replace()方法的使用
2015/05/19 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
python装饰器原理与用法深入详解
2019/12/19 Python
Pytorch释放显存占用方式
2020/01/13 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
猫咪家具:CatsPlay
2018/11/03 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
父母对孩子的寄语
2014/04/09 职场文书
应届生找工作求职信
2014/06/24 职场文书
学生安全责任书范本
2014/07/24 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
教导主任个人总结
2015/03/03 职场文书
2015年征兵工作总结
2015/07/23 职场文书
班主任远程培训研修日志
2015/11/13 职场文书