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'
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'
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'
Recommandations associées :
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!