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实现在线程里运行scrapy的方法
Apr 07 Python
Python3.2中的字符串函数学习总结
Apr 23 Python
Python使用pymysql小技巧
Jun 04 Python
python保存二维数组到txt文件中的方法
Nov 15 Python
python使用magic模块进行文件类型识别方法
Dec 08 Python
python 将字符串完成特定的向右移动方法
Jun 11 Python
如何学习Python time模块
Jun 03 Python
python使用opencv resize图像不进行插值的操作
Jul 05 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
python飞机大战游戏实例讲解
Dec 04 Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 Python
python中PyQuery库用法分享
Jan 15 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中strlen和mb_strlen函数的区别
2014/03/07 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
php里array_work用法实例分析
2015/07/13 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
2020/01/26 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
js打印纸函数代码(递归)
2010/06/18 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
浅谈Python爬取网页的编码处理
2016/11/04 Python
Python实现通过文件路径获取文件hash值的方法
2017/04/29 Python
python生成随机图形验证码详解
2017/11/08 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
利用Python优雅的登录校园网
2020/10/21 Python
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
小学家长评语大全
2014/04/16 职场文书
初三开学计划书
2014/04/27 职场文书
毕业评语大全
2014/05/04 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
spring 项目实现限流方法示例
2022/07/15 Java/Android