pillow學習4

ImageChops 模塊
在 Pillow 庫的內置模塊 ImageChops 中包含了多個用于實現圖片合成的函數。這些合成
功能是通過計算通道中像素值的方式來實現的。其主要用于制作特效、合成圖片等操作。
常用的內置函數如下所示:
(1)相加函數 add(),功能是對兩張圖片進行算術加法運算。具體語法如下所示:

ImageChops.add(image1,image2,scale = 1.0,offset = 0

(2)減法函數 subtract(),功能是對兩張圖片進行算術減法運算。具體語法如下所示:

ImageChops.subtract(image1,image2,scale = 1.0,offset = 0
from PIL import Image
from PIL import ImageChops
#打開圖片
imga=Image.open('blend1.jpg')
imgb=Image.open('blend2.jpg')
#對兩張圖片進行減法運算
ImageChops.subtract(imga,imgb,1,0).show()

變暗函數 darker()
功能是比較兩個圖片的像素,取兩張圖片中對應像素的較小值,所
以合成時兩幅圖像中對應位置的暗部分得到保留,而去除亮部分。具體語法如下所示:

ImageChops.darker(image1,image2 )
from PIL import Image
from PIL import ImageChops
#打開圖片
imga=Image.open('blend1.jpg')
imgb=Image.open('blend2.jpg')
#使用變暗函數 darker()
ImageChops.darker(imga,imgb).show()

變亮函數 lighter()
與變暗函數 darker()相反,功能是比較兩個圖片(逐像素比較,返回一幅新的圖片,這幅新的圖片是將兩張圖片中較亮的部分疊加得到的。也就是說,在某
一點上,兩張圖中哪個的值大(亮)則取之。具體語法如下所示

from PIL import Image
from PIL import ImageChops
#打開圖片
imga=Image.open('blend1.jpg')
imgb=Image.open('blend2.jpg')
#使用變亮函數 lighter()
ImageChops.lighter(imga,imgb).show()

疊加函數 multiply(),功能是將兩張圖片互相疊加。如果用純黑色與某圖片進行疊加操
作,就會得到一幅純黑色的圖片。如果用純白色與圖片作疊加,則圖片不受影響。具體語法

from PIL import Image
from PIL import ImageChops
#打開圖片
imga=Image.open('blend1.jpg')
imgb=Image.open('blend2.jpg')
#將兩張圖片相互疊加
ImageChops.multiply(imga,imgb).show()
out = image1 * image2 / MAX

屏幕函數 screen(),功能是先反色后疊加,實現合成圖像的效果,就像將兩張幻燈片用
兩臺投影機同時投影到一個屏幕上的效果。具體語法如下所示:

from PIL import Image
from PIL import ImageChops
#打開圖片
imga=Image.open('blend1.jpg')
imgb=Image.open('blend2.jpg')
#實現反色后疊加
# ImageChops.screen(imga,imgb).show()

反色函數 invert(),類似于集合操作中的求補集,最大值為 Max,每個像素做減法,取
出反色。在反色時將用 255 減去一幅圖像的每個像素值,從而得到原來圖像的反相。也就是
說,其表現為“底片”性質的圖像。具體語法如下所示:

from PIL import Image
from PIL import ImageChops
#打開圖片
imga=Image.open('blend1.jpg')
imgb=Image.open('blend2.jpg')
#使用反色函數 invert()
ImageChops.invert(imga).show()

比較函數 difference(),可以逐像素做減法操作,計算出絕對值。函數 difference()能夠
兩幅圖像的對應像素值相減后的圖像,對應像素值相同的,則為黑色。函數 difference()通常
用來找出圖像之間的差異。具體語法如下所示:

from PIL import Image
from PIL import ImageChops
#打開圖片
imga=Image.open('blend1.jpg')
imgb=Image.open('blend2.jpg')
#使用比較函數 difference()
ImageChops.difference(imga,imgb).show()
out = abs(image1 - image2)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15436.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15436.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15436.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Windows系統】解決Intel 6代CPU安裝win7系統過程中無法操作鍵盤鼠標的問題

問題 微軟表示,從 2016 年 7 月 17 日起,新的 Intel、AMD 和Qualcomm 處理器將僅支持 Windows 10,不再支持 Windows 7 和 8.1。因此,Intel 6代以后的CPU因為沒有USB驅動無法完成win7系統的安裝。 下文核心思想是通過老毛桃PE系統…

云界洞見:移動云服務開啟技術創新與問題解決的新篇章

一、什么是移動云 移動云以“央企保障、安全智慧、算網一體、屬地服務”為品牌支撐,聚焦智能算力建設,打造一朵智能、智慧、安全可信可控的云,提供更優質的算力服務,引領云計算產業發展。 那么下面博主帶領大家了解移動云的優勢所…

關于c++的通過cin.get()維持黑框的思考

1.前言 由于本科沒有學過c語言,研究生階段接觸c上手有點困難,今天遇到關于通過cin.get()來讓黑框維持的原因。 2.思考 cin.get()維持黑框不消失的原因一言蔽之就是等待輸入。等待鍵盤的輸入內容并回車(一般是回車)后cin.get()才…

Plotly庫利用滑塊創建數據可視化

使用了Plotly庫來創建一個數據可視化圖表,并使用滑塊來控制顯示哪些數據 import plotly.graph_objects as go from plotly.subplots import make_subplots# 示例數據 x [1, 2, 3, 4, 5] y1 [1, 2, 3, 4, 5] y2 [5, 4, 3, 2, 1] y3 [2, 3, 1, 5, 4]# 創建子圖 f…

Python vscode debug: Error while enumerating installed packages.解決

記錄一個vscode python debug時出現的錯誤: 具體錯誤如下: E00000.030: Error while enumerating installed packages. Traceback (most recent call last): File “/root/.vscode-server/extensions/ms-python.debugpy-2024.0.0-linux-x64/bundled/lib…

java —— 類與方法

一、訪問修飾符 在類和方法中,均可使用訪問修飾符以鎖定該類或方法的被訪問權限。訪問修飾符有四種: (一)public 同一個項目中,對所有的類可見。 (二)protected 同一個項目中,對…

Study--Oracle-03-Oracle19C--RAC集群部署

一、硬件信息及配套軟件 1、硬件設置 RAC集群虛擬機:CPU:2C、內存:9G、操作系統:30G、數據庫安裝目錄:100G 數據存儲:50G (10G*5) 共享存儲:2G (1G*2) 2…

基于 vuestic-ui 實戰教程

1. 前言簡介 Vuestic UI是一個基于開源Vue 3的UI框架。它是一個MIT許可的UI框架,提供了易于配置的現成前端組件,并加快了響應式和快速加載Web界面的開發。它最初于2021年5月由EpicMax發布,這就是今天的Vuestic UI。 官網地址請點擊訪問 體驗…

博客摘錄「 python——正則表達式(re模塊)詳解」2023年11月17日

?P<name>) 分組起別名&#xff0c;匹配到的子串組在外部是通過定義的 name 來獲取的(?Pname) 引?別名為name分組匹配到的字符串

車與網絡之間(V2N)簡介

車與網絡之間&#xff08;V2N&#xff09;簡介 一、定義與概述 V2N&#xff0c;全稱為Vehicle-to-Network&#xff0c;是指車輛與網絡之間的通信和連接技術。這種技術使得車輛能夠與互聯網進行無縫連接&#xff0c;進而實現導航、娛樂、防盜等多種應用功能。在智能交通系統領…

【Linux安全】iptables防火墻(二)

目錄 一.iptables規則的保存 1.保存規則 2.還原規則 3.保存為默認規則 二.SNAT的策略及應用 1.SNAT策略的典型應用環境 2.SNAT策略的原理 2.1.未進行SNAT轉換后的情況 2.2.進行SNAT轉換后的情況 3.SNAT策略的應用 3.1.前提條件 3.2.實現方法 三.DNAT策略及應用 1…

【大模型應用開發極簡入門】使用GPT-4和ChatGPT的編程起點:ChatCompletion詳解

文章目錄 一. 多輪對話二. 使用起點&#xff1a; ChatCompletion三. 調用模型&#xff1a;create方法1. 主要的輸入參數&#xff1a;model、message2. 對話長度和token數量管理3. 可選參數 四. ChatCompletion端點的輸出格式 本文討論如何使用GPT-4和ChatGPT背后的模型&#xf…

怎么查看項目中antd的版本

使用antd時&#xff0c;有在線參考資料&#xff0c;但是需要根據項目需要&#xff0c;選擇對應版本的參考資料。 antd在線參考資料&#xff1a; 組件總覽 - Ant Design 如何查看當前項目中antd的版本呢&#xff1f; 在項目的終端中輸入&#xff1a; npm list antd antd官網選擇…

慶余年第2季,帶你走進怎樣的世界?

《慶余年》第二季 演員陣容與幕后團隊的新組合為我們帶來了別樣的觀影體驗 他的演技真的是在線&#xff0c;其實這劇本很難搞 該搞笑的時候要搞笑&#xff0c;但也不能一直在無厘頭胡鬧 所以題主說節奏拿捏的好我也很贊同 反觀有其他幾位演員控制力就差很多 特別是某一集…

Spring:JWT

文章目錄 一、介紹 一、介紹 JWT&#xff08;JSON Web Token&#xff09;是一種開放標準&#xff08;RFC 7519&#xff09;的方法&#xff0c;用于在雙方之間安全地傳輸信息。這些信息可以是驗證、授權、信息交換等。JWT 通常被用于在客戶端和服務器之間傳遞用戶信息&#xff…

STM32H743的FDCAN使用方法(1):STM32CubeMX初始化代碼生成

0 工具準備 1.STM32CubeMX1 前言 本文介紹基于STM32CubeMX&#xff0c;使用stm32h743xi的對FDCAN2進行配置的方法。 2 初始化代碼生成 2.1 選擇FDCAN引腳 本例選擇PB5、PB6作為FDCAN2的RX、TX引腳。 2.2 選擇FDCAN時鐘源 本例選擇PLL2Q作為FDCAN時鐘源&#xff0c;頻率…

Expected Boolean, got String with value “true“.

在vue el-tree節點添加屬性expand-on-click-node"false"&#xff0c;瀏覽器控制臺提示上面的錯誤&#xff0c; 將false的雙引號去年依然提示&#xff0c;然后在expand-on-click-node"false"最前面添加冒號&#xff0c;即變成雙向綁定&#xff0c;刷新頁面…

UDP的報文結構和注意事項

UDP協議是在傳輸層的協議。 UDP無連接&#xff0c;不可靠傳輸&#xff0c;面向數據報&#xff0c;全雙工。 UDP的報文結構 學習網絡協議&#xff0c;最主要的就是報文格式。 對于UDP來說&#xff0c;應用層的數據到達&#xff0c;UDP之后&#xff0c;就會給應用層的數據報前面…

服務器端口開放,服務器端口開放命令與方法的專業闡述

在計算機網絡中&#xff0c;服務器端口的開放是確保網絡通信暢通無阻的關鍵步驟。服務器端口是服務器與外部網絡通信的入口&#xff0c;通過正確配置和開放相應的端口&#xff0c;可以實現各種網絡服務和應用的功能。 一、命令與工具 在Linux系統中&#xff0c;常用的命令和工…

Python中如何將字符串轉換成可調用的方法

字符串轉化成方法 import importlibdef find_method_by_str(method_path):"""通過字符串&#xff0c;尋找方法"""if not method_path:return Nonemethods method_path.split(".")_module importlib.import_module(".".jo…