<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
如果你有使用顏料畫畫的經歷,那麼一定知道混合紅、黃、藍三種顏料可以得到其他的顏色,事實上這三種顏色就是美術中的三原色,它們是不能再分解的基本顏色。在計算機中,我們可以將紅、綠、藍三種色光以不同的比例疊加來組合成其他的顏色,因此這三種顏色就是色光三原色。在計算機系統中,我們通常會將一個顏色表示為一個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) |
對於一個由數位序列表示的影象來說,最小的單位就是影象上單一顏色的小方格,這些小方塊都有一個明確的位置和被分配的色彩數值,而這些一小方格的顏色和位置決定了該影象最終呈現出來的樣子,它們是不可分割的單位,我們通常稱之為畫素(pixel)。每一個影象都包含了一定量的畫素,這些畫素決定影象在螢幕上所呈現的大小,大家如果愛好拍照或者自拍,對畫素這個詞就不會陌生。
Pillow是由從著名的Python影象處理庫PIL發展出來的一個分支,通過Pillow可以實現影象壓縮和影象處理等各種操作。可以使用下面的命令來安裝Pillow。
pip install pillow
Pillow中最為重要的是Image類,可以通過Image模組的open函數來讀取影象並獲得Image型別的物件。
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()
# 通過Image物件的crop方法指定剪裁區域剪裁影象 image.crop((80, 20, 310, 360)).show()
# 通過Image物件的thumbnail方法生成指定尺寸的縮圖 image.thumbnail((128, 128)) image.show()
# 讀取駱昊的照片獲得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()
image = Image.open('guido.jpg') # 使用Image物件的rotate方法實現影象的旋轉 image.rotate(45).show() # 使用Image物件的transpose方法實現影象翻轉 # Image.FLIP_LEFT_RIGHT - 水平翻轉 # Image.FLIP_TOP_BOTTOM - 垂直翻轉 image.transpose(Image.FLIP_TOP_BOTTOM).show()
for x in range(80, 310): for y in range(20, 360): # 通過Image物件的putpixel方法修改影象指定畫素點 image.putpixel((x, y), (128, 128, 128)) image.show()
from PIL import ImageFilter # 使用Image物件的filter方法對影象進行濾鏡處理 # ImageFilter模組包含了諸多預設的濾鏡也可以自定義濾鏡 image.filter(ImageFilter.CONTOUR).show()
Pillow中有一個名為ImageDraw的模組,該模組的Draw函數會返回一個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 # 建立一個800*600的影象,背景色為白色 image = Image.new(mode='RGB', size=(width, height), color=(255, 255, 255)) # 建立一個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')
注意:上面程式碼中使用的字型檔案需要根據自己準備,可以選擇自己喜歡的字型檔案並放置在程式碼目錄下。
使用Python語言做開發,除了可以用Pillow來處理影象外,還可以使用更為強大的OpenCV庫來完成圖形影象的處理,OpenCV(Open Source Computer Vision Library)是一個跨平臺的計算機視覺庫,可以用來開發實時影象處理、計算機視覺和圖形識別程式。在我們的日常工作中,有很多繁瑣乏味的任務其實都可以通過Python程式來處理,程式設計的目的就是讓計算機幫助我們解決問題,減少重複乏味的勞動。
以上就是Python實現影象壓縮和影象處理詳解的詳細內容,更多關於Python影象壓縮的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45