Dieser Artikel stellt hauptsächlich den auf opencv basierenden Bildkomprimierungsalgorithmus von Python vor und analysiert die gängigen Betriebstechniken und Vorsichtsmaßnahmen für die Verwendung von opencv zur Bildkomprimierung in Form von Beispielen.
Die Beispiele in diesem Artikel sind Pythons Bildkomprimierungsalgorithmus basierend auf OpenCV. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Interpolationsmethode:
CV_INTER_NN – Interpolation des nächsten Nachbarn,
CV_INTER_LINEAR – bilineare Interpolation (verwendet standardmäßig) )
CV_INTER_AREA – Pixelrelatives Resampling verwenden. Mit dieser Methode können Wellen beim Verkleinern des Bildes vermieden werden. Wenn das Bild vergrößert wird, ähnelt es der CV_INTER_NN-Methode.
CV_INTER_CUBIC – kubische Interpolation.
Die Funktion cvResize ändert die Größe des Bilds src auf die gleiche Größe wie dst. Wenn ROI eingestellt ist, unterstützt die Funktion ROI wie gewohnt.
Verfahren 1: Bildkomprimierung (Erstausgabe)
# 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,19 Mio. – 377 KB 11-fach komprimiert
Verfahren 2: Bildkomprimierung (Zweite Ausgabe)
#-*-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
Programm 3: Funktionsversion
#-*-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'
Verwandte Empfehlungen :
Python implementiert den FTP-Datei-Upload basierend auf dem FTP-Modul
Das obige ist der detaillierte Inhalt vonBeispielanalyse für einen Python-Bildkomprimierungsalgorithmus basierend auf opencv. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!