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中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
Python中的面向对象编程详解(上)
Apr 13 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
Apr 27 Python
python3.6 实现AES加密的示例(pyCryptodome)
Jan 10 Python
Django学习笔记之ORM基础教程
Mar 27 Python
pandas全表查询定位某个值所在行列的方法
Apr 12 Python
Python wxPython库使用wx.ListBox创建列表框示例
Sep 03 Python
Django REST framework视图的用法
Jan 16 Python
pytorch逐元素比较tensor大小实例
Jan 03 Python
python查看矩阵的行列号以及维数方式
May 22 Python
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
Apr 14 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 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的FTP学习(一)[转自奥索]
2006/10/09 PHP
php 正则匹配函数体
2009/08/25 PHP
PHP中shuffle数组值随便排序函数用法
2014/11/21 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
JavaScript 异步调用框架 (Part 6 - 实例 & 模式)
2009/08/04 Javascript
javascript中万恶的function实例分析
2011/05/25 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
2014/10/31 Javascript
javascript实现下拉提示选择框
2015/12/29 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
vue车牌号校验和银行校验实战
2019/01/23 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
爬山算法简介和Python实现实例
2014/04/26 Python
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
tensorflow 获取变量&打印权值的实例讲解
2018/06/14 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
事业单位分类改革实施方案
2014/03/21 职场文书
《祁黄羊》教学反思
2014/04/22 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript
python异常中else的实例用法
2021/06/15 Python
比较几种Redis集群方案
2021/06/21 Redis
分析并发编程之LongAdder原理
2021/06/29 Java/Android