最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)圖像壓縮和圖像處理詳解

 更新時間:2022年07月08日 08:44:55   作者:五包辣條!  
隨著現(xiàn)在短視頻類越來越火,隨之而來的就是大量的視頻圖像的處理。這篇文章主要為大家介紹了Python如何一鍵實現(xiàn)圖像壓縮和圖像處理,希望對你們有所幫助

入門了解1.顏色

如果你有使用顏料畫畫的經(jīng)歷,那么一定知道混合紅、黃、藍三種顏料可以得到其他的顏色,事實上這三種顏色就是美術中的三原色,它們是不能再分解的基本顏色。在計算機中,我們可以將紅、綠、藍三種色光以不同的比例疊加來組合成其他的顏色,因此這三種顏色就是色光三原色。在計算機系統(tǒng)中,我們通常會將一個顏色表示為一個RGB值或RGBA值(其中的A表示Alpha通道,它決定了透過這個圖像的像素,也就是透明度)。

名稱RGB值名稱RGB值
White(白)(255, 255, 255)Red(紅)(255, 0, 0)
Green(綠)(0, 255, 0)Blue(藍)(0, 0, 255)
Gray(灰)(128, 128, 128)Yellow(黃)(255, 255, 0)
Black(黑)(0, 0, 0)Purple(紫)(128, 0, 128)

入門了解 2. 像素

對于一個由數(shù)字序列表示的圖像來說,最小的單位就是圖像上單一顏色的小方格,這些小方塊都有一個明確的位置和被分配的色彩數(shù)值,而這些一小方格的顏色和位置決定了該圖像最終呈現(xiàn)出來的樣子,它們是不可分割的單位,我們通常稱之為像素(pixel)。每一個圖像都包含了一定量的像素,這些像素決定圖像在屏幕上所呈現(xiàn)的大小,大家如果愛好拍照或者自拍,對像素這個詞就不會陌生。

用Pillow處理圖像

Pillow是由從著名的Python圖像處理庫PIL發(fā)展出來的一個分支,通過Pillow可以實現(xiàn)圖像壓縮和圖像處理等各種操作。可以使用下面的命令來安裝Pillow。

pip install pillow

Pillow中最為重要的是Image類,可以通過Image模塊的open函數(shù)來讀取圖像并獲得Image類型的對象。

1. 讀取和顯示圖像

   from PIL import Image

   # 讀取圖像獲得Image對象
   image = Image.open('guido.jpg')
   # 通過Image對象的format屬性獲得圖像的格式
   print(image.format) # JPEG
   # 通過Image對象的size屬性獲得圖像的尺寸
   print(image.size)   # (500, 750)
   # 通過Image對象的mode屬性獲取圖像的模式
   print(image.mode)   # RGB
   # 通過Image對象的show方法顯示圖像
   image.show()

2. 剪裁圖像

   # 通過Image對象的crop方法指定剪裁區(qū)域剪裁圖像
   image.crop((80, 20, 310, 360)).show()

3. 生成縮略圖

   # 通過Image對象的thumbnail方法生成指定尺寸的縮略圖
   image.thumbnail((128, 128))
   image.show()

4. 縮放和黏貼圖像

   # 讀取駱昊的照片獲得Image對象
   luohao_image = Image.open('luohao.png')
   # 讀取吉多的照片獲得Image對象
   guido_image = Image.open('guido.jpg')
   # 從吉多的照片上剪裁出吉多的頭
   guido_head = guido_image.crop((80, 20, 310, 360))
   width, height = guido_head.size
   # 使用Image對象的resize方法修改圖像的尺寸
   # 使用Image對象的paste方法將吉多的頭粘貼到駱昊的照片上
   luohao_image.paste(guido_head.resize((int(width / 1.5), int(height / 1.5))), (172, 40))
   luohao_image.show()

5. 旋轉(zhuǎn)和翻轉(zhuǎn)

   image = Image.open('guido.jpg')
   # 使用Image對象的rotate方法實現(xiàn)圖像的旋轉(zhuǎn)
   image.rotate(45).show()
   # 使用Image對象的transpose方法實現(xiàn)圖像翻轉(zhuǎn)
   # Image.FLIP_LEFT_RIGHT - 水平翻轉(zhuǎn)
   # Image.FLIP_TOP_BOTTOM - 垂直翻轉(zhuǎn)
   image.transpose(Image.FLIP_TOP_BOTTOM).show()

6. 操作像素

   for x in range(80, 310):
       for y in range(20, 360):
           # 通過Image對象的putpixel方法修改圖像指定像素點
           image.putpixel((x, y), (128, 128, 128))
   image.show()

7. 濾鏡效果

   from PIL import ImageFilter

???????   # 使用Image對象的filter方法對圖像進行濾鏡處理
   # ImageFilter模塊包含了諸多預設的濾鏡也可以自定義濾鏡
   image.filter(ImageFilter.CONTOUR).show()

使用Pillow繪圖

Pillow中有一個名為ImageDraw的模塊,該模塊的Draw函數(shù)會返回一個ImageDraw對象,通過ImageDraw對象的arc、line、rectangle、ellipse、polygon等方法,可以在圖像上繪制出圓弧、線條、矩形、橢圓、多邊形等形狀,也可以通過該對象的text方法在圖像上添加文字。

完整的代碼如下所示。

import random

from PIL import Image, ImageDraw, ImageFont


def random_color():
    """生成隨機顏色"""
    red = random.randint(0, 255)
    green = random.randint(0, 255)
    blue = random.randint(0, 255)
    return red, green, blue


width, height = 800, 600
# 創(chuàng)建一個800*600的圖像,背景色為白色
image = Image.new(mode='RGB', size=(width, height), color=(255, 255, 255))
# 創(chuàng)建一個ImageDraw對象
drawer = ImageDraw.Draw(image)
# 通過指定字體和大小獲得ImageFont對象
font = ImageFont.truetype('Kongxin.ttf', 32)
# 通過ImageDraw對象的text方法繪制文字
drawer.text((300, 50), 'Hello, world!', fill=(255, 0, 0), font=font)
# 通過ImageDraw對象的line方法繪制兩條對角直線
drawer.line((0, 0, width, height), fill=(0, 0, 255), width=2)
drawer.line((width, 0, 0, height), fill=(0, 0, 255), width=2)
xy = width // 2 - 60, height // 2 - 60, width // 2 + 60, height // 2 + 60
# 通過ImageDraw對象的rectangle方法繪制矩形
drawer.rectangle(xy, outline=(255, 0, 0), width=2)
# 通過ImageDraw對象的ellipse方法繪制橢圓
for i in range(4):
    left, top, right, bottom = 150 + i * 120, 220, 310 + i * 120, 380
    drawer.ellipse((left, top, right, bottom), outline=random_color(), width=8)
# 顯示圖像
image.show()
# 保存圖像
image.save('result.png')

注意:上面代碼中使用的字體文件需要根據(jù)自己準備,可以選擇自己喜歡的字體文件并放置在代碼目錄下。

總結(jié)

使用Python語言做開發(fā),除了可以用Pillow來處理圖像外,還可以使用更為強大的OpenCV庫來完成圖形圖像的處理,OpenCV(Open Source Computer Vision Library)是一個跨平臺的計算機視覺庫,可以用來開發(fā)實時圖像處理、計算機視覺和模式識別程序。在我們的日常工作中,有很多繁瑣乏味的任務其實都可以通過Python程序來處理,編程的目的就是讓計算機幫助我們解決問題,減少重復乏味的勞動。

以上就是Python實現(xiàn)圖像壓縮和圖像處理詳解的詳細內(nèi)容,更多關于Python圖像壓縮的資料請關注腳本之家其它相關文章!

相關文章

  • 使用python檢測網(wǎng)頁文本內(nèi)容屏幕上的坐標

    使用python檢測網(wǎng)頁文本內(nèi)容屏幕上的坐標

    在 Web 開發(fā)中,經(jīng)常需要對網(wǎng)頁上的文本內(nèi)容進行處理和操作,有時候,我們可能需要知道某個特定文本在屏幕上的位置,以便進行后續(xù)的操作,所以本文將介紹如何使用 Python 中的 Selenium 和 BeautifulSoup 庫來檢測網(wǎng)頁文本內(nèi)容在屏幕上的坐標,需要的朋友可以參考下
    2024-04-04
  • django2 快速安裝指南分享

    django2 快速安裝指南分享

    下面小編就為大家分享一篇django2 快速安裝指南分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Python遍歷某目錄下的所有文件夾與文件路徑

    Python遍歷某目錄下的所有文件夾與文件路徑

    這篇文章主要介紹了Python遍歷某目錄下的所有文件夾與文件路徑 以及輸出中文亂碼問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python中的腳本性能分析

    python中的腳本性能分析

    這篇文章主要介紹了python中的腳本性能分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • pycharm創(chuàng)建并使用虛擬環(huán)境的詳細圖文教程

    pycharm創(chuàng)建并使用虛擬環(huán)境的詳細圖文教程

    Python的虛擬環(huán)境是正常的現(xiàn)實環(huán)境相對應的,在虛擬環(huán)境中安裝的包是與現(xiàn)實環(huán)境隔離的,下面這篇文章主要給大家介紹了關于pycharm創(chuàng)建并使用虛擬環(huán)境的詳細圖文教程,需要的朋友可以參考下
    2022-08-08
  • Python實現(xiàn)從N個數(shù)中找到最大的K個數(shù)

    Python實現(xiàn)從N個數(shù)中找到最大的K個數(shù)

    這篇文章主要介紹了Python實現(xiàn)從N個數(shù)中找到最大的K個數(shù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python實現(xiàn)的統(tǒng)計文章單詞次數(shù)功能示例

    Python實現(xiàn)的統(tǒng)計文章單詞次數(shù)功能示例

    這篇文章主要介紹了Python實現(xiàn)的統(tǒng)計文章單詞次數(shù)功能,結(jié)合實例形式分析了Python針對字符串序列的遍歷、計算等相關操作技巧,需要的朋友可以參考下
    2019-07-07
  • python 爬取免費簡歷模板網(wǎng)站的示例

    python 爬取免費簡歷模板網(wǎng)站的示例

    這篇文章主要介紹了python 爬取免費簡歷模板網(wǎng)站的示例,幫助大家更好的理解和使用python 爬蟲,感興趣的朋友可以了解下
    2020-09-09
  • Sanic框架配置操作分析

    Sanic框架配置操作分析

    這篇文章主要介紹了Sanic框架配置操作,簡單分析了Sanic框架中常見的加載配置使用方法,并簡單說明了內(nèi)置配置的預定義變量與對應功能,需要的朋友可以參考下
    2018-07-07
  • numpy如何按條件給元素賦值np.where、np.clip

    numpy如何按條件給元素賦值np.where、np.clip

    這篇文章主要介紹了numpy如何按條件給元素賦值np.where、np.clip問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論

湖北省| 茌平县| 轮台县| 江安县| 梨树县| 旌德县| 兴山县| 灵石县| 济源市| 铜川市| 石楼县| 永和县| 沾化县| 安溪县| 五大连池市| 岑溪市| 仁化县| 榕江县| 万山特区| 区。| 陆丰市| 赫章县| 湘乡市| 湘潭市| 呼和浩特市| 会昌县| 扎赉特旗| 孟村| 天津市| 安康市| 岗巴县| 理塘县| 博兴县| 乌鲁木齐市| 西乌| 岱山县| 阳朔县| 博湖县| 呼和浩特市| 八宿县| 清水河县|