




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
OpenCV計算機視覺處理Computervisionprocessing模塊二
OpenCV基本操作模塊概述在二十大精神的指引下,我們深刻認識到科技創(chuàng)新在推動國家發(fā)展、提升社會信息化水平及滿足人民日益增長的美好生活需要中的重要作用。圖像處理和計算機視覺作為科技領(lǐng)域的重要分支,對于推動數(shù)字化轉(zhuǎn)型、提升智能化水平具有舉足輕重的地位。圖像讀取、顯示和寫入作為圖像處理和計算機視覺的基礎(chǔ),是每一個開發(fā)者必須掌握的技能。在剪切、調(diào)整大小、旋轉(zhuǎn)或應用不同過濾器來處理圖像時,首先需要通過OpenCV等計算機視覺庫的內(nèi)置函數(shù)來讀取圖像。這些功能不僅簡化了圖像處理流程,也提高了圖像處理的效率和精度。本模塊將介紹關(guān)于圖像的基本概念、圖像的讀取及顯示、用攝像頭拍攝圖像及視頻的方法和本地視頻的讀取與播方法。學習導航學習目標1.知識目標(1)熟悉圖像的分類;(2)掌握圖像的坐標系表示方法;(3)掌握讀取圖像的方法;(4)掌握創(chuàng)建窗口及顯示圖像的方法;(5)掌握攝像頭的實例化方法;(6)掌握從攝像頭讀取一幀數(shù)據(jù)的方法;(7)掌握保存圖像的方法;(8)掌握保存視頻的方法;(9)掌握讀取本地視頻的方法;(10)掌握播放本地視頻的方法。學習目標2.能力目標(1)通過使用OpenCV庫進行基本的圖像處理操作,培育學生根據(jù)需求選擇合適的圖像處理算法和技術(shù)的能力;(2)通過將理論知識轉(zhuǎn)化為實際代碼,實現(xiàn)圖像處理算法,培育學生優(yōu)化和改進算法的能力;(3)通過將OpenCV應用于實際項目中解決圖像處理相關(guān)的問題,培養(yǎng)學生在項目中獨立承擔圖像處理模塊的開發(fā)和測試工作的能力;(4)鼓勵學生持續(xù)跟蹤OpenCV及相關(guān)技術(shù)的最新發(fā)展,培養(yǎng)學生自主學習和更新知識的能力,以適應不斷變化的圖像處理需求。學習目標3.素質(zhì)目標(1)通過對OpenCV基本操作的學習,激發(fā)學生對計算機視覺領(lǐng)域的興趣,培育學生將所學知識應用于解決實際問題的能力;(2)通過使用OpenCV處理圖像問題,培養(yǎng)學生能夠獨立思考、分析問題并提出解決方案的能力,提升學生解決復雜圖像問題的能力和經(jīng)驗;(3)培育學生代碼注釋、函數(shù)封裝等良好的編程習慣,提升學生的代碼規(guī)范能力。任務一圖像的讀取及顯示
任務導入在對圖像進行操作的過程中,首先就需要將圖像數(shù)據(jù)讀取并顯示出來,從而進行進一步的操作。使用OpenCV提供的cv2.imread()函數(shù)、dWindow()函數(shù)、cv2.imshow()函數(shù)實現(xiàn)圖像的讀取與顯示。案例代碼1.#任務一
案例導入實現(xiàn)代碼
2.#第一步:導入cv2
包3.import
cv2
4.#第二步:使用imread函數(shù)讀入圖像5.img
=
cv2.imread("dog.png")
6.#第三步:創(chuàng)建顯示窗口7.dWindow("show")
8.#第四步:顯示圖像9.cv2.imshow("show",
img)
10.c=cv2.waitKey()
案例結(jié)果圖像的讀取與顯示實驗結(jié)果知識拆解1.圖像的類型(1)二值圖像(BinaryImage)每個像素只有兩個可能的值,通常是0(黑色)和255(白色),用于表示黑白圖像或經(jīng)過閾值處理后的圖像,通常用于形態(tài)學操作、邊緣檢測等。(2)灰度圖像(GrayscaleImage)每個像素有一個值,通常在0(黑色)到255(白色)之間,這個值表示像素的亮度,不包含顏色信息,灰度圖像在需要顏色信息但計算資源有限時很有用。最小值為0:純黑;最大值為255:純白;中間值為灰色。(3)彩色圖像(RGB圖像)RGB圖像有三個值R,G,B,每一份值都在0-255之間,在OpenCV里通道順序為:BGR(4,252,234))。RGB圖像提供了豐富的視覺信息,適用于各種計算機視覺任務。知識拆解2.圖像的坐標系表示方法(1)坐標系OpenCV的坐標系原點(0,0)是圖片的左上角點,坐標系的X軸為圖像矩形的上水平線,從左往右;Y軸為圖像矩形的左垂直線,從上到下。Point(x,y)第一個參數(shù)x代表的是元素所在圖像的列數(shù)cols;第二個參數(shù)y代表的是元素所在圖像的行數(shù)rows。(2)坐標表示原點(0,0),(x,y)坐標點,x表示水平方向上的位置,y表示垂直方向上的位置。坐標表示知識拆解3.讀取圖像函數(shù):cv2.imread()作用:實現(xiàn)圖像的讀取。語法格式:cv2.imread(filename,flag)filename:要讀取的圖像目錄和名稱;flags:指定以何種方式加載圖片,有三個取值:cv2.IMREAD_COLOR:讀取一副彩色圖片,圖片的透明度會被忽略,默認為該值,實際取值為1;cv2.IMREAD_GRAYSCALE:以灰度模式讀取一張圖片,實際取值為0;cv2.IMREAD_UNCHANGED:加載一副彩色圖像,透明度不會被忽略。代碼示例:img=cv2.imread("D:\car.jpg",cv2.IMREAD_UNCHANGED),加載保存在D盤下的圖片car.jpg,加載方式為彩色圖像,透明度不會被忽略。知識拆解4.創(chuàng)建窗口函數(shù):dWindow()作用:創(chuàng)建顯示計算機視覺對象的窗口。語法格式:dWindow(window_name)window_name為新建窗口的名稱。代碼示例:dWindow("show")創(chuàng)建名稱為show的窗口。5.顯示圖片函數(shù):cv2.imshow()作用:實現(xiàn)窗口的顯示;語法格式:cv2.imshow(window_name,mat)window_name:新建窗口的名稱;mat:一個圖片矩陣,numpy.ndarray類型。cv2.imshow("show",img)在名稱為show的窗口顯示img對象。知識拆解6.設置顯示時長函數(shù):cv2.waitKey()作用:實現(xiàn)設置顯示時長,不斷刷新圖像,頻率時間為delay,單位為ms,返回值為當前鍵盤按鍵值;語法格式:cv2.waitKey([time])time:可選參數(shù),窗口顯示的時間。代碼示例:c=cv2.waitKey(1000),使程序暫停1秒鐘。c=cv2.waitKey(0)等待無限時間,用戶按下任意鍵才會退出。知識運用讀取磁盤中存儲的圖片并顯示,顯示等待,如果用戶按下小寫字母a鍵則退出程序。1.#任務2
知識運用案例代碼
2.import
cv2
3.#第一步:讀入圖像4.img
=
cv2.imread("dog.png")
5.#第二步:顯示圖像6.dWindow("show")
7.cv2.imshow("show",
img)
8.#第三步:設置按下小寫字母a鍵則退出程序。9.c=cv2.waitKey(1000)
10.if
c==97:
11.
cv2.destroyAllWindows()
任務小結(jié)
圖像的坐標系表示方法圖像的類型圖像的讀取與顯示cv2.imread()函數(shù)語法格式和用法;dWindow()函數(shù)語法格式和用法;cv2.imshow()函數(shù)語法格式和用法;cv2.waitKey()函數(shù)語法格式和用法。二值圖像(BinaryImage);灰度圖像(GrayscaleImage);彩色圖像(RGB圖像)。任務一
圖像的讀取及顯示坐標系;坐標表示。任務二用攝像頭拍攝圖像及視頻
任務導入在對圖像進行操作的過程中,經(jīng)常需要使用攝像頭進行拍照和錄制視頻。使用OpenCV提供的VideoCapture()函數(shù)、read()函數(shù)、imwrite()函數(shù)、VideoWriter()函數(shù)實現(xiàn)拍照和錄制視頻功能。案例代碼案例一:照片可以記錄美好的生活瞬間,使用OpenCV相關(guān)函數(shù)編寫代碼,實現(xiàn)用攝像頭拍攝一張照片并保存。1.#任務二案例實現(xiàn)代碼12.import
cv2
3.#第一步:實例化攝像頭
4.cap
=
cv2.VideoCapture(0)
5.#第二步:判斷攝像頭是否打開6.if
cap.isOpened():
7.
while
True:
8.#第三步:讀取攝像頭的幀9.
ret,
frame
=
cap.read()
案例代碼10.#第四步:顯示讀取到的攝像頭的幀圖像11.
cv2.imshow("video_test",
frame)
12.
key
=
cv2.waitKey(10)
13.#第五步:按下ESC鍵退出程序14.
if
key==27:
15.
break
16.#第六步:按下s鍵保持當前幀圖像17.
if
key==ord("s"):
18.
cv2.imwrite("video_frame.jpg",frame)
19.cap.release()
20.cv2.destroyAllWindows()
案例結(jié)果用攝像頭拍攝一張照片并保存實驗結(jié)果案例代碼1.#任務二
案例實現(xiàn)代碼2
2.import
cv2
3.#第一步:實例化攝像頭
4.cap
=
cv2.VideoCapture(0)
5.if
cap.isOpened():
6.#第二步:設置視頻格式7.
fourcc
=
cv2.VideoWriter_fourcc('m',
'p',
'4',
'v')
8.
out
=
cv2.VideoWriter('d:/output.avi',
fourcc,
1,(640,
480))
視頻可以記錄美好的生活片段,使用OpenCV相關(guān)函數(shù)編寫代碼,實現(xiàn)用攝像頭錄制一段視頻并保存。案例代碼9.#第三步:保存視頻10.
while
True:
11.
ret,
frame
=
cap.read()
12.
out.write(frame)
13.
cv2.imshow("video",
frame)
14.
if
cv2.waitKey(10)
==
27:
15.
break
16.cap.release()
17.out.release()18.cv2.destroyAllWindows()
案例結(jié)果用攝像頭錄制一段視頻并保存實驗結(jié)果知識拆解1.VideoCapture類cv2.VideoCapture類可以簡單、快捷地處理視頻,它既能處理視頻文件又能處理攝像頭信息。cv2.VideoCapture類的常用函數(shù)包括初始化、打開、幀捕獲、釋放、屬性設置等。(1)構(gòu)造函數(shù):cv2.VideoCapture()作用:用于打開攝像頭并完成攝像頭的初始化工作。語法格式:捕獲對象=cv2.VideoCapture("攝像頭ID號")“攝像頭ID號”就是攝像頭的ID號碼,其默認值為-1,表示隨機選取一個攝像頭;如果有多個攝像頭,則用數(shù)字“0”表示第1個攝像頭,用數(shù)字“1”表示第2個攝像頭,以此類推。如果只有一個攝像頭,既可以使用“0”,也可以使用“-1”作為攝像頭ID號。代碼示例:cap=cv2.VideoCapture(0)。返回值為“捕獲對象”知識拆解(2)判斷當前的攝像頭是否初始化成功函數(shù):cv2.VideoCapture.isOpened()作用:判斷當前的攝像頭是否初始化成功。返回值:成功,返回值retval為True;不成功,返回值retval為False。(3)打開攝像頭函數(shù):cv2.VideoCapture.open()作用:如果攝像頭初始化失敗,可以使用函數(shù)cv2.VideoCapture.open()打開攝像頭。語法格式:retval=cv2.VideoCapture.open(index)Index:攝像頭ID號;Retval:返回值,當攝像頭(或者視頻文件)被成功打開時,返回值為True。知識拆解(4)捕獲幀函數(shù):cv2.VideoCapture.read()作用:從攝像頭中捕獲幀信息。語法格式:retval,image=cv2.VideoCapture.read()Image:返回的捕獲到的幀,如果沒有幀被捕獲,則該值為空;Retval:表示捕獲是否成功,如果成功則該值為True,不成功則為False。(5)釋放攝像頭函數(shù):cv2.VideoCapture.release()作用:關(guān)閉攝像頭。語法格式:None=cv2.VideoCapture.release()代碼示例:cap=cv2.VideoCapture(0)cap.release()知識拆解2.保存圖像函數(shù):cv2.imwrite()作用:將圖像以指定的格式圖像保存。語法格式:cv2.imwrite(filename,image)filename:代表文件名的字符串。文件名必須包含圖像格式,例如.jpg,.png等;image:就是要保存的圖像。代碼示例:img=cv2.imwrite("D:\car.jpg",img),將img圖像對象以car.jpg為文件名保存到D盤下。3.保存視頻函數(shù):cv2.VideoWriter()作用:將圖片序列保存成視頻文件,也可以修改視頻的各種屬性,還可以對視頻類型進行轉(zhuǎn)換;語法格式:<VideoWriterobject>=cv2.VideoWriter(filename,fourcc,fps,frameSize[,isColor])知識拆解filename:指定輸出目標視頻的存放路徑和文件名。如果指定的文件名已經(jīng)存在,則會覆蓋這個文件。fourcc:視頻編/解碼類型(格式)。用cv2.VideoWriter_fourcc()來指定視頻編解碼格式。fourcc意為四字符代碼(Four-CharacterCodes),該編碼由四個字符組成,下面是VideoWriter_fourcc對象一些常用的參數(shù),注意:字符順序不能弄混。cv2.VideoWriter_fourcc('M','P','4','V'),MPEG-4編碼,文件名后綴為.mp4;cv2.VideoWriter_fourcc('X','2','6','4'),MPEG-4編碼,文件名后綴為.mp4;cv2.VideoWriter_fourcc('I','4','2','0'),YUV編碼類型,文件名后綴為.avi;cv2.VideoWriter_fourcc('P','I','M','I'),MPEG-1編碼類型,文件名后綴為.avi;cv2.VideoWriter_fourcc('X','V','I','D'),MPEG-4編碼類型,文件名后綴為.avi;cv2.VideoWriter_fourcc('T','H','E','O'),OggVorbis,文件名后綴為.ogv;cv2.VideoWriter_fourcc('F','L','V','1'),Flash視頻,文件名后綴為.flv;知識拆解代碼示例:fourcc=cv2.VideoWriter_fourcc('m','p','4','v')fourcc=cv2.VideoWriter_fourcc('M','P','4','V')fourcc=cv2.VideoWriter_fourcc(*'MP4V')fourcc=cv2.VideoWriter_fourcc(*'mp4v')指定視頻編解碼格式為mp4格式,以上四行代碼功能相同。fps:要保存的視頻的幀率。frameSize:要保存的文件的畫面尺寸。isColor:指示是黑白畫面還是彩色的畫面。知識運用知識運用:用攝像頭錄制一段視頻,以mp4格式進行保存1.#任務二
知識運用案例實現(xiàn)代碼
2.import
cv2
3.#第一步:實例化攝像頭4.cap
=
cv2.VideoCapture(0)
5.
#第二步:設置視頻窗口大小6.width
=
int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
7.height
=
int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
8.
#第三步:設置視頻類型9.fourcc
=
cv2.VideoWriter_fourcc(*"mp4v")
10.out
=
cv2.VideoWriter('test.mp4',
fourcc,
20,
(width,height))
知識運用11.
#第四步:保存視頻
12.while
True:
13.
ret,
frame
=
cap.read()
14.
if
ret:
15.
out.write(frame)
16.
cv2.imshow('capture',
frame)
17.
if
cv2.waitKey(25)
&
0xFF
==
ord('q'):
#按鍵盤q鍵退出
18.
break
19.
else:
20.
continue
21.cap.release()
22.out.release()
23.cv2.destroyAllWindows()
任務小結(jié)
圖像和視頻保存函數(shù)VideoCapture類構(gòu)造函數(shù)cv2.VideoCapture()的用法;初始化函數(shù)cv2.VideoCapture.isOpened()的用法;打開攝像頭函數(shù)cv2.VideoCapture.open()的用法;捕獲幀函數(shù)cv2.VideoCapture.read()的用法;釋放攝像頭函數(shù)cv2.VideoCapture.release()的用法。保存圖像函數(shù):cv2.imwrite();保存視頻函數(shù):cv2.VideoWriter()。任務二
用攝像頭拍攝圖像及視頻
任務三本地視頻的讀取與播放
任務導入通過OpenCV提供的cv2.Vide
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海市校服采購合同示范文本5篇
- 電儀冬季四防知識培訓課件
- 2025婚紗店合伙經(jīng)營合同模板
- 基于創(chuàng)新與實踐融合的高校大學生創(chuàng)業(yè)實驗基地室內(nèi)空間設計研究
- 基于分散搜索法的容量受限P中位問題求解及其在設施選址中的創(chuàng)新應用
- 發(fā)明專利產(chǎn)品技術(shù)轉(zhuǎn)讓協(xié)議6篇
- 父親的謎語課件
- 2025美元資金借款合同范本
- 11月腫瘤專科題庫及參考答案
- 爆炸的玉米課件
- 心肺復蘇CPR知識考核試題及答案
- 新生兒患者安全知識培訓課件
- 2025至2030全球及中國便攜式風扇行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025年黃岡市數(shù)字發(fā)展研究中心公開招聘工作人員1人考試參考試題及答案解析
- 2025年中國聚丙烯硬質(zhì)塑料包裝行業(yè)市場分析及投資價值評估前景預測報告
- 2025年救護車司機駕駛員資格考試考前真題訓練題庫及答案
- 軟件系統(tǒng)交付流程規(guī)范與管理辦法
- 2025貴州畢節(jié)市七星關(guān)區(qū)招聘城市社區(qū)工作者186人模擬試卷及答案詳解(奪冠)
- 《市場監(jiān)管部門標識規(guī)范》編制說明
- 中國沈陽鐵路局勞動合同8篇
- 臨床基因擴增檢驗實驗室核酸擴增及產(chǎn)物分析標準操作程序
評論
0/150
提交評論