人工智能通識(基礎(chǔ)、技術(shù)、前沿、倫理與實踐)-課件-第5章 計算機視覺_第1頁
人工智能通識(基礎(chǔ)、技術(shù)、前沿、倫理與實踐)-課件-第5章 計算機視覺_第2頁
人工智能通識(基礎(chǔ)、技術(shù)、前沿、倫理與實踐)-課件-第5章 計算機視覺_第3頁
人工智能通識(基礎(chǔ)、技術(shù)、前沿、倫理與實踐)-課件-第5章 計算機視覺_第4頁
人工智能通識(基礎(chǔ)、技術(shù)、前沿、倫理與實踐)-課件-第5章 計算機視覺_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

人工智能通識——基礎(chǔ)、技術(shù)、前沿、倫理與實踐主講教師和作者林子雨簡介廈門大學(xué)計算機科學(xué)與技術(shù)系副教授以第一作者編著18本大數(shù)據(jù)與人工智能教材被國內(nèi)1000余所高校采用榮獲“2022年福建省高等教育教學(xué)成果獎特等獎(個人排名第一)”入選“2021年高校計算機專業(yè)優(yōu)秀教師獎勵計劃”2018年國家精品在線開放課程(獨立主講)2020年國家級線上一流本科課程(獨立主講)2021年國家級線上一流本科課程(獨立主講)入選“2023年教育部國家智慧教育公共服務(wù)平臺應(yīng)用典型案例”大模型科普報告全網(wǎng)瀏覽量超過1000萬《人工智能通識——基礎(chǔ)、技術(shù)、前沿、倫理與實踐》教材《人工智能通識》林子雨

編著人民郵電出版社2025年11月第1版ISBN:978-7-115-68359-5定價:59.80元教材官網(wǎng)提供詳細信息和樣書申請官網(wǎng):/post/ai-introduction/掃碼訪問教材官網(wǎng)了解詳情、獲取資源、申請樣書教材官網(wǎng)提供配套教學(xué)資源:教學(xué)大綱、講義PPT、上機實驗手冊、案例視頻、MOOC視頻、大模型科普講座PPT、大模型講座視頻和1000道題庫等第4章計算機視覺目錄01計算機視覺概述

02計算機視覺的典型應(yīng)用場景03計算機視覺的核心任務(wù)04計算機視覺面臨的挑戰(zhàn)05實驗1:圖像處理庫Pillow的使用方法06實驗2:計算機視覺庫OpenCV的使用方法01計算機視覺概述Partone5.1計算機視覺概述

什么是計算機視覺計算機視覺的發(fā)展歷史計算機視覺與人類視覺的差異5.1.1什么是計算機視覺計算機視覺是人工智能的一個重要分支,它致力于讓計算機能夠“看懂”并理解圖像和視頻中的內(nèi)容,就像人類視覺系統(tǒng)那樣對視覺信息進行分析、解釋和決策。簡單來說,就是讓機器具備“視覺感知”能力,從像素數(shù)據(jù)中提取有意義的信息。5.1.1什么是計算機視覺計算機視覺的核心是模擬人類視覺的認知過程,具體包括以下幾個層面:通過攝像頭、傳感器等設(shè)備獲取圖像或視頻(將物理世界的光信號轉(zhuǎn)化為數(shù)字信號)。感知對原始圖像進行預(yù)處理(如去噪、縮放、增強),為后續(xù)分析做準備。處理提取圖像中的關(guān)鍵特征(如邊緣、形狀、顏色、紋理,或更復(fù)雜的物體結(jié)構(gòu))。分析對特征進行解讀,實現(xiàn)更高層次的認知,例如,識別物體(“這是一只貓”)、場景(“這是在室內(nèi)”)、人臉(“這是張三”),理解行為(“畫面中的人在跑步”)、關(guān)系(“貓在桌子上”),以及推斷語義(“這張圖表達的是開心的情緒”)等。理解5.1.2計算機視覺的發(fā)展歷史計算機視覺經(jīng)歷了如下幾個發(fā)展階段:1960年代-2000年2000年-2012年2012年至今基于規(guī)則的“笨拙嘗試”。1966年,MIT啟動“夏季視覺項目”,試圖讓計算機描述圖片內(nèi)容,但受限于技術(shù),僅能識別簡單幾何圖形。這一時期的方法依賴人工規(guī)則,如通過“是否有四條腿+尾巴”識別“狗”,但遇到復(fù)雜圖像(如狗臥著時腿被遮擋)就失效。早期探索手工設(shè)計特征的“瓶頸”。研究者提出SIFT、HOG等手工特征提取算法,結(jié)合支持向量機(SVM)等分類器,實現(xiàn)了一定的目標識別能力。但這些特征泛化能力差,例如,SIFT特征在光照變化大的場景中識別準確率大幅下降,難以滿足實際需求。特征工程時代數(shù)據(jù)驅(qū)動的“飛躍”。2012年,AlexNet在ImageNet比賽中的突破性表現(xiàn),標志著計算機視覺進入深度學(xué)習(xí)時代。此后,模型性能飛速提升。2015年,ResNet通過“殘差連接”解決深層網(wǎng)絡(luò)訓(xùn)練難題,層數(shù)達152層,錯誤率降至3.57%;2017年MaskR-CNN實現(xiàn)“目標檢測+語義分割”一體化,能精準定位物體并標記像素;2020年VisionTransformer(ViT)將Transformer模型引入視覺領(lǐng)域,通過“注意力機制”聚焦關(guān)鍵區(qū)域,進一步提升復(fù)雜場景的識別能力。深度學(xué)習(xí)革命5.1.3計算機視覺與人類視覺的差異雖然計算機視覺在很多任務(wù)上(如人臉識別、目標檢測)已達到甚至超越人類水平,但與人類視覺相比仍有明顯局限:人類視覺具有強大的泛化能力(能快速識別從未見過的物體),而機器需要大量數(shù)據(jù)訓(xùn)練才能應(yīng)對新場景。人類能結(jié)合上下文和常識理解圖像(如“下雨時人們會打傘”),而機器對復(fù)雜語義的理解仍較薄弱。人類視覺對光照、角度、遮擋的魯棒性更強,機器在極端條件下容易出錯。02計算機視覺的典型應(yīng)用場景Parttwo5.2計算機視覺的典型應(yīng)用場景計算機視覺的典型應(yīng)用場景包括:安防領(lǐng)域自動駕駛醫(yī)療影像工業(yè)質(zhì)檢消費電子典型應(yīng)用場景5.2計算機視覺的典型應(yīng)用場景安防領(lǐng)域——智能監(jiān)控的“火眼金睛”人臉識別在人群中快速定位目標人物(如尋找失蹤人員),準確率達99.9%。行為分析識別異常行為(如打架、攀爬、徘徊)、自動報警。交通監(jiān)控抓拍闖紅燈、違章停車,統(tǒng)計車流量,輔助交通調(diào)度。例如,深圳的“智慧交通”系統(tǒng)通過攝像頭識別車牌,實時關(guān)聯(lián)車輛信息,實現(xiàn)違章自動處理,效率比人工提升10倍。5.2計算機視覺的典型應(yīng)用場景自動駕駛——車輛的“視覺神經(jīng)”自動駕駛汽車的視覺系統(tǒng)由多個攝像頭、激光雷達組成,負責(zé)識別交通標志(限速、禁止左轉(zhuǎn)等)、檢測行人和其他車輛并預(yù)測運動軌跡、判斷車道線并保持車輛在車道內(nèi)行駛。特斯拉的Autopilot系統(tǒng)通過8個攝像頭和神經(jīng)網(wǎng)絡(luò),能在復(fù)雜路況下實現(xiàn)自動變道、避讓障礙物,是L2級自動駕駛的核心技術(shù)。5.2計算機視覺的典型應(yīng)用場景醫(yī)療影像——輔助診斷的“第二雙眼睛”在CT、MRI影像中識別腫瘤、出血點(如肺結(jié)節(jié)、腦溢血),比人工更早發(fā)現(xiàn)早期病變。疾病篩查通過顯微鏡圖像判斷細胞是否癌變(如乳腺癌篩查),減輕醫(yī)生負擔(dān)。病理分析實時識別手術(shù)區(qū)域的血管、神經(jīng),避免誤傷。手術(shù)導(dǎo)航例如,谷歌的DeepMind開發(fā)的眼底影像分析模型,能從視網(wǎng)膜照片中預(yù)測糖尿病視網(wǎng)膜病變,準確率與眼科醫(yī)生相當。5.2計算機視覺的典型應(yīng)用場景工業(yè)質(zhì)檢——生產(chǎn)線上的“質(zhì)量衛(wèi)士”在制造業(yè)中,計算機視覺替代人工檢測產(chǎn)品缺陷,主要包括:電子行業(yè)檢查芯片的劃痕、焊錫缺陷,精度達微米級。汽車行業(yè)識別車身噴漆的氣泡、凹陷。食品行業(yè)檢測包裝破損、雜質(zhì)(如飲料中的異物)。5.2計算機視覺的典型應(yīng)用場景消費電子——提升體驗的“視覺魔法”人像虛化、夜景增強、智能構(gòu)圖依賴視覺算法。手機拍照通過攝像頭識別現(xiàn)實環(huán)境,疊加虛擬物體(如AR導(dǎo)航在實景中畫路線)。AR/VR識別人手動作(如揮手、握拳),實現(xiàn)無接觸操作(如智能電視換臺)。手勢控制03計算機視覺的核心任務(wù)Partthree5.3計算機視覺的核心任務(wù)計算機視覺的任務(wù)非常廣泛,涵蓋從底層圖像處理到高層語義理解的全流程,其核心是解決“如何讓機器從視覺數(shù)據(jù)中獲取有效信息并做出決策”的問題,具體包括:圖像分類與識別目標檢測與定位圖像分割目標跟蹤姿態(tài)估計三維視覺圖像生成與編輯視覺語義理解5.3計算機視覺的核心任務(wù)圖像分類與識別將圖像或圖像區(qū)域劃分到預(yù)定義的類別(如“貓”“狗”“汽車”)。研究重點是:如何提高分類精度(尤其在類別多、相似度高的場景)。增強對干擾因素(光照、角度、遮擋)的魯棒性。03減少對標注數(shù)據(jù)的依賴(如小樣本學(xué)習(xí))。0102研究重點5.3計算機視覺的核心任務(wù)目標檢測與定位在圖像中同時實現(xiàn)“識別物體類別”和“定位物體位置”(通常用邊界框標記),可處理單目標或多目標場景。研究重點是:研究重點是提高檢測速度(滿足實時性需求,如自動駕駛)。提升小目標/密集目標的檢測效果。降低計算資源消耗。5.3計算機視覺的核心任務(wù)圖像分割按語義將圖像像素劃分為不同區(qū)域(每個區(qū)域?qū)?yīng)一個實體或概念),比目標檢測更精細。主要包括:語義分割將所有像素分類(如“道路”“行人”“車輛”)。全景分割同時實現(xiàn)語義分割和實例分割。研究重點是提高分割精度(尤其邊緣區(qū)域)、降低計算復(fù)雜度。實例分割區(qū)分同一類別的不同個體(如區(qū)分畫面中3輛不同的汽車)。5.3計算機視覺的核心任務(wù)目標跟蹤在視頻序列中持續(xù)追蹤特定目標的位置和狀態(tài)(如運動軌跡、姿態(tài)變化)。研究重點是:解決目標遮擋、快速運動、外觀變化(如光照、角度改變)導(dǎo)致的跟蹤漂移問題。實現(xiàn)多目標跟蹤(如同時追蹤視頻中所有行人)。5.3計算機視覺的核心任務(wù)姿態(tài)估計估計圖像中人體、動物或物體的關(guān)鍵點位置及姿態(tài)(如人體的關(guān)節(jié)點、手指姿態(tài),車輛的朝向)。研究重點是:研究重點提升關(guān)鍵點定位精度理遮擋和復(fù)雜姿態(tài)(如彎腰、交叉手臂)從單張圖像擴展到視頻序列的動態(tài)姿態(tài)估計5.3計算機視覺的核心任務(wù)三維視覺從二維圖像/視頻中恢復(fù)三維結(jié)構(gòu)或信息,彌補二維視覺的局限性。主要包括:通過雙目相機或多視角圖像計算像素的深度信息。立體匹配構(gòu)建物體或場景的三維模型(如文物數(shù)字化、建筑建模)。三維重建僅用單張圖像推斷深度(降低設(shè)備成本)。單目深度估計機器人或自動駕駛設(shè)備在未知環(huán)境中實時定位自身位置并構(gòu)建周圍地圖。視覺SLAM(同步定位與地圖構(gòu)建)5.3計算機視覺的核心任務(wù)圖像生成與編輯根據(jù)輸入生成新圖像或修改已有圖像,屬于“創(chuàng)造性”視覺任務(wù)。主要包括:如GAN(生成對抗網(wǎng)絡(luò))生成逼真人臉、AI繪畫(文本生成圖像)、圖像超分辨率(將低清圖轉(zhuǎn)為高清圖)。圖像生成如目標移除(從圖中刪除某物體并填補背景)、風(fēng)格遷移(將照片轉(zhuǎn)為梵高畫風(fēng))、圖像修復(fù)(修復(fù)老照片的破損部分)。圖像編輯5.3計算機視覺的核心任務(wù)視覺語義理解超越對物體的簡單識別,理解圖像中物體的關(guān)系、行為和高層語義。主要包括:視覺問答(VQA)根據(jù)圖像回答自然語言問題(如“圖中有幾個人?”)。場景理解判斷圖像的場景類型(如“廚房”“街道”“海灘”)及場景中的語義關(guān)系(如“人在車內(nèi)”“杯子在桌子上”)。圖像描述用自然語言描述圖像內(nèi)容(如“一只貓在沙發(fā)上睡覺”)。行為識別:單擊添加項目標題識別視頻中人物的動作或行為(如“跑步”“握手”“打架”)。04計算機視覺面臨的挑戰(zhàn)Partfour5.4計算機視覺面臨的挑戰(zhàn)挑戰(zhàn)復(fù)雜環(huán)境干擾數(shù)據(jù)偏見三維場景理解對抗攻擊5.4計算機視覺面臨的挑戰(zhàn)復(fù)雜環(huán)境干擾——視覺的“攔路虎”光照變化同一物體在強光、弱光下呈現(xiàn)不同顏色,可能導(dǎo)致識別錯誤(如將陰影中的白色物體誤判為黑色)。01遮擋問題目標被部分遮擋時(如人戴口罩、物體被遮擋一半),特征提取困難。02視角差異從正面、側(cè)面看同一物體,形狀差異大(如正面看車是長方形,側(cè)面看是梯形),模型難以統(tǒng)一識別。035.4計算機視覺面臨的挑戰(zhàn)對抗攻擊——微小改動引發(fā)“視覺幻覺”對圖像進行人類難以察覺的微小修改,可導(dǎo)致計算機視覺模型誤判。這種“對抗攻擊”對自動駕駛等安全領(lǐng)域構(gòu)成威脅,目前尚無徹底解決辦法,只能通過增加對抗樣本訓(xùn)練提高魯棒性。5.4計算機視覺面臨的挑戰(zhàn)數(shù)據(jù)偏見——“看”到的世界不完整訓(xùn)練數(shù)據(jù)的偏見會導(dǎo)致模型歧視:若訓(xùn)練集中女性、有色人種樣本少,人臉識別系統(tǒng)對這些群體的識別準確率低。樣本不平衡用城市道路數(shù)據(jù)訓(xùn)練的自動駕駛視覺模型,在鄉(xiāng)村泥濘路面可能無法識別路況。場景局限例如,2018年某AI公司的人臉識別系統(tǒng)對深膚色女性的錯誤率比淺膚色男性高34.7%,暴露了數(shù)據(jù)偏見問題。5.4計算機視覺面臨的挑戰(zhàn)三維場景理解——從“平面”到“立體”的難題現(xiàn)有模型擅長處理二維圖像,但對三維空間的理解不足:距離判斷從單張圖片難以精準推斷物體間的距離(如自動駕駛中判斷與前車的車距)。無法像人類一樣自然理解“近大遠小”的透視關(guān)系,復(fù)雜場景中易誤判。深度感知05實驗1:圖像處理庫Pillow的使用方法Partfive5.5實驗1:圖像處理庫Pillow的使用方法Pillow(PythonImagingLibrary(PIL)Fork)是一個功能強大的Python圖像處理庫,它是PIL(PythonImagingLibrary)的一個分支,由于PIL已經(jīng)停止維護,Pillow應(yīng)運而生并繼承了PIL的全部功能,同時還增加了新的特性和對Python3的支持。Pillow提供了廣泛的圖像文件格式支持和各種圖像處理功能,使Python開發(fā)者能夠輕松地對圖像進行各種操作。5.5實驗1:圖像處理庫Pillow的使用方法Pillow概述Pillow庫Image類Pillow庫ImageFilter類和ImageEnhance類Pillow庫ImageDraw類和ImageFont類圖像的字符畫繪制5.5.1Pillow概述Pillow庫的主要特點和功能如下:圖像格式支持像素級操作文字繪制圖像處理功能圖像顯示圖像分析圖像轉(zhuǎn)換性能優(yōu)化5.5.1Pillow概述通過Python包管理器pip安裝Pillow是最簡單、輕量級的一種安裝方式,并且這種方法適用于任何平臺,只需執(zhí)行以下命令即可:>pipinstallpillow5.5.2Pillow庫Image類Pillow庫Image類創(chuàng)建Image對象01Pillow圖像縮放操作04Image對象的基本屬性02Pillow圖片格式轉(zhuǎn)換035.5.2Pillow庫Image類創(chuàng)建Image對象Image類是Pillow庫中最為重要的類,該類被定義在和與其同名的Image模塊中。需要使用下列導(dǎo)包方式引入Image模塊:>>>fromPILimportImage使用Image類可以實例化一個Image對象,通過調(diào)用該對象的一系列屬性和方法對圖像進行處理。Pillow提供了兩種創(chuàng)建Image實例對象的方法:open()和new(),這里介紹open()的使用方法。使用Image類的open()方法,可以創(chuàng)建一個Image對象,語法格式如下:im=Image.open(fp,mode="r")其中,fp表示文件路徑,采用字符串格式;mode是可選參數(shù),若出現(xiàn)該參數(shù),則必須設(shè)置為"r",否則會引發(fā)ValueError異常。5.5.2Pillow庫Image類創(chuàng)建Image對象下面是具體實例:>>>fromPILimportImage>>>#打開一個位于Python當前工作目錄下的圖片文件xiamen-university.jpg>>>#需要提前準備好圖片xiamen-university.jpg>>>im=Image.open("xiamen-university.jpg")>>>#調(diào)用show()方法顯示圖像>>>im.show()5.5.2Pillow庫Image類Image對象的基本屬性Image對象有一些常用的基本屬性,這些屬性能夠幫助我們了解圖片的基本信息,下面對這些屬性用法做簡單的演示:>>>fromPILimportImage>>>im=Image.open("xiamen-university.jpg")>>>print("寬是%s高是%s"%(im.width,im.height))>>>print("圖像的大小size:",im.size)>>>print("圖像的格式:",im.format)>>>print("圖像是否為只讀:",im.readonly)>>>print("圖像信息:",)>>>print("圖像模式信息:",im.mode)5.5.2Pillow庫Image類Pillow圖片格式轉(zhuǎn)換Pillow能夠很輕松地實現(xiàn)圖片格式之間的轉(zhuǎn)換。圖片格式之間的轉(zhuǎn)換主要有兩種方法:save()和convert()。save()方法用于保存圖像,當不指定文件格式時,它會以默認的圖片格式來存儲;如果指定圖片格式,則會以指定的格式存儲圖片。save()的語法格式如下:Image.save(fp,format=None)其中,fp是圖片的存儲路徑,包含圖片的名稱,采用字符串格式;format是可選參數(shù),用于指定圖片的格式。>>>fromPILimportImage>>>im=Image.open("xiamen-university.jpg")>>>im.save('xiamen-university.bmp')5.5.2Pillow庫Image類Pillow圖片格式轉(zhuǎn)換但是,并非所有的圖片格式都可以用save()方法轉(zhuǎn)換完成,比如,將PNG格式的圖片保存為JPG格式,如果直接使用save()方法就會報錯。引發(fā)錯誤的原因是由于PNG和JPG圖像模式不一致導(dǎo)致的。其中,PNG是四通道RGBA模式,即紅色、綠色、藍色、Alpha透明色;JPG是三通道RGB模式。因此,要想實現(xiàn)圖片格式的轉(zhuǎn)換,就要將PNG轉(zhuǎn)變?yōu)槿ǖ繰GB模式。Image類提供的convert()方法可以實現(xiàn)圖像模式的轉(zhuǎn)換。該函數(shù)提供了多個參數(shù),比如mode、matrix、dither等,其中,最關(guān)鍵的參數(shù)是mode,其余參數(shù)無須關(guān)心。語法格式如下:convert(mode,params**)其中,mode指的是要轉(zhuǎn)換成的圖像模式;params是其他可選參數(shù)。5.5.2Pillow庫Image類Pillow圖片格式轉(zhuǎn)換>>>fromPILimportImage>>>#假設(shè)在Python當前工作目錄下已經(jīng)存在圖片文件example.png>>>im=Image.open("example.png")>>>image=im.convert('RGB')>>>im.save('example.jpg')5.5.2Pillow庫Image類Pillow圖像縮放操作

在圖像處理過程中,經(jīng)常會遇到縮小或放大圖像的情況,Image類提供的resize()方法能夠?qū)崿F(xiàn)任意縮小和放大圖像。resize()函數(shù)的語法格式如下:resize(size,resample=image.BICUBIC,box=None,reducing_gap=None)5.5.2Pillow庫Image類Pillow圖像縮放操作各個參數(shù)的含義如下:可選參數(shù),浮點參數(shù)值,用于優(yōu)化圖片的縮放效果,常用參數(shù)值有3.0和5.0。reducing_gap元組參數(shù)(width,height),圖片縮放后的尺寸。size可選參數(shù),指圖像重采樣濾波器,默認為Image.BICUBIC。resample對指定圖片區(qū)域進行縮放,box的參數(shù)值是長度為4的像素坐標元組,即(左,上,右,下)。注意,被指定的區(qū)域必須在原圖的范圍內(nèi),如果超出范圍就會報錯。當不傳該參數(shù)時,默認對整個原圖進行縮放。box5.5.2Pillow庫Image類Pillow圖像縮放操作>>>fromPILimportImage>>>im=Image.open("example.png")>>>print("圖像的大小size:",im.size)>>>image=im.resize((135,54))#縮小圖片>>>image.save("example-small.png")>>>print("查看新圖像的尺寸",image.size)5.5.2Pillow庫Image類Pillow圖像縮放操作Image類還支持創(chuàng)建縮略圖。縮略圖指的是將原圖縮小至一個指定大小的圖像。通過創(chuàng)建縮略圖可以使圖像更易于展示和瀏覽。Image對象提供了一個thumbnail()方法用來生圖像的縮略圖,該函數(shù)的語法格式如下:thumbnail(size,resample)其中,size是元組參數(shù),指的是縮小后的圖像大??;resample是可選參數(shù),指圖像重采樣濾波器,有四種過濾方式,分別是Image.BICUBIC(雙立方插值法)、PIL.Image.NEAREST(最近鄰插值法)、PIL.Image.BILINEAR(雙線性插值法)、PIL.Image.LANCZOS(下采樣過濾插值法),默認為Image.BICUBIC。>>>fromPILimportImage>>>im=Image.open("example.png")>>>im.thumbnail((100,50))>>>print("縮略圖尺寸",im.size)>>>im.save("example-thumbnail.png")5.5.2Pillow庫Image類Pillow圖像縮放操作在圖像處理過程中,對于某些不需要精細處理的環(huán)節(jié),我們往往采用批量處理方法,比如批量轉(zhuǎn)換格式、批量修改尺寸等,這是一種提升工作效率的有效途徑,它避免了單一、重復(fù)的操作。通過Pillow

提供的Image.resize()方法可以批量地修改圖片尺寸。>>>#批量修改圖片尺寸>>>importos>>>fromPILimportImage>>>#讀取圖片目錄,假設(shè)存在“C:/python/image”目錄,并且該目錄下有很多圖片>>>fileName=os.listdir('C:/python/image')>>>print(fileName)>>>#設(shè)定尺寸>>>width=200>>>height=200>>>#如果目錄不存在,則創(chuàng)建目錄new-image>>>ifnotos.path.exists('C:/python/new-image/'):>>>os.mkdir('C:/python/new-image/')>>>#循環(huán)讀取image目錄下的每一張圖片,轉(zhuǎn)換尺寸后,保存到new-image目錄下>>>forimginfileName:>>>old_pic=Image.open('C:/python/image/'+img)>>>new_pic=old_pic.resize((width,height),Image.BILINEAR)>>>new_pic.save('C:/python/new-image/'+img)5.5.3Pillow庫ImageFilter類和ImageEnhance類ImageFilter類01Pillow庫ImageFilter類和ImageEnhance類ImageEnhance類025.5.3Pillow庫ImageFilter類和ImageEnhance類ImageFilter類Pillow通過ImageFilter類達到圖像降噪的目的,該類中集成了不同種類的濾波器,通過調(diào)用它們從而實現(xiàn)圖像的平滑、銳化、邊界增強等圖像降噪操作。常見的降噪濾波器如表所示。方法功能描述ImageFilter.BLUR圖像的模糊效果ImageFilter.CONTOUR圖像的輪廓效果ImageFilter.DETAIL圖像的細節(jié)效果ImageFilter.FIND_EDGES圖像的邊界效果ImageFilter.EMBOSS圖像的浮雕效果ImageFilter.EDGE_ENHANCE圖像的邊界加強效果ImageFilter.EDGE_ENHANCE_MORE圖像的閾值邊界加強效果ImageFilter.SMOOTH圖像的平滑效果ImageFilter.SMOOTH_MORE圖像的閾值平滑效果ImageFilter.SHARPEN圖像的銳化效果5.5.3Pillow庫ImageFilter類和ImageEnhance類ImageFilter類

這里給出ImageFilter類的用法實例。假設(shè)有一個廈門大學(xué)建南大禮堂的圖片xiamen-university.jpg(如圖所示),這里根據(jù)這個圖片生成各種不同的效果圖。5.5.3Pillow庫ImageFilter類和ImageEnhance類ImageFilter類首先,執(zhí)行如下代碼生成輪廓圖(如圖所示):>>>#導(dǎo)入Image類和ImageFilter類>>>fromPILimportImage,ImageFilter>>>im=Image.open("xiamen-university.jpg")>>>im2=im.filter(ImageFilter.CONTOUR)>>>im2.save("xiamen-university-contour.png")5.5.3Pillow庫ImageFilter類和ImageEnhance類ImageFilter類然后,繼續(xù)執(zhí)行如下代碼生成邊緣檢測圖(如圖所示):>>>im3=im.filter(ImageFilter.FIND_EDGES)>>>im3.save("xiamen-university-edges.png")5.5.3Pillow庫ImageFilter類和ImageEnhance類ImageFilter類

然后,繼續(xù)執(zhí)行如下代碼生成浮雕圖(如圖所示):>>>im4=im.filter(ImageFilter.EMBOSS)>>>Im4.save("xiamen-university-emboss.png")5.5.3Pillow庫ImageFilter類和ImageEnhance類ImageEnhance類ImageEnhance類提供了更高級的圖像增強功能,如調(diào)整色彩度、亮度、對比度、銳化等,如表所示。方法功能描述ImageEnhance.enhance(factor)對選擇屬性的數(shù)值增強factor倍ImageEnhance.Color(im)調(diào)整圖像的顏色平衡ImageEnhance.Contrast(im)調(diào)整圖像的對比度ImageEnhance.Brightness(im)調(diào)整圖像的亮度ImageEnhance.Sharpness(im)調(diào)整圖像的銳度5.5.3Pillow庫ImageFilter類和ImageEnhance類ImageEnhance類下面給出一個具體實例(圖像增強效果如圖所示):>>>fromPILimportImage>>>fromPILimportImageEnhance>>>im=Image.open("xiamen-university.jpg")>>>im2=ImageEnhance.Contrast(im)>>>im2.enhance(20).save("xiamen-university-enhance.jpg")5.5.4Pillow庫ImageDraw類和ImageFont類Pillow庫ImageDraw類和ImageFont類ImageFont類為圖片添加水印ImageDraw類0301025.5.4Pillow庫ImageDraw類和ImageFont類Pillow庫提供了添加水印的方法,操作簡單,易學(xué)、易用,這里需要用到ImageDraw類和ImageFont類。ImageDraw類ImageDraw類提供了一系列的繪圖方法,通過該模塊可以創(chuàng)建一個新的圖形,或者在現(xiàn)有的圖像上再繪制一個圖形,從而起到對原圖注釋和修飾的作用。下面創(chuàng)建一個ImageDraw對象:draw=ImageDraw.Draw(im)上述方法會返回一個ImageDraw對象,參數(shù)im表示Image對象。這里可以把Image對象理解成畫布,通過調(diào)用ImageDraw對象的一些方法,實現(xiàn)了在畫布上繪制出新的圖形目的。5.5.4Pillow庫ImageDraw類和ImageFont類ImageDraw類ImageDraw對象的常用方法如表所示。方法功能描述text在圖像上繪制文字line繪制直線、線段eclipse繪制橢圓形rectangle繪制矩形polygon繪制多邊形5.5.4Pillow庫ImageDraw類和ImageFont類ImageDraw類繪制矩形圖的語法格式如下:draw.rectangle(xy,fill=None,outline=None)各個參數(shù)的含義如下:xy元組參數(shù)值,以圖像的左上角為坐標原點,表示矩形圖的位置、圖形大小的坐標序列,形如((x1,y1,x2,y2))。fill矩形圖的背景填充色。outline矩形圖的邊框線條顏色。5.5.4Pillow庫ImageDraw類和ImageFont類ImageDraw類這里給出一個具體實例:>>>fromPILimportImage,ImageDraw>>>#創(chuàng)建Image對象,作為背景圖>>>im=Image.new('RGB',(300,300),color='yellow')>>>#創(chuàng)建ImageDraw對象>>>draw=ImageDraw.Draw(im)>>>#以左上角為原點,繪制矩形>>>draw.rectangle((50,100,100,150),fill=(255,0,0),outline=(0,0,0))>>>#保存圖片>>>im.save("rectangle.png")#保存以后的圖片如圖所示5.5.4Pillow庫ImageDraw類和ImageFont類ImageFont類ImageFont類通過加載不同格式的字體文件,從而在圖像上繪制出不同類型的文字。創(chuàng)建字體對象的語法格式如下:font=ImageFont.truetype(font='字體文件路徑',size=字體大小)如果想要在圖片上添加文本,還需要使用ImageDraw.text()方法,語法格式如下:d.text((x,y),"text",font,fill)5.5.4Pillow庫ImageDraw類和ImageFont類ImageFont類各個參數(shù)的含義如下:圖像左上角為坐標原點,(x,y)表示添加文本的起始坐標位置。(x,y)0102字符串格式,表示要添加的文本內(nèi)容。textImageFont對象。font0304文本填充顏色。fill5.5.4Pillow庫ImageDraw類和ImageFont類為圖片添加水印

這里給出一個為圖片添加文字水印的實例:>>>fromPILimportImage,ImageFont,ImageDraw>>>#打開圖片,返回Image對象>>>im=Image.open("xiamen-university.jpg")>>>#創(chuàng)建畫布對象>>>draw=ImageDraw.Draw(im)>>>#加載計算機本地字體文件>>>font=ImageFont.truetype(font='C:\\Windows\\Fonts\\simhei.ttf',size=36)>>>#在原圖像上添加文本>>>draw.text(xy=(90,60),text='廈門大學(xué)',fill=(255,0,0),font=font)>>>im.save("xiamen-university-watermark.jpg")#生成的圖片如圖所示5.5.5圖像的字符畫繪制使用Pillow來創(chuàng)建字符畫(ASCIIArt)是一個有趣的任務(wù)?;舅悸肥潜闅v圖像的每個像素,然后根據(jù)其顏色或亮度將其映射到一個字符上。下面的代碼文件ascii_img.py是一個簡單的示例,展示了如何使用Pillow和Python來實現(xiàn)這個功能。#ascii_img.pyfromPILimportImagedefscale_image(img,new_width=100):(original_width,original_height)=img.sizeaspect_ratio=original_height/float(original_width)new_height=int(aspect_ratio*new_width)img=img.resize((new_width,new_height))returnimg

defgray_scale(img):returnimg.convert('L')5.5.5圖像的字符畫繪制defmap_to_ascii(pixel_value,range_width=25):#將像素值映射到ASCII字符集

ifpixel_value==255:return'█'elifpixel_value<25:return''else:returnchr(int((pixel_value/range_width)+33))#33是'!'的ASCII碼

5.5.5圖像的字符畫繪制defascii_art(image_path,width=100):img=Image.open(image_path)img=scale_image(img,width)gray=gray_scale(img)ascii_text=''foryinrange(img.height):forxinrange(img.width):pixel_value=gray.getpixel((x,y))ascii_text+=map_to_ascii(pixel_value)ascii_text+='\n'returnascii_text

#使用示例

ascii_img=ascii_art('xiamen-university.jpg',width=100)print(ascii_img)5.5.5圖像的字符畫繪制執(zhí)行代碼文件ascii_img.py,就可以看到生成的字符畫。下圖給出了原始圖和字符畫的對比效果。06實驗2:計算機視覺庫OpenCV的使用方法Partsix5.6實驗2:計算機視覺庫OpenCV的使用方法圖像處理特征提取目標檢測5.6實驗2:計算機視覺庫OpenCV的使用方法OpenCV是一個開源的計算機視覺庫,提供了豐富的圖像處理和計算機視覺功能,如圖像濾波、特征提取、目標檢測、圖像識別等。OpenCV支持多種編程語言(包括Python),是計算機視覺領(lǐng)域最常用的庫之一??梢允褂萌缦旅钤赑ython中安裝OpenCV庫:>pipinstallopencv-python-i/simple

為了節(jié)省篇幅,本部分內(nèi)容不再給出實驗過程中生成的圖片效果。5.6.1圖像處理圖像濾波圖像特效圖像增強圖像分割01020403圖像處理5.6.1圖像處理圖像濾波圖像濾波是圖像處理中的一個重要操作,用于去除圖像中的噪聲,平滑圖像,或突出圖像的某些特征。以下是一個使用OpenCV進行圖像濾波的示例:>>>importcv2>>>image=cv2.imread('xiamen-university.jpg')#讀取圖像>>>blurred_image=cv2.GaussianBlur(image,(5,5),0)#高斯濾波>>>cv2.imshow('OriginalImage',image)#顯示原始圖片>>>cv2.imshow('BlurredImage',blurred_image)#顯示高斯濾波后的圖片5.6.1圖像處理圖像增強圖像增強是通過各種方法改善圖像的質(zhì)量,使圖像更加清晰,或突出圖像的某些特征。以下是一個使用OpenCV進行圖像增強的示例:>>>importcv2>>>image=cv2.imread('xiamen-university.jpg')#讀取彩色圖片>>>gray_image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#轉(zhuǎn)換為灰度圖像>>>equalized_image=cv2.equalizeHist(gray_image)#對灰度圖像進行直方圖均衡化>>>cv2.imshow('Original',gray_image)#顯示圖片>>>cv2.imshow('Equalized',equalized_image)#顯示圖片5.6.1圖像處理圖像分割使用OpenCV的圖像分割算法,可以將圖像分割成多個區(qū)域,便于后續(xù)的處理和分析。以下是使用OpenCV的圖像分割算法的示例代碼:>>>importcv2>>>importnumpyasnp>>>#讀取圖像>>>img=cv2.imread('face.jpg',0)#灰度模式>>>#全局閾值分割>>>_,thresh_global=cv2.threshold(img,127,255,cv2.THRESH_BINARY)>>>#自適應(yīng)閾值分割>>>thresh_adaptive=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)>>>cv2.imshow('GlobalThreshold',thresh_global)>>>cv2.imshow('AdaptiveThreshold',thresh_adaptive)5.6.1圖像處理圖像特效使用OpenCV的圖像特效算法,可以對圖像進行特效處理,例如添加濾鏡、添加水印等。以下是使用OpenCV的圖像特效算法對圖像進行特效處理的案例代碼:>>>importcv2>>>#讀取圖像>>>img=cv2.imread('face.jpg')>>>#添加濾鏡>>>gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)>>>blurred=cv2.GaussianBlur(gray,(5,5),0)>>>#添加水印>>>cv2.putText(img,'Watermark',(50,50),cv2.FONT_HERSHEY_SIMPLEX,1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論