Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielanalyse für einen Python-Bildkomprimierungsalgorithmus basierend auf opencv

Beispielanalyse für einen Python-Bildkomprimierungsalgorithmus basierend auf opencv

不言
不言Original
2018-05-03 11:51:372956Durchsuche

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 :

Pythons Methode zur einfachen Identifizierung des Website-Domänennamens und -Eigentümers basierend auf dem Whois-Modul

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn