Maison > développement back-end > Tutoriel Python > Exemple d'analyse d'algorithme de compression d'image Python basée sur opencv

Exemple d'analyse d'algorithme de compression d'image Python basée sur opencv

不言
Libérer: 2018-05-03 11:51:37
original
3007 Les gens l'ont consulté

Cet article présente principalement l'algorithme de compression d'image de Python basé sur opencv, et analyse les techniques de fonctionnement courantes et les précautions d'utilisation d'opencv pour la compression d'image sous forme d'exemples. Les amis dans le besoin peuvent se référer à ce qui suit

Le. des exemples dans cet article expliquent l'algorithme de compression d'image de Python basé sur opencv. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Méthode d'interpolation :

CV_INTER_NN - interpolation du voisin le plus proche,
CV_INTER_LINEAR - interpolation bilinéaire (utilisée par défaut) )
CV_INTER_AREA - Utiliser le rééchantillonnage relatif aux pixels. Cette méthode peut éviter les ondulations lorsque l’image est agrandie. Lorsque l'image est agrandie, cela est similaire à la méthode CV_INTER_NN..
CV_INTER_CUBIC - interpolation cubique.

La fonction cvResize modifie la taille de l'image src à la même taille que dst. Si le retour sur investissement est défini, la fonction prendra en charge le retour sur investissement comme d'habitude.

Procédure 1 : compression d'image (première édition)

# 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'
Copier après la connexion

4,19M—377k compressé 11 fois

Programme 2 : Compression d'image (deuxième édition)

#-*-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'
Copier après la connexion

4.17M–>290ko

Programme 3 : Version de fonction

#-*-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'
Copier après la connexion

Recommandations associées :

Méthode de Python pour identifier simplement les noms de domaine et les propriétaires de sites Web en fonction du module whois

Python implémente des fichiers FTP basés sur le Téléchargement du module FTP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal