Python OpenCV入門實踐:圖像處理基礎
學習目標
通過本課程,學員們將了解OpenCV的基本概念、安裝方法,掌握如何使用Python和OpenCV進行基本的圖像處理操作,包括圖像的讀取、顯示、保存以及簡單的圖像變換。
相關知識點
- Python OpenCV圖像處理基礎
學習內容
1 Python OpenCV圖像處理基礎
1.1 OpenCV簡介及其安裝
1.1.1 OpenCV簡介
OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫。OpenCV被廣泛應用于各種計算機視覺應用,如圖像和視頻分析、人臉識別、物體識別、醫學圖像分析、增強現實等。它支持多種編程語言,包括Python、C++和Java,以及多種操作系統,如Windows、Linux、MacOS、Android和iOS。
OpenCV的開發始于1999年,由Intel公司發起,旨在加速計算機視覺應用的開發。2000年,OpenCV 1.0版本發布。隨著時間的發展,OpenCV不斷吸收新的算法和技術,成為計算機視覺領域不可或缺的工具之一。OpenCV 2.0版本引入了更多的高級功能,如機器學習模塊。2012年,OpenCV 3.0版本發布,增加了更多的圖像處理和視頻分析功能。最新的OpenCV 4.0版本進一步優化了性能,增加了對深度學習的支持。
1.1.2 OpenCV的安裝
安裝OpenCV非常簡單,特別是使用Python時。可以通過Python的包管理工具pip來安裝OpenCV。打開命令行工具,輸入以下命令:
%pip install opencv-python
如果需要使用OpenCV的額外模塊,如SIFT、SURF等,可以安裝opencv-contrib-python
包:
%pip install opencv-contrib-python
安裝完成后,可以在Python腳本中通過import cv2
來導入OpenCV庫。
1.2 圖像的基本操作
1.2.1 讀取圖像
執行以下指令獲取測試圖片。
!wget https://model-community-picture.obs.cn-north-4.myhuaweicloud.com/ascend-zone/notebook_datasets/188467642fa811f0b2fdfa163edcddae/example.jpg
在OpenCV中,讀取圖像非常簡單。使用cv2.imread()
函數可以讀取圖像文件。該函數接受一個文件路徑作為參數,并返回一個NumPy數組,該數組表示圖像的像素值。
import cv2# 讀取圖像
image = cv2.imread('example.jpg')# 檢查圖像是否成功讀取
if image is None:print("Error: Could not read image.")
else:print("Image successfully read.")
1.2.2 顯示圖像
讀取圖像后,可以使用cv2.imshow()
函數來顯示圖像。該函數接受兩個參數:窗口名稱和圖像數組。
import cv2# 讀取圖像
image = cv2.imread('example.jpg')# 顯示圖像
cv2.imshow('Image', image)# 等待用戶按鍵
cv2.waitKey(0)# 關閉所有窗口
cv2.destroyAllWindows()
1.2.3 保存圖像
處理完圖像后,可以使用cv2.imwrite()
函數將圖像保存到文件。該函數接受兩個參數:文件路徑和圖像數組。
import cv2# 讀取圖像
image = cv2.imread('example.jpg')# 保存圖像
cv2.imwrite('save.jpg', image)
1.3 圖像變換
1.3.1 圖像灰度化
圖像灰度化是將彩色圖像轉換為灰度圖像的過程。在OpenCV中,可以使用cv2.cvtColor()
函數來實現圖像的灰度化。該函數接受兩個參數:輸入圖像和顏色轉換代碼。
import cv2
import matplotlib.pyplot as plt# 讀取圖像
image = cv2.imread('example.jpg')# 轉換為灰度圖像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 將 BGR 格式轉換為 RGB 格式,以適配 matplotlib 的顯示
gray_image = cv2.cvtColor(gray_image, cv2.COLOR_BGR2RGB)
# 顯示灰度圖像
plt.imshow(gray_image)
plt.axis('off')
plt.show()
1.3.2 圖像縮放
圖像縮放是改變圖像大小的過程。在OpenCV中,可以使用cv2.resize()
函數來實現圖像的縮放。該函數接受多個參數,包括輸入圖像、輸出圖像的大小、插值方法等。
import cv2# 讀取圖像
image = cv2.imread('example.jpg')# 縮放圖像
resized_image = cv2.resize(image, (800, 600))
# 將 BGR 格式轉換為 RGB 格式,以適配 matplotlib 的顯示
resized_image = cv2.cvtColor(resized_image, cv2.COLOR_BGR2RGB)
# 顯示縮放后的圖像
plt.imshow(resized_image)
plt.show()
1.3.3 圖像旋轉
圖像旋轉是將圖像繞某個點旋轉一定角度的過程。在OpenCV中,可以使用cv2.getRotationMatrix2D()
和cv2.warpAffine()
函數來實現圖像的旋轉。
import cv2
import numpy as np# 讀取圖像
image = cv2.imread('example.jpg')# 獲取圖像的中心點
height, width = image.shape[:2]
center = (width // 2, height // 2)# 定義旋轉角度和縮放比例
angle = 45
scale = 1.0# 獲取旋轉矩陣
rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale)# 應用旋轉
rotated_image = cv2.warpAffine(image, rotation_matrix, (width, height))
# 將 BGR 格式轉換為 RGB 格式,以適配 matplotlib 的顯示
rotated_image = cv2.cvtColor(rotated_image, cv2.COLOR_BGR2RGB)
# 顯示旋轉后的圖像
plt.imshow(rotated_image)
plt.axis('off')
plt.show()
通過本課程的學習,學員們將掌握OpenCV的基本使用方法,能夠進行圖像的讀取、顯示、保存以及簡單的圖像變換。這些基礎知識將為后續更復雜的圖像處理和計算機視覺任務打下堅實的基礎。