python+opencv入門-圖像的基本操作

內容借鑑平臺 https://www.educoder.net/

在簡介中,我們瞭解了人臉識別是什麼以及其重要性,現在我們開始學習並完成自己的人臉識別應用系統。
完整的人臉識別流程,一般有如下五個步驟:
在這裏插入圖片描述
圖像採集:使用攝像機或攝像頭採集含有人臉的圖像或視頻流;
人臉檢測:檢測圖片中是否包含人臉;
預處理:對人臉圖像進行灰度處理、噪聲過濾等預處理;
特徵點提取:提取人臉圖片中包含的特徵數據;
人臉識別:將新的人臉照片與人臉庫進行算法匹配,輸出識別結果;

在接下來的實訓中,會根據這個流程,一一講解,帶大家快速高效的入門人臉識別。
“工慾善其事必先利其器”,所以我們以如何對圖片進行一系列的基礎操作,來開始我們的學習。

任務描述

本關任務:瞭解 OpenCV計算機視覺庫,學習使用 OpenCV採集圖片、讀取圖片、展示圖片以及保存圖片。

相關知識

爲了完成本關任務,請認真閱讀以下相關知識。

OpenCV 簡介

OpenCV是一個開源的跨平臺計算機視覺庫。跨平臺是指,它可以運行在 Linux、 Windows、 Android和 Mac OS等操作系統上。它實現了圖像處理和計算機視覺方面的很多通用算法,具有輕量高效的特點。 OpenCV提供了多種語言的編程接口,例如 C、 C++、 Python。
所以,我們先學習使用 OpenCV做圖像基本操作。

1.採集圖片

原始的圖片多數採用各種攝像頭採集,再整理爲圖片數據集。
如果使用 OpenCV採集,可以通過 cv2.VideoCapture()獲取攝像頭並捕捉畫面中的圖片。函數聲明爲:

cv2.VideoCapture(攝像頭來源)

其中,傳入的參數,指定 0時爲默認計算機默認攝像頭,指定 1可以更換來源。
然後,獲取捕獲圖像,函數爲:

cap.read()

cap.read()返回一個布爾值( True/ False)和一幀圖像。
最後釋放捕獲對象,函數爲:

cap.release()

示例如下:

# 引入OpenCV庫
import cv2

# 調用攝像頭進行拍照
cap = cv2.VideoCapture(0)

# 獲取一幀圖片
# 如果捕獲成功,代碼中ret值爲真,img爲捕獲的圖像。
ret, img = cap.read()

# 釋放捕獲對象
cap.release()

2.讀取圖片

通常我們使用採集完成的圖片。在 OpenCV中,使用 cv2.imread()從文件中加載一張圖片。
函數聲明爲:

 cv2.imread(圖片路徑, 標記)

第一個參數爲圖片路徑,圖片應該在當前的工作路徑,或在指定的絕對路徑下。
第二個參數指定圖片被讀取的方式:
cv2.IMREAD_COLOR : 讀入彩色圖像,默認模式;
cv2.IMREAD_GRAYSCALE : 以灰度模式讀入圖像;
cv2.IMREAD_UNCHANGED : 加載圖像包含 alpha通道。
也可以,使用數字簡約表示以上三種標記,分別爲 1, 0或 -1。
示例如下:

import cv2
# 加載一張位於當前目錄下的`images/girl.jpg`的圖片
image_path = "images/girl.jpg"
# 以灰度模式讀取圖片
img = cv2.imread(image_path,0)

3.展示圖片

讀取圖片之後,可以將圖片展示到窗口。使用 cv2.imshow()在窗口展示圖片。
函數聲明爲:

imshow(窗口名稱, 圖片對象)

第一個參數傳入窗口的名字;
第二個參數傳入需要展示的圖片對象。
當窗口展示完之後,需要再調用 cv2.destroyAllWindows()銷燬所有的窗口。
示例如下:

import cv2

# 讀取圖片
image_path = "images/girl.jpg"
img = cv2.imread(image_path,1)

# 窗口展示圖片
cv2.imshow('cute girl',img)
# 等待用戶關閉圖片窗口
cv2.waitKey(0)
# 銷燬創建的所有窗口
cv2.destroyAllWindows()

在這裏插入圖片描述

4.保存圖片

在完成圖像的一系列操作之後,可以使用 cv2.imwrite()將圖片保存到本地。
函數聲明爲:

cv2.imwrite(圖片路徑, 圖片對象)

同樣的,
第一個參數爲圖片路徑,圖片應該在當前的工作路徑,或在指定的絕對路徑下;
第二個參數爲將要保存的圖片對象。
示例如下:

import cv2

# 讀取圖片
image_path = "images/girl.jpg"
img = cv2.imread(image_path,1)

# 保存圖片爲girl-copy.png
cv2.imwrite('images/girl-copy.png',img)

編程要求

導入 openCV 庫 (cv2);
讀取路徑 step1/image/girl.jpg下的圖片(圖片讀取模式三種任選一種都可以);
將讀取到的圖片保存到路徑 step1/out/girl-new.jpg下。

--------------answer----------
-在這裏插入圖片描述
下面展示一些 內聯代碼片

#********** Begin **********## 導入OpenCV庫import cv2
#********** End **********#
# 原始圖片路徑image_path = 'step1/image/girl.jpg'
# 保存圖片路徑save_image_path = 'step1/out/girl-new.jpg'
#********** Begin **********#
# 讀取圖片並保存圖片
img = cv2.imread(image_path,1)
cv2.imwrite(save_image_path,img)
#********** End **********#
# 窗口展示圖片'''
cv2.imshow('girl',img)
# 等待用戶關閉圖片窗口cv2.waitKey(0)
# 銷燬創建的所有窗口cv2.destroyAllWindows()'''

鏈接: link.

部分的圖片來自edu教學平臺,轉載註明出處,一起進步吧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章