【深度學習實驗】圖像處理(一):Python Imaging Library(PIL)庫:圖像讀取、寫入、復制、粘貼、幾何變換、圖像增強、圖像濾波

文章目錄

  • 一、實驗介紹
  • 二、實驗環境
    • 1. 配置虛擬環境
    • 2. 庫版本介紹
  • 三、實驗內容
    • 0. 安裝 PIL 庫
    • 1. 圖像讀取和寫入
      • a. 圖像讀取
      • b. 圖像寫入
      • c. 構建新圖像
    • 2. 圖像復制粘貼
      • a. 圖像復制
      • b. 圖像局部復制
      • c. 圖像粘貼
    • 3. 幾何變換
      • a. 圖像調整大小
      • b. 圖像旋轉
      • c. 圖像翻轉
    • 4. 圖像增強
      • a. 圖像亮度增強
      • b. 圖像顏色增強
      • c. 圖像對比度增強
      • d. 圖像銳度增強
    • 5. 圖像濾波
      • a. 圖像濾波 - 浮雕
      • b. 圖像濾波 - 輪廓

?

一、實驗介紹

??圖像處理在深度學習領域中起到了至關重要的作用,Python Imaging Library(PIL)作為一種主流的圖像處理庫,為圖像的讀取、處理和增強提供了豐富的功能。

??本實驗將介紹 PIL 的基本用法,主要包括圖像讀取、寫入、復制、粘貼、幾何變換以及圖像增強、圖像濾波等方面。

Pillow v2.4.0 (PIL fork)

二、實驗環境

??本系列實驗使用了PyTorch深度學習框架,相關操作如下:

1. 配置虛擬環境

conda create -n DL python=3.7 
conda activate DL
pip install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
conda install matplotlib
 conda install scikit-learn

2. 庫版本介紹

軟件包本實驗版本目前最新版
matplotlib3.5.33.8.0
numpy1.21.61.26.0
python3.7.16
scikit-learn0.22.11.3.0
torch1.8.1+cu1022.0.1
torchaudio0.8.12.0.2
torchvision0.9.1+cu1020.15.2

三、實驗內容

0. 安裝 PIL 庫

??可以使用以下命令:

pip install pillow

1. 圖像讀取和寫入

??下面,我將介紹如何使用 PIL 的 Image.open 方法讀取圖像,并使用 display 方法顯示圖像。展示了如何使用 save 方法將圖像保存到設備上、使用 Image.new 構建新的圖像。

a. 圖像讀取

from PIL import Image# we can use open api to load image data 
img = Image.open('qomolangma.jpg')
print(img.format,img.size)
# show your image
display(img)

在這里插入圖片描述

b. 圖像寫入

import os# we can utilize save() to write current image to device.
file_name = 'qomolangmah.jpg'
img.save(file_name)
print(os.path.join(os.getcwd(),file_name))

c. 構建新圖像

image_new = Image.new('RGB', (50, 50), 'red')
display(image_new)
file_name = 'new.png'
image_new.save(file_name)
print(os.path.join(os.getcwd(), file_name))

在這里插入圖片描述

2. 圖像復制粘貼

??PIL 提供了靈活的圖像復制和粘貼功能,下面我將介紹全局級別和局部級別的圖像復制,以及使用 crop 方法進行局部圖像復制。此外,還有圖像的粘貼和合并操作。

a. 圖像復制

img = Image.open('qomolangma.jpg')
img_copy = img.copy()
display(img_copy)

b. 圖像局部復制

rect = (0, 0, 100, 100)
img_copy_local = img.crop(rect)
display(img_copy_local)

在這里插入圖片描述

c. 圖像粘貼

img_new = Image.open('new.png')
box = (10, 10, 60, 60)
img.paste(img_new, box)
display(img)

在這里插入圖片描述

3. 幾何變換

??圖像的幾何變換是圖像處理中的重要任務之一,下面我將詳細介紹圖像的調整大小、旋轉和翻轉操作。

a. 圖像調整大小

img = Image.open('qomolangma.jpg')
print(img.size)
img_resize = img.resize((512, 224))
print(img_resize.size)

b. 圖像旋轉

img_rotate = img.rotate(45)
display(img_rotate)

在這里插入圖片描述
或使用:

img_rotate = img.transpose(Image.ROTATE_90)
img_rotate = img.transpose(Image.ROTATE_180)
img_rotate = img.transpose(Image.ROTATE_270)
display(img_rotate)

c. 圖像翻轉

img_flip = img.transpose(Image.FLIP_LEFT_RIGHT)
display(img_flip)

在這里插入圖片描述

4. 圖像增強

??PIL 提供了 ImageEnhanceImageFilter等 模塊,用于圖像的亮度、顏色、對比度和銳度的增強。下面,我將通過示例演示如何使用這些模塊進行圖像增強。

a. 圖像亮度增強

from PIL import ImageEnhanceimg = Image.open('qomolangma.jpg')
img_bri = ImageEnhance.Brightness(img)
img_bri_enh = img_bri.enhance(factor=0.5) # factor is from 0 to 1. 
display(img_bri_enh)

在這里插入圖片描述

b. 圖像顏色增強

img_col = ImageEnhance.Color(img)
img_col_enh = img_col.enhance(factor=1.5)  # factor is from 0 to postive infinity
display(img_col_enh)

在這里插入圖片描述

c. 圖像對比度增強

img_con = ImageEnhance.Contrast(img)
img_con_enh = img_con.enhance(factor=1.5)  # factor is from 0 to postive infinity
display(img_con_enh)

在這里插入圖片描述

d. 圖像銳度增強

img_sha = ImageEnhance.Sharpness(img)
img_sha_enh = img_sha.enhance(factor=1.5)  # factor is from 0 to 2
display(img_sha_enh)

在這里插入圖片描述

5. 圖像濾波

??PIL 的 ImageFilter 模塊提供了多種濾波操作,如浮雕(EMBOSS)和輪廓(CONTOUR)等。

a. 圖像濾波 - 浮雕

from PIL.ImageFilter import EMBOSS, CONTOURimg_1 = img.filter(EMBOSS)
display(img_1)

在這里插入圖片描述

b. 圖像濾波 - 輪廓

img_2 = img.filter(CONTOUR)
display(img_2)

在這里插入圖片描述

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

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

相關文章

cocos creator中AStar算法實例

引擎版本 —— cocos creator2.3.4

高端貓罐頭有哪些?精選的5款優質的貓罐頭推薦!

很多鏟屎官看貓貓吃貓糧吃膩了,或者貓貓平時不喜歡喝水,又或者看貓貓太瘦了就想入手幾款貓罐頭但是又愁于不會選擇,而且現在貓罐頭風這么大不知道選什么好~ 作為一個開寵物店7年的店長,對于貓咪的飲食健康我一直都很重視&#xff…

數據結構與算法編程題16

已知長度為n的線性表A&#xff0c;請寫一時間復雜度為O(n)、空間復雜度為O(1)的算法&#xff0c;該算法刪除線性表中所有值為item的數據元素。 item 3 數組下標 i 0 1 2 3 4 5 6 7 8 順序表&#xff1a; 1 2 3 4 3 3 5 3 7 #include <iostream> using namespace std;typ…

Linux常用基礎命令及重要目錄,配置文件功能介紹

目錄 一&#xff0c;Linux常用必備基礎命令 1&#xff0c;網絡類命令 2&#xff0c;文件目錄類命令 3&#xff0c;操作類命令 4&#xff0c;關機重啟命令 5&#xff0c;幫助命令 6&#xff0c;查看顯示類命令 7&#xff0c;命令常用快捷鍵 二&#xff0c;Linux重要目錄…

文獻閱讀的六個步驟

對于科研人員來說&#xff0c;文獻閱讀是一項重要的任務&#xff0c;當然要找對方法和步驟&#xff0c;可以按照這些步驟來哦。 1、確定研究問題和目標&#xff1a;在開始閱讀外文文獻之前&#xff0c;明確您的研究問題和目標。這將幫助您更好地理解作者所說的話以及他們提出的…

windows版本的grafana如何離線安裝插件

本文以安裝clickhouse的插件為例&#xff0c;記錄下如何離線安裝插件 1 下載插件 ClickHouse plugin for Grafana | Grafana Labs 2 找到grafana的配置文件 打開編輯&#xff0c;搜索plugin關鍵字&#xff0c;修改plugin的加載目錄 目錄不存在&#xff0c;手動創建&#xff0…

【Python】Vscode解決Python中制表符和空格混用導致的縮進問題

【Python】Vscode解決Python中制表符和空格混用導致的縮進問題 文章目錄 【Python】Vscode解決Python中制表符和空格混用導致的縮進問題1. 問題來源2. 解決Reference 1. 問題來源 在python中使用縮進來進行代碼塊的分區&#xff0c;通常來說python的一個縮進包含4個空格&#…

軟件測試崗位與職業發展

一、軟件測試崗位有哪些&#xff1f; 在企業中&#xff0c;軟件測試領域的幾個典型的職位有&#xff1a;功能測試工程師&#xff08;也叫手工測試&#xff09;、自動化測試工程師、性能測試工程師、測試開發等。 1、功能測試&#xff08;手工測試&#xff09;工程師 主要工作內…

2023年“福建省工業互聯網+智能制造創新大賽”開啟報名

11月22日&#xff0c;由福建省總工會、福建省大數據集團有限公司共同舉辦的2023年“福建省工業互聯網智能制造創新大賽”啟動報名。 大賽積極響應《福建省總工會等八部門關于廣泛深入開展勞動和技能競賽為新發展階段新福建建設建工立業的意見》&#xff08;閩工〔2022〕70號&am…

mongodb數據庫的常用操作語句

說在前面的話 本文所有的操作示例&#xff0c;都以集合“HistoryTaskBase”為例。 一、查詢 1、時間區間 查詢“通知時間”介于2019-09-01到2019-10-01之間的數據。 db.getCollection(HistoryTaskBase).find({notifyTime:{$gte:ISODate(2019-09-01T00:00:00.000Z),$lte:ISOD…

基于STM32的電影院安全系統的設計與實現(論文+源碼)

1.系統設計 本次基于STM32F4的電影院安全系統的設計與實現&#xff0c;以STM32F4單片機為核心控制器&#xff0c;配合人體紅外傳感器&#xff0c;煙霧傳感器&#xff0c;甲醛傳感器等硬件設施&#xff0c;實現了對電影院內環境的檢測&#xff0c;當出現異常則會通過蜂鳴器和LE…

實現了一個簡易的計算器

計算器的界面如下&#xff1a; 實現過程&#xff1a; 通過html和css編寫這樣一個界面JavaScript實現功能 在通過JavaScript實現計算器功能的過程中&#xff0c;其實使用的都是一些基本指數。主要包括以下幾點&#xff1a; If/else 分支.For 循環JavaScript 函數箭頭函數&…

日志分析對決:揭示 ELK 與 GrayLog 的優勢和差異

&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交給時間 &#x1f3e0; &#xff1a;小破站 日志分析對決&#xff1a;揭示 ELK 與 GrayLog 的優勢和差異 前言第一&#xff1a;ELK Stack簡介第二&#xff1a;GrayLog簡介架構&#xff1a;主要特性&#xff1a; 第三&am…

騰訊待辦關停,怎么在手機上記錄待辦清單并設置提醒?

如果你之前一直在騰訊待辦這款微信小程序中記錄待辦事項&#xff0c;那么你就會發現小程序中彈窗的“業務關停通知”彈窗&#xff0c;查看其中的內容可知&#xff0c;由于業務方向調整&#xff0c;騰訊待辦將于2023年12月20日全面停止運營并下架&#xff0c;這就意味著我們無法…

面試:MyBatis問題

文章目錄 什么是MyBatis?MyBatis的核心組件有哪些&#xff1f;能說說MyBatis的工作原理嗎&#xff1f;MyBatis的工作流程是怎樣的&#xff1f;Mybaits 的優點 & 缺點MyBatis 與 JPA 有哪些不同&#xff1f;MyBatis一二級緩存的區別&#xff1f;MyBatis如何處理延遲加載&am…

【一文搞定】在Docker中搭建centos7遠程桌面環境(Xfce、Gnome兩種方式)

目錄 前言一、基于GNOME構建遠程桌面二、基于Xfce構建遠程桌面&#xff08;輕量級&#xff09; 前言 本文提供兩種安裝方式&#xff0c;均自己測試過&#xff0c;最后還是選擇了Xfce&#xff0c;因為它比較輕量級&#xff0c;占用資源較少。大家也可以都試試&#xff0c;比較感…

外地人可以在上海當老師嗎

隨著社會的發展&#xff0c;越來越多的人涌入大城市&#xff0c;其中也包括上海。在這個繁華的城市里&#xff0c;許多人都夢想成為一名老師&#xff0c;但是外地人可以在上海當老師嗎&#xff1f; 首先需要了解上海的教育政策。根據相關規定&#xff0c;外地人可以在上海當老師…

角色管理--產品角色負責人

研發組織管理--角色管理--產品角色負責人 定位 作為管理者&#xff0c;建設&#xff0c;管理&#xff0c;優化一個可控可自驅的產品經理團隊&#xff0c;并保持對應業務領域的產品競爭力&#xff0c;在保證業界平均水平的基礎上&#xff0c;不斷嘗試創新&#xff0c;爭做行業…

C#實現圖片背景色透明(親測有效)

重要代碼&#xff1a; Bitmap bm new Bitmap(origin); bm.MakeTransparent(); string Name_ "C:\\Users\\xx\\Downloads\\download\\" DateTime.Now.Ticks.ToString() ".ico";Size size new Size(256, 64);ConvertImageToIcon("C:…

視頻網關簡介

在數字化時代&#xff0c;視頻通信已經成為了人們日常生活和工作中的重要部分。為了滿足不同設備和平臺之間的視頻通信需求&#xff0c;各種視頻協議應運而生。然而&#xff0c;這些協議之間的差異使得相互通信變得復雜。因此&#xff0c;視頻網關作為一種重要的網絡設備&#…